[HISTORIO NOISE] Ĉu ĝi funkcias? PATRICK REBESCHINI: Ni povas komenci. BONE. Grandaj. Ni komencu. Tial estas mia plej granda plezuro bonvenigi vin ĉiujn ĉi tie hodiaŭ por la unua prelego de, nu, Enkonduko al Computing kaj Programado. Ankaŭ konata kiel CS50 aŭ bone, CPSC 100, oficiale tie ĉe Yale. Do ni ne povis esti pli ekscititaj bonvenigi vin ĉiujn ĉi tie. Mia nomo estas Patrick Rebeschini. Mi estas la cxefo instrukciisto por la klaso. Mi tie reprezentante grupo de proksimume 60 laborantaranoj kiu laboros kun vi tra la semestro. Tiu nombro estas preskaŭ 60 el ni. Tamen laŭ la eksterordinara nivelo de devontigoj ke ni metas en tiun klaso, faras CS50 la klaso ĉe Yale kiu proponas la plej granda nivelo de apogo al vi ĉiuj. Kaj ni ne povis esti pli fiera de proponante ĉi klaso tie denove. Fakte, kiel vi baldaŭ spertos, CS50 estas multe pli ol klaso. Estas komunumo. Kaj vi estos parto frue de ĉi tiu komunumo. Tio estas la dua jaro Yale estas proponanta ĉi klaso. Ni konstruas sur la ekstrema sukceso de lasta jaro, kie unuafoje, tie ĉe ĉi tiu universitato, bakalaŭra lernado asistanto estis adoptita en klasĉambroj. Ĉiu komencis kun tiu klaso pasintjare. Do kiel vi scias, la klaso estas instruata kune kun Harvard University. Instrui tiun kurson ni relying-- eblan havi la grandan sperton de David Malan kaj la Harvard-teamo. Kaj David estis instruado CS50 ĉar nu, 10 jaroj nun. Kaj ĉiun jaron li estis puŝante la limojn kaj plibonigante la klasĉambro sperto. Denove, ni ne povis esti pli feliĉa daŭrigi tiun kunlaboradon kun ili. Fakte, unu el la plej interesaj partoj, Mi diras kurante ĉi klaso nun ambaŭ ĉe Harvard kaj tie ĉe Yale, estas la vere nekredebla transversa fekundigo de ideoj, celanta plibonigi la lernanta sperton por vi ĉiuj. Tiel kiel rezulto de tiu vasta kunlaborado inter la du universitato, CS50 fieras anonci la nova versio ĉi tiu jaro kun videbla ŝanĝoj. David ĉiuj diras al ni pri ili nun. Tiel please-- tiu estaĵo diris, bonvolu akompani min kaj bonvenon al doni grandan ĉirkaŭvojon de aplaŭdoj bonvenigi David Harvard teamo tie ĉe Yale. [Aplaŭdo] DAVID Malan: Dankon. Danke. Jen CS50, Harvard Universitato kaj Universitato Yale enkonduko al la intelekta entreprenoj de komputiko kaj la arto de programado. Kaj kion tio signifas estas ke ĉi tiu kurso finfine, estas ĉirkaŭ solvi problemojn. Efektive multaj el vi povus venis el mezlernejo aŭ pasigis la pasintaj kelkaj jaroj demandante kion kelkaj de viaj amikoj pasintajare aŭ en aliaj klasoj. Kaj tamen, la realo estas, ne grave kion ni fari ĉe la fino de la tago en ĉi tiu klaso, ĝi tuj estos pri solvi problemojn. Kaj kiel tia, eble preni iu certigo en la fakto ke 73% de la studentoj kiuj preni ĉi klaso, ambaŭ ĉi tie ĉe Yale kaj ankaŭ en Harvard, neniam prenis CS klaso antaŭe. Do se vi sidas ĉi tie en la publikon hodiaŭ scivolante kial vi sidas ĉi tie auxdeble hodiaŭ, aŭ eble vi simple sekvis kune kun iuj amikoj, aŭ eble vi estis iom interesas, kio komputiko kaj programado, realigi ke plimultaj viaj samklasanoj por maldekstre kaj dekstre de vi estas tre multe en tiu sama demografia. Kaj efektive, se ni rigardas finfine jaro statistikoj ene de la studentaro de CS50, ambaŭ tie kaj ĉe Harvard, 58% de studentoj priskribi sin kiel malpli komfortaj. 9% estas pli komforta. Kaj tiam 33% estas ie intere. Kaj ekzistas neniu formala difino de kio tiuj siteloj signifas. Vi ia scias ke vi malpli komfortaj se vi estas. Vi sentas iom maltrankvila kun eble esti en la klaso. Vi ne tute certas ĉu komputilo scienco klaso estas finfine pro vi, kaj rimarkas, ke vi estas en tre bona kompanio. Kaj ja la gradiganta, kaj la taksadon, kaj la sugestoj, kaj ĉiuj de tiu apogo strukturo en la klaso estas finfine tre individualizado. Pli ol plej ajna alia klaso de dezajno. Kaj efektive, kion finfine aferoj en tiu klaso estas ne tiel kie vi finos supren relative al aliaj, sed kie vi, en semajno 11 aŭ lasta, kaj relativa al vi mem en semajno 0 tie niaj unuaj. Do kion tio signifas? Nu, tio signifas de tiuj 73% de studentoj pasintjare ke neniam prenita CS klaso antaŭe, per la komenci de la semestro oni estis plaŭdado en lingvo nomita Scratch, kion ni mem vidos tie hodiaŭ. Kaj antaŭ la fino de la semestro estis ili iris tra ĉi tiu tuta listo de defioj. Komencante lingvo nomata c. Implementando, kio estas unuavide, irante esti iom de defio por iuj, sed sufiĉe kontentiganta unufoje vi akiri Super Mario resaltiganta supren kaj malsupren piramido implementado, kvankam, kun nur iu nomita ASCII arto. Efektivigado lasta year-- kio la studentoj pasintjare tiam ĉu post kiu apliki ilian propra Cezaro kodita kaj Vigenère. Tiel ĉifrado algoritmoj kun kiu vi povus scramble informon kaj tiam unscramble informo sendi sekretajn mesaĝojn. La ludo de 15. Se vi memoras de infanaĝo aŭ iu partio favoro, ke eta plasta ludo kie vi movas la nombroj supren, malsupren, maldekstra kaj dekstra provi akiri ilin en ordo, fakte efektiviganta ke ludo kaj solvanta la logiko postulataj tie. Kaj tiam ni dabbled en forensics pasintjare. Tiel per mez-semestro, studentoj kiuj neniam uzis siajn klavaroj tiucele antaŭ, estis skribanta softvaron por rekuperi, por tiel diri, JPEG-oj aŭ fotoj ke ni hazarde forigita de cifereca memoro karto de ĉambro. Reakirante sekretajn mesaĝojn el interne de bitmap bildo, kaj aliaj tiaj specoj de grafikaĵoj ankaŭ. Ni tiam transitioneis al donanta la tuta klaso vortaron. Nur vere granda tekstdosiero kun 150.000 anglaj vortoj. Kaj ĉiuj estis defiita iel legas, por tiel diri, tiujn vortojn en memoro. En la komputilo la memoro. Kaj tiam respondi demandojn de la formo, estas tiu vorto? Estas ĉi vorto? Estas ĉi vorto? Vere nur efektiviganta sorĉas Kontrolilo. Kaj tiam defii ĉiun aliaj kun granda board-- ĉefo tabulo por vidi kiu povis uzi la malplej kvanto de memoro, en la malpli kvanto de tempo fakte literumas kontrolu grandajn dokumentojn. Ni pasis de tiam al efektivigado tiuj propra retservilo. Do ne farante retpaĝoj en lingvoj kiel HTML kaj CSS, se vi konas. Sed reale efektivigo la servilon ke aŭskultas en la interreto por petoj de retumiloj kaj tiam respondanta al tiuj petoj. Tiam efektiviganta nia propra elektronika komerco kiel retejo, kie studentoj povis aĉeti kaj vendi akcioj. Desegno en preskaŭ reala tempo provizo citaĵoj de Yahoo Financoj. Kaj permesante studentojn vidi kiom iliaj biletujo disvolvas. Kaj tiam fine pure supren Google Novaĵoj kaj Google Mapoj per studentoj per termino por terminoj fino havis la kapablon klaku kaj ronda, kaj serĉo en Google mapo. Kaj tiam vidi ĉiujn la raportaĵoj kiuj estas proksimaj al tiuj apartaj areoj. Tiel vere iranta de nulo al 60. Kaj survoje havantaj kion ni havis pasintjare nomita, hacker aldonoj. Kiu levas la trinkejo plue por tiuj de vi kiuj povus tre bone havi bonan kvanto de sperto esti en tiu 9% de pli komforta. Do rimarkas ke ekzistas tre alta plafono eĉ ene de tiuj defioj por studentoj venas de malsama fono. Ĉar fine de la tago, ni finfine centris tute simple sur tio. Sed kion faras ĉi signifas, solvi problemojn? Do ni proponas ke ni distili ŝin tiel. Tiel solvi problemojn estas vere nur tian foton. Do vi havas enigoj al iu problemo, io vi vere volas solvi. La celo estas akiri eliroj, solvon al tiu problemo. Kaj tiam en la mezo estas kion ni nomas nigra skatolo. Vi ne nepre scias aŭ eĉ gravas kio estas en tiu nigra skatolo. Vi scias estas ke kiam vi manĝas enigo en ĝin, vi espereble ricevos eligo aŭ solvon de ĝi. Kaj dum hodiaŭ ni esploros ambaŭ ĉe eniroj kaj eliroj, Ni longtempe, kaj super la kurson de la tuta semestro, enfokusigi kio estas en tiu skatolo. Kaj gxi kusxu iu nomita algoritmoj. Paŝo post paŝo instrukciojn por reale solvi iuj problemoj. Sed kio estas ekzemplo de iuj enigoj? Do eble simpla afero ĉe la komenci de ĉiu lerneja jaro, iu eble volas preni asistencia. Do ni povus fari unu, du, tri, kvar, kvin, ses, kaj kiel mi tenas spuro de tiu informo. Mi nur povus iri unu, du, tri, kvar, kvin, ses. Kaj nur uzi ia ununura ciferoj. Aŭ mi povus efektive registri ĉi iom pli longa termino. Kaj kiel mi reprezentas ĉiujn la homoj en tiu ĉambro? Nu, mi povus fari ion kiel, OK. Mi vidas unu persono. Bone. Mi vidas alian personon, oni tria persono, kaj tiel plu. Sed neniu rakontas homoj ŝatas ĉi. Tiel laŭvorte, plejparto el ni, se ni eĉ tuj desegni ion, estas probable tuj iros unu, du, tri, kvar, eble akiri iom imago, kvin, ses, sep, ok, naŭ, dek kaj tiel plu. Kaj tio estas fakte sistemo nomita unuloka. Uno, kiel uno implico, kie vi nur havas unu litero de la alfabeto. Vi ĵus ricevis ĉi hash markon. Kaj mi, por efikeco, ĵus tiris tiuj hash markoj, finfine kiel rektoj. Sed mi povis ellogos ilin kiel malgranda bastono figuroj. Kie reprezenti unu persono, unu enigo, Mi nur tiri bastono figuron aŭ hash markon. Sed ĉi tio ne estas ĉio, kion esprima. Se cxio mia estas tiuj hash markoj, des malpli bastono figuroj, kiel povus mi reprezentas io kiel la numero 15? Aŭ 15 personoj en la ĉambro? Mi eblas devi fari ion kiel 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. Ĝi simple ne grimpi tre bone. Kiel la enigoj akiri grandan, ni bezonas bona sistemo ol tiu. Kaj ĝi rezultas ke la sistemo kiu komputiloj uzas ne tiom malsimila laŭ via kaj mi scias. Fakte, la plimulto de homoj en ĉi tiu ĉambro, eĉ se vi estas inter tiuj malpli komfortaj, ne nepre konas kiel via Mac aŭ PC vere funkcias, vi probable almenaŭ aŭdis, ke sub la kapuĉo estas 0-aj kaj 1-oj. La tn binara sistemo. Do ja, komputiloj havas pli ol nur hash markoj en sia vortprovizo, sed ne tiel de vortotrezoro kiel ni homoj. Ja, ni homoj ne uzas binaran. Bi signifas 2, 0 kaj 1. Sed dekuma, deca Signifanta 10, 0 tra 9. Do ni havas multe pli esprima kapablojn en nia normala homa mondo. Sed mi volas argumenti ke ĉi tiuj sistemoj, binaran, kaj dekumajn kaj ĉiu intere kaj pretere, estas fakte ĉiuj sufiĉe familiara. Ekzemple, konsideru tiu ekzemplo tie, 123. Tiel ĉi vere estas, kompreneble, kelkaj ni konas 123. Sed kion mi ĵus tiris estis ĝuste tiu mastro de simboloj, hieroglifoj tiel diri. Ia formoj sur la tabulo en kreto. Sed kial ni tuj kaj intuicie kompreni tion kiel 123? Nu, se vi ŝatas mi en grado lernejo, Vi verŝajne lernis ke tiu estas la 1s kolumno, ĉi tiu estas la 10s kolumno, tio estas la 100s kolumno. Kaj kial tiu utila? Nu, ĝi estas simpla aritmetiko vi nun faru, por ricevi de mastro de simboloj al nombro ni komprenas intuicie. Estas kio, 100 fojojn 1, kaj tiam 10 fojojn 2, kaj 1 fojojn 3 kiu kompreneble estas nur 100, kaj tio estas 20, kaj tiu estas tri. Kaj do se ni aldonu tiujn together-- ah. Do tie radikas la speco de rezonado malantaŭ kial tiu aro de simboloj signifas ion realan kaj nombraj. Nu, komputiloj fari la ĝustan saman aferon, sed ili nur povas kalkuli tiel alta kiel tiu. Dum mi povis kalkuli tiel alta kiel tri. Kaj fakte, se mi konstante mi povus iri kiel altan kiel naŭ en tiu sistemo. Komputiloj havas nur nuloj kaj en sia alfabeto. Do kion tio signifas? Nu, tio nur signifas ke se komputilo volas reprezenti, diru la numeron 0, eble uzante tri characters-- tri literojn de la alfabeto tiel diri, tiel estas kiel komputilo reprezentas 0. Do ne cxio, kio timiga ĝis nun. Estas ĝuste kion ni homoj farus. Kaj fakte, la plimulto de ni estus nur ignori la kondukante nuloj ĉiuokaze. Komputila, se ĝi volas stoki la numero 1, rezultas tuj faros tion. Kaj komputilo por stoki la nombro 2 estas ne faros la unuloka sistemo: kiun mi aludis al pli frua. Ĝi estas vere tuj faros tion. Kaj tio estas verŝajne kie la padrono komenciĝas fariĝi malpli evidentan por plej ulojn. Jen 2, tio estas 3. Kurioze, ĉi tiu estas nun 4. Kaj nun ĝi vere faras ŝajnas esti eble kamufla, sed ne se ni konsideras kion duuma vere signifas. Ĝi signifas ke vi havas du literoj de via alfabeto. Tial du eblaj karakteroj por ĉiu lokokupilo. Tiel ke vere signifas ke ni tuj bezonos 1s loko, aŭ 2s loko, oni 4s loko kaj tiam 8 kaj 16, 32 kaj 64. Kaj kio estas la diferenco? Kiel tiuj estas 1, 2, 4, 8, 16, 32, 64. Kaj antaŭ ol ni havis 110, 100,000, 10,000. Kio estas la simileco tie? Kaj kio estas la mastro? Yeah. Lernanto: Potencoj de 2 anstataŭ potencoj de 10. DAVID Malan: Jes. Potencoj de 2 anstataŭ potencoj de 10. Kaj do se mi volas teni irante, 8, 16s kaj tiel forth-- sed nun se vi havas tiun specon de indico, nun la duuma sistemo Estas vere bela simpla. Kial tiu padrono de 0 estas en la mondo de komputiloj 0? Bone ĉar ĝi estas 4 fojojn 0, 2 tempoj 0, 1 fojojn 0 kaj vi ricevas 0. Kial ĉi la numero 1? Sama rezonado, sed nun ni havas 1 en 1 kolumno. Kial ĉi 2? Ni havos 1 en la 2s kolumno. Kaj kiel do mi reprezentos diru, la numero 7 en duuma? Diru laŭte. Lernanto: Tri 1s. DAVID Malan: Tri 1s. Do 1, 1, 1, ĉar ni nur bezonas 4 plus 2 plus 1 donas min 7. Bone. Tial de tie kiel ni reprezentas 8 kun 3 variabloj? Yeah. Lernanto: 1, 0, 0, 0. DAVID Malan: Jes 1, 0, 0, 0. Tamen eble, mi specon de teknike bezonas aldoni alian lokokupilo por la estraro. Se mi volas persvadi ke mi ja bezonas fari ion kiel tiu. Do mi efektive devas uzi nun la 8s kolumno, kaj tio estas bone. Sed la kuriozaĵo en komputado estas ke tio tuj kostos ion. Vi bezonas pli RAM en via komputilo nun. Vi bezonas pli memoro ĉar vi bezonas ion fizika stoki ke aldona iom, por tiel diri. Duumaj ciferoj. Kaj efektive ĉiuj kio okazis tie, kiel la dekuma sistemo, se ni daǔre aldonante nombroj supren kaj supren kaj supren, ni iru al 5 al 6 al 7 ĝis 8 ĝi estas kiel portanta la 1an laŭvorte. Kaj tiam ĉio alia superas al nulo. Sed kiel ni reale reprezentas tion fizike en komputilo? Nu, fine de la tago, la sola fizika enigo iranta en mia komputilo jen tiu povo ŝnuron, tiel elektro aŭ elektronojn de la muro. Kaj tiel kiel mi ricevas el io fizika kiel tio efektive reprezentanta ideon tiel anstataŭe. Nu, kion ni povis fari? Ni povus konsideri ke, bone, eble se elektro fluas Mi povis stoki ĝin kaj teni ĝin. Kaj se Mi estas tenanta sur al iu elektro, ke simple tuj arbitre reprezentas ĉirkaŭ 1. Kaj se mi tiri la ŝtopilo kaj ekzistas nenio tie, vi scias, ke estas nur iranta arbitre reprezentas 0. Do se io estas tie, 1. Se nenio estas tie, 0. Aŭ vi povas fari ĉi iom pli vida. Tie estas 0. Nenio interesa daŭrantaj sur la dorso de mia telefono. Sed se mi permesus iom iom da elektro flui, kvankam ĝi estas iom brila en tie, mia poŝlampo daŭrigis. Do mi stokante ŝargon kaj ergo, ĉi telefonon nun reprezentas 1. Tiel 0 1. Do kun 1 iPhone kiom alta povas mi kalkuli uzante tian alproksimiĝo? Mi volas diri al 1. Ĝi ne estas ĉiu tiu konvinka. Do kio pli povus fari? Nu ni vidu, estas iu sur sia telefono nun ke mi povus prunti? Ĉiu kiu havas telefonon kun poŝlampo konstruita en? Eble mi petu? Mi ne bezonas ĝin malŝlosis. Bone. Dankon. Lasu min prunti ĉi. Bone. Do se mi nun rulumu supren kaj tie, kion mi reprezentas nun? Yeah. Do estas tri ĉar tio estas en la 1s kolumno, tio estas en la 2s kolumno. Do 1 plus 2 estas 3. Kaj tiam se ni provas akiri vere creative-- ho, dankon. Tre antaŭataka. Bone. Mi nun havas tri iPhones. Bone. Kaj nun this-- mi ne fari neniun plu ol tio. Kion mi reprezentas nun? Nur po sep paroj. Sed mi bezonas fizike pli memoro en tiu kazo. Sed jen ĉio estas. Vi povas pensi pri kio okazas on-- dankon you-- ene de via telefono kiel simple esti ŝaltilo tio esti ŝaltita kaj ekstere. Kaj se vi iam aŭdis la vorto transistoro. Aŭ se vi iam aŭdis la marketing paroli Intel ene, ke estas parolanta al la speco de aparataro kiu estas interne de via komputilo. Intel faras CPUs, centra prilaborado unuoj, kiu estas kiel la cerbo ene de via komputilo. Kaj tiuj CPUs kaj aferojn ili estas konektita havi partoj kaj multaj malgrandaj ŝaltiloj. Milionoj, miliardoj da ŝaltiloj kiu povas ĉu esti aŭ malŝalti. Tial komputiloj, dankeme, kiel niaj Macs kaj PC, povas kalkuli vojon pli altaj ol 7 aŭ 8 ĉar ili havas vojon pli ol tri aŭ kvar bitojn. Maniero pli ol la ekvivalento de la tri poŝlampoj kiuj ni ĵus havis. Sed nun tiu komencas akiri bela seninteresa rapide. Se mi nun volas vere esti kapabla fari ion pli interesa, Mi volas povi salti al io tiamaniere. Tiel ASCII, ne vere utila akronimo, sed Esperanto Kodo por Informo Interŝanĝo. Ĝi nur signifas, iuj jaroj antaŭ ni homoj decidis, vi scias kion, ni volas povi fari pli kun komputiloj ol nur nombrojn. Ni ne volas ke nur esti multekosta kalkuliloj, ni ŝatus povi fari aferojn kiel tekstoprilaborado, Albeit tre simple. Poste ni havis retpoŝton kaj aliaj tiaj komunikiloj. Kaj tiel la mondo decidis iuj jaroj antaŭ laŭ tiu sistemo ASCII, vi scias kion? En iuj tipoj de programoj ajn vi vidi la ekvivalenton de la nombro 65, kiel la mastro de bitoj. Kaj ni povus fari la math tie sur la tabulo. La mastro de bitoj kiuj reprezentas 65. Ne pensi pri tio kiel 65 en decimala. Pensu pri ĝi kiel arbitre, sed tutmonde, konsekvence kiel la ĉefurbo A. Kaj tiam la mondo decidis, vi scias kion? Ni prenu alian mastron de bitoj. Kaj se ni iam vidos la numero 66, ni simple supozas ke tio estas la ĉefurbo B. Rapida antaŭen al H kaj mi, se vi vidas 72 aŭ 73, ke devus esti H kaj mi, respektive. Kaj tiel dum la tuta mondo konvenas ĉi. Tiel ke kiam vi ricevas retpoŝton aŭ vi akirus dosiero sur USBa bastono, aŭ io kiel that-- kiam vi vidos ke ŝablono de bitoj, vi scias, ke plenumigxu tiu letero aŭ alian leteron. Sed estas kunteksto specifa, dekstre. Retmesaĝon programo povus interpreti tion kiel karakteroj, sed grafika kalkulilo aŭ kalkulilo povis reprezenti aŭ interpreti tion, kompreneble, kiel literoj. Do kun kiu diris, rapida malgranda revizio. Tio eble tri karaktero retpoŝto kiu estas sendita al mi. Sub la kapuĉo estas ĉiuj en _0s_ Kaj _1s_, sed ni ne zorgas. Ni tuj komencos abstrakta super la _0s_ kaj _1s_ por leteroj. Kaj se mi vidas bildon de _0s_ kaj _1s_ ke vere reprezentos 72, aludo, aludo, 73, kaj tiam 33, kio estas la mesaĝo? Lernanto: [inaudible] DAVID Malan: Do se vi opinias reen ĵus antaŭ momento, HI Estis la mesaĝo mi provis komuniki tie ĉar H estas 72, Mi estas 73, kaj nun 33-- vi ne volis nepre sciu anticipe, sed rezultas se vi reale vidi pli de la lerta kaj la sistemo ke homaro akordigita jaroj Antaŭ ĝi estas nur ekkrion punkto. Kaj ja estas mastro de simboloj kaj nombroj por ĉiu karaktero ke vi havu en via klavaro. Bone. Ni abstrakta plu. Se ni ne volas nur devi aĵoj kiel nombroj kaj literoj, ni fakte volas apliki grafikaĵoj. Nu, se vi iam aŭdis la akronimo RGB. Ĝi estas ia datita nun, sed ĝi estas ankoraŭ tia ekzistas. RGB estas ruĝa, verda, blua. Kaj ĝi estas nur sistemo diri, vi scias kion, ni uzu tri aroj de bitoj. Aro de 8 bitoj, alia aro de 8 bitoj, kaj alia aro de 8 bitoj. Kaj ni uzu tiujn bitoj stoki kiom ruĝa ni volas en nia ekrano, kiom verda ni volas en nia ekrano, kaj kiom bluaj ni volas en nia ekrano. Kaj tio nur signifas, ke se vi havas lot-- granda nombro por ruĝa, tio signifas al mi multe da ruĝa. Se vi havas grandan numeron por verda, donu al mi multajn verdajn. Kaj se vi havas nur iomete de blua aŭ malgranda nombro kiel 33, donu al mi iom da bluo. Kaj se vi hazarde kombini tiujn tri grandoj, por tiel diri, vi ricevas this-- vi apenaŭ povas vidi sur la proyector tie, sed ĉi malklaraj ombro de flava aŭ bruna. Sed tiu estas, uzante tiu desegnon de 8 Plus 8 plus plus 8-- ke padrono de 24 bitoj Tiel komputilo volus stoki ke ombro de flava en unu eta pentras rastrumero sur la ekrano. Do ni foriris de _0s_ kaj _1s_ por decimala nombroj al leteroj de la alfabeto. Aŭ pli interesaj, koloraj punktoj. Nu, kio kompreneble tiam venas poste? Nu, kio estas bildo kiu vin vidu en Facebook aŭ atingi en retpoŝto? Aŭ simile? Kio estas la difino teknike de bildo? Yeah. Kio estas bildo formita de se vi aspektas vere proksime ĉe via ekrano? Yeah. Estas nur tutan faskon da rastrumeroj. Fakte, se vi prenos vian tekkomputilo eble poste, kaj rigardi vere proksime ĉe it-- depende sur kiom altekosta la tekkomputilo estas kaj kiom alta kvalito de la ekrano estas, vi eble tre bone vidi ĉiujn la etajn punktojn sur la ekrano. Kaj tiuj punktoj aŭ rastrumeroj, kio signifas ke estas 24 bitoj reprezentas ĉiu pikselo en tiu foto kiun vi vidas en Facebook, aŭ ke vi nur prenis sur via iPhone ĵus. Kaj por ke estas kiel ni preni al aĵoj kiel grafikaĵoj. Nu, kio estas la video? Video estas nur aro de grafikaĵoj flugante por la ekrano denove kaj denove kaj denove. Kaj tiel filmetoj vere, estas nur ŝablonoj de bitoj reprezentas kradoj, vicoj kaj kolumnoj de punktoj, flugante por la ekrano bildo, post bildo, post bildo, a.k.a. Filmoj. Do jen ĝi por enigoj kaj eligoj. Ĉiuj ni havas nun estas supozo ke, vi scias kio, se ni volas komputilo reprezenti informojn, ni havas sistemon por fari ĝin. Ni povas fari ĝin kun _0s_ kaj 1s fine de la tago. Sed ni povas abstrakta, tial paroli, aldone ke tiel kiel reprezenti pli interesajn aferojn. Kaj ĉi tie sur ekstere en CS50, kaj en komputiko pli ĝenerale, ni nun staras sur la ŝultroj de ĉiuj homoj kiuj venis antaŭ ni, kiuj kalkulis ke ekstere. Kaj nun nur supozi ke komputiloj povas reprezenti enigoj kaj eligoj. Sed nun ni vere fari iun kun ili. Tiel algoritmo estas nur aro de instrukcioj, paŝon post paŝo, por solvi iun problemon. Kaj kio povus unu tia problemo estu. Do tiu estas malnova lernejo teknologio, telefono libro. Kaj ene de telefona libro estas tuta aro da nomoj kaj nombroj. Kaj tiuj nomoj estas ĝenerale ordigitaj alfabete. Do se mi volas trovi iun en tiu telefono libro kiel Mike Smith, kio estas tipa homa faros? Nu, vi povus simple malfermu ĝin, rigardu la unuan paĝon. Mi ne vidas Mike Smith. Turni al la dua paĝo, Mi ne vidas Mike Smith. Kaj simple observu tuj kaj iras. Estas tiu paŝo post paŝo alproksimiĝo korekta? Yeah. Ĝi estas speco de stulta, dekstre. Ĝi estas senutila, dekstre. Ĉar ĝi estas tuj prenos ĉiam akiri al Mike, sed estas korekta. Ĉar se Mike estas ĉi tie Mi ja trovos lin. Do kio estas iomete pli racia persono faros? Ili povus ankoraŭ malfermi al la fronto, kaj eble flugas tra la telefono libro du paĝojn samtempe. Du, kvar, ses, ok. Mi ne povas reale fizike fari ĝin tre bone. Sed en teorio, devus esti duoble rapida, du paĝojn samtempe. Estas ĉi tiu algoritmo korekta? Lernanto: [inaudible] DAVID Malan: Ne nepre. Bonaj. Kial tiu averto? Lernanto: Ĉar ĝi povus esti sur unu de la paĝoj kiujn vi saltante. DAVID Malan: Jes. Do eĉ se mi akiras pli proksiman kaj pli proksiman. Eble li estas nur hazarde, per malbona sorto, krampitaj inter du paĝoj ke mi flugas super? Do ni bezonas solvon por tio. Ni vere bezonas tiam diru, atendu minuton, eble se ni iras tro malproksime, eble se ni batis la T sekcio, por T venas post Smith, tiam ni devus almenaŭ duobligi reen almenaŭ unu paĝo. Tiel fikseblaj, sed ekzistas kondiĉan temon tie. Do ĝi estas duoble pli rapida, sed vi povus devas duobligi reen nur iomete. Sed neniu en sia ĉambro, eĉ se vi ne vere uzas telefonon librojn plu, tuj komencos komence. Kion vi faros serĉanta Mike Smith? Vi tuj iru malglate al la S-aj jaroj. Aŭ se vi ne vere havas la cheat folio sur la papero, vi tuj iru almenaŭ proksimume al la meza. Kaj certe ne la fronto de la libro. Vi tuj rigardi malsupren. Kaj matematike vi probable tuj vidos la M sekcio, kiu estas proksimume en la mezo. Kaj tiam vi tuj rimarkas, kio estas vera? Kie estas Mike? Lernanto: [inaudible] DAVID Malan: Jes. Tial li estas super transe. Kaj do kion vi povas fari? Nu, figure kaj laŭvorte ĉu vi dissxiros la problemo en duono iam? Kaj tiam sciu, ke vi povas ĵeti tiu duono de la problemo for. Kaj nun ni lasis kun fundamente la sama problemo, sed ĝi estas duone tiel granda. Kaj tiel nun kio estas la aro de instrukcioj? Kio estas la algoritmo por trovanta Mike Smith? Ĝi estas la ĝusta sama afero. Nun ĉi tio okazas al esti la M sekcio kaj tiu estas la Z sekcio, sed la fundamenta formulo estas ankoraŭ la sama. Iri krude al la mezo, ekrigardos ho, Darn ĝi. Nun mi estas en la T sekcio, Mi iris tro malproksime. Sed ankaŭ ĉi tie povas vin apliki tiun saman logikon. Ĵet duono de la problemo for kaj nun ni estas lasis kun problemo kiu estas kvarono de la grandeco. Kaj ni povas ripeti, kaj ni povas ripeti, kaj ni povas ripeti ĝis teorie ekzistas nur unu pagxo lasis sur kiu Mike ĉu estas aŭ ne estas. Do kio estas tiel potenca pri tiu ideo? Mi signifas post ĉiu, estas sufiĉe intuicia. Neniu tuj starti je la komencante de la telefono libro kaj klaki 1.000 paĝojn trovi Mike Smith. Plej ĉiuj en tiu ĉambro tuj fari malglate tian algoritmon krom la disŝiri. Do kial ni faru tion? Nu, pripensu la efikeco. Konsideri nur kiom bona ĉi algoritmo estis rompante ĝin malsupren en ĝia komponanto partoj. Do kion mi unue faru? Mi kaptis la telefonon libro. Kaj komputila sciencisto, kaj programisto, pli ĝenerale rezultas, tuj komenci rakonti ĉion 0. Kial? Nu, estas iom stranga ke ni homoj kalkuli, ĝenerale, ekde tiu. Ĉar kio estas pli malgranda nombro oni povas klare reprezenti bazita eĉ sur niaj malnovaj lernojaro lernejo math? Nu, estis 0, ĉu ĝi estas en dekuma aŭ duuma. Kaj tiel vi vidos en la mondo de komputado kaj programado, specife, ni komencas rakonti ĉion de 0. Do mi prenis la telefonon libro paŝo 0. Mi tuj malfermu la mezo de la telefono libro. Kaj tio estas ja esprimo de kion mi faris. Kaj tiam paŝon du estis rigardi la nomoj. Paŝo tri estas iom malsamaj koncepte. Mi demandas min mem demandon. Se Smith estas inter la nomoj, Mi tuj fari decidon. Se li estas inter la nomoj, tiam mi tuj vokos Mike. Kaj mi tuj fari decidon bazita sur tiu peco de informo. Tamen, se ne, se Smith estas pli frue en la libro al la maldekstra, Mi tuj malfermu al la mezo de la maldekstra duono de la libro. Kaj tiam ĉi tie estas la astucia, Mi tuj iros reen paŝi du. Mi tuj ordigi de staru sur mia propra ŝultroj kaj simple ripetas la pasinta laboro mi faris. Sed la laboro mi restas estas malpli kaj malpli, kaj malpli. Sed ĝi estas ankoraŭ iranta labori. Sed se Mike, anstataŭe, estas posta en la libro al la dekstra, Mi tuj malfermu al la mezo de la dekstra duono de la libro, poste iru reen al paŝo du. Sed estas fakte kvara scenaro. Mike ĉu tie, aŭ ĉi tie, aŭ tien, or-- Lernanto: Ne ekzistas. DAVID Malan: Ne ekzistas. Kaj efektive, se ni ne anticipi tiu kvara kaj fina scenaro nia programo povus esti kalesxon aŭ misa iel. Alie, malekas en la kazo ke ni ne trovis Mike ajn. Kaj efektive, se vi iam rimarkis via komputilo kurteno aŭ ĉiuj subite vorton aŭ alian programo nur malekas neatendite, Kaj foje vin eraro mesaĝo estas laŭvorte tio. Tiu programo forlasis neatendite. Ĝi povas esti ajna nombro de kialoj. Sed kelkfoje estas iu tiel simpla kiel tiu. La homa programisto kiu skribis ke programaro ne rimarkas tion, ho, ekzistas antaŭen afero kiu povas fakte okazi. Kaj se vi ne skribi kodo kapti tiu kvara scenaro, ĝi estas ja neatendita foje kion la komputilo povis fakte fari. Nun ni nomas ekster kelkaj el tiuj aferoj. Tiel en flava tie, havas reliefigita esprimoj ke nun ni nur tuj nomos funkcioj. Funkcioj en la mondo de programado estas nur kiel agoj, deklaroj de agoj. Tiel repreni, malfermita al, rigardi ĉe, telefoni malferma, malfermita, quit. Tio funkcio, proceduro, ago, ajna nombro de sinonimoj laborus ankaŭ. Kion signifas tiuj aferoj nun en flavaj? Se alia, se alia, se alie, tiuj estas kion ni tuj voki kondiĉoj en programado, aŭ branĉoj, decido notas, se vi volas. Sed kiel vi scias kiu forko en la vojo al preni, por tiel diri? Ni devas reliefigi la kondiĉoj por la dekstra tie, kiuj estas jes, ne demandoj. Tiuj vera falsa demandoj. Smith inter nomoj? Smith pli frue en libro? Smith poste en libro? Tiuj estas demandoj kio estas jes aŭ ne, aŭ ekvivalente vera aŭ falsa, aŭ ekvivalente, unu aŭ nul respondo. Kaj dume ekzistas nur unu lastan pecon. Ĉi tie havas kia efiko? Ĉu vi planas antaŭe, kiel volus vin priskribi kio paŝo sep kaj 10 faras? Kion vi diris? Lernanto: A rekursia paŝo. DAVID Malan: A rekursia paŝo. Jes, esence. Ĝi estas teknike ripeta tie se vi konas. Sed ni revenos al tio. Sed ĝi estas faranta ion klare. Denove, ĝi estas induktante ciklo, buklo, dekstre. Vi laŭvorte iri malantaŭeniri al iu pli frua ŝtupo. Kaj tiel ja tiu tuj apliki ia ciklo. Sed vi ne ricevos senmoviĝita en ĉi senfine, dekstre. Ĉar se vi konstante kontrolanta estas Mike tie, nek maldekstren, aŭ ne ĉi tie, fine li ne tuj estos tie. Kaj vi povas simple forlasi entute kiel po ke lasta linio. Do jen ĝi por vortprovizo. Kaj tio estis kion ni volis ĝenerale nomas _pseudocode_ kodo. Ĝi ne fakta lingvo. Estas nur tre konciza angla, sed komunikas la punkto. Ekzistas neniu formala strukturo tie. Vi nur uzas estas kelkaj vortoj, sed tiel klara vortoj kiel vi povas komuniki vian ideon. Nun kiel bona estas ke algoritmo kaj kiom bona estas tio? Nu, ni ne devas eniri la specifics de nombroj aŭ io tiel. Sed ni povas rigardi la formo de tiu solvo. Do se ni simple desegni iun xy intrigo tie sur la horizontala akso tie. Ni simple nomas la grandeco de la problemo. Kaj komputila sciencisto farus tipe uzas n kiel la variablo tie. Do n paĝoj, aŭ n homoj en la ĉambro, aŭ kio ajn ĝi estas vi provas rakonti. Kaj tiam sur la vertikala akso de la lasis, ke estus tempo por solvi. Do kiom da sekundoj faras prenu min trovi Mike Smith? Aŭ kiom da paŝoj preni? Kiom paĝo turnoj faras ĝi preni? Do jen kiom kostas mi tempo por solvi problemon. Kaj ni povus tiri la unua algoritmoj deklivo, se vi volas, kiel ĵus tiu rekto en ruĝa. Kaj mi nomas ĝin n. Kial n? Kial ĝuste ĉi tiu al unu interrilato? Nu, se Verizon aŭ ajn telefono kompanio aldonas pli paĝo al la telefono libron venontjare, kiuj povus puŝi Mike unu pli paŝo pli proksima al la fino, Dependanta sur kie tiu paĝo estas. Kaj tiel la efekto povus simple esti aldoni unu pli duan. Aŭ pli paĝo turno. Al unu al unu rilatumo. Kontraste, la dua algoritmo. Kiom rapida estis ke intuicie? Kie mi iris du paĝojn samtempe? Yeah. Lernanto: [inaudible] DAVID Malan: Jes. Do ĝi estas tuj estos duoble rapida. Kaj ni devus tiri ke tien depende de la skalo. Ĝi ankoraŭ estas rekto, sed pli malalta ol la ruĝa linio. Ĉar por iu nombro de paĝoj, se ĝi prenas Vi ĉi multaj paŝoj kun la unua algoritmo, ĝi estas tuj prenos vin duono kiel multaj paŝoj kun la dua. Kaj tial la flava linio priskribante la dua algoritmo Estas ĝuste tuj estos sub ĝi. Sed kio estas vere potenca estas pensu pri la tria kaj lasta, kaj mirige plej intuicia algoritmo, kiu havas tiun formon. Teknike nomus ĉi logaritma kurbo. Ensaluti bazo 2 de n en tiu kazo. Sed tio ne vere gravas. Kio gravas vere estas la principe malsama formo kiu havas. Kaj vi povas konsideri nur kiom multe pli mallonga tiu linio vere estas en la longa kuro. Ĝi estas konstante kreskanta. Ne platigi eksteren perfekte. Sed kreskas ege multe pli malrapide kiel la problemo ricevas pli kaj pli granda. Kaj vi povas pensi pri tio ĉi bare se Verizon ne nur aldoni unu paĝo venontjare sed duobloj la nombron de paĝoj en la telefono libro, la unua algoritmo povus preni dufoje kiel multaj paŝoj. Se ĝi estas 1,000 paĝoj tiun jaro, 2.000 paĝojn venontjare, Mike povus esti ke multe pli malproksima. Do estas 1.000 ekstraj paŝoj al trovi lin. La dua algoritmo povus esti nur 500 pli paŝoj al trovi lin ĉar denove, Mi flugas tra ĝi du samtempe. Sed kio pri la tria algoritmo? Se Verizon duobligas la grandeco de la telefono libro sekva jaro de 1000 ĝis 2000 paĝojn, kiom pli paŝoj Estas mia tria algoritmo tuj prenos? Jes, ĝi estas ĝuste tiu. Kaj tio estas la potenca ideo. Vi povas preni 1.000 paĝo mordo el tiu problemo tuj. Kaj nun se vi konsideras stulta scenaro, sed ia parolas al la potencon de tiu speco de intuition-- se telefono libro devis, kiel, kvar miliardoj paĝoj, sentas kiel vere granda problemo. Kaj efektive, ĝi povus preni al mi kvar miliardoj paĝon turnas trovi Mike Smith en kiuj kazo kun la unua algoritmo. Sed kiom da paŝoj volus ŝin preni en la tria algoritmo trovi Mike inter kvar miliardoj pecojn de papero? Do kvar miliardoj vi dissxiros la duono. Vi akiras du miliardoj. Tiam unu miliardo, tiam 500 milionoj, 250 milionoj, 125 million-- sed sentas ĉi estas tuj prenos tempon. Mi bezonas 32 fingroj por kalkuli ke alta. Sed estas ja kiel kelkaj kiel 32 paĝo larmoj. Vi povas iri de kvar miliardo por unu paĝo divisoria la originala nombro de paĝoj en duono de 32 fojojn ĝis vi lasis kun Nur ke unu retpaĝo. Nun, kompreneble, mi trompas tie. Ĝi estas ne ke ni simple esti speco de stultaj tute kun la unuaj du algoritmoj. Mi trompas iusence, aŭ vere mi ekspluatanta supozo. Kio estis vera pri la telefonon libro en lia originala formo kiu permesis mi eĉ uzas tiun trian algoritmo? Yeah? Spektantaro: Ĝi alfabetizado. DAVID Malan: Estis alfabetizado, dekstra? Se estus nur en hazardaj ordo, tio estas malŝparo de tempo, ĉi tiu tuta konversacio. Mi devas rigardi ĉiun paĝo se ĝi estas en hazarda ordo trovi Mike Smith antaux mi povas konkludi ke li estas tie aŭ ne. Kaj tiel la angulon ni tranĉis estas ke mi havas supozis ke iu alia en tiu kazo faris la laboron por mi. Kaj tial finfine invitas la demando, nu, atendu momenton. Kiel vi ordigi 1,000 paĝoj de nomoj kaj nombroj? Tio estas vere malsama problemo, io ni revenos al la estonteco. Sed kiam vi pensas pri retejoj kiel Facebook kaj Google por Gmail kaj aĵoj kiel Google propra serĉindeksoj, kiam vi havas milionojn aŭ miliardoj da pecoj de datumoj esti stokitaj tiuj tagoj, searching-- kaj ne mencii ordigado tiuj problems-- estas finfine defio al si. Kaj efektive, ĉi tiam estas nur unu el tiuj defioj ke ni estos rigardante. Do nun ni preni momenton kaj rigardu CS50 mem kaj doni al vi la senton de kio estas en vendejo ĉi semestro. Efektive, se vi ne jam, do rigardu tiun URL. Kaj kiel Patrick aludis por tiu jaro ni estas farante signifan investoj ĉiuj pli en la kurso subteno strukturo en terminoj de la TAS kaj la CAS, oficejo horoj, sekcioj disponeblo kaj ciferecajn materialojn rete, tiel. Efektive, laŭ la kurso prelego, ni estas ĉi tie hodiaŭ. Kaj la atendoj ĉi jaro oficiale de la kurso estas ĉeesti al hodiaŭ, la kurso lasta prelego kaj kurso proksimume en la mezo de la semestro kun ĉiu prelego en inter disponebla ĝenerale sur vendredo posttagmeze linio, ambaŭ por Yale studentoj kaj Harvard studentoj tiun jaron. Efektive, unu el la fundamentaj ŝanĝoj estas ke ni adoptante ĉe Harvard paradigma multe kiel ni faris tie lastan jaro kaj nun ĉi tiu jaro, por ke simile, ni ankoraŭ filmi plej de la kurso de lekcioj en Kembriĝo sed fari ilin disponeblaj frue ol ni havas en la pasinteco tiel ke tiuj de you-- se vi ŝatus, ekzemple, akiri kapo komenco de materialoj sur la unua semajnfino prefere ol la dua semajnfino, vi havos aliro al ĉi tiuj specoj de materialoj, serĉeblaj, Enkorpigebla, hyperlinkable al rilataj rimedoj ĉiuj antaŭaj. Laŭ la temoj, por doni al vi sento de la kurso trajectory-- kaj iuj de ĉi povus esti ĵargono por nun, sed ne por longe, ripozi certigita. Ni komencos hodiaŭ, finfine, kun rigardante unu programado lingvo nomita Scratch. Ni transiron poste sekva semajno al iu nomita C kaj tiam rigardi aliajn konstruaĵo blokoj por solvi problemojn, aĵoj nomata tabeloj kaj algoritmoj, kiel ni uzas memoron al nia avantaĝo kaj malavantaĝo, kaj aĵoj kiel datumstrukturoj, kaj tiam direkte al la vosto fino de la klaso rigardante maŝino lernado kaj rigardante alia lingvo nomata Python, kiel la retejo funkcias, kiel la interreto pli ĝenerale funkcias, protokoloj kiel HTTP, lingvoj por datumbazoj kiel SQL, Ĝavoskripto por la retejo, kaj finfine ligante ĉiuj el tiuj kune. Kaj tiel ja en la fino de la tago, vi ne lernas en ĉi klaso Scratch aŭ C aŭ Python aŭ SQL aŭ Ĝavoskripto. Vi anstataŭe pli ĝenerale lernas komputiko kaj la fundamentoj el gxi kaj vi volas lerni kiel plani en ajna nombro de tiuj lingvoj survoje. Do ja, unu el la celoj de la kurso en la fino forlevu ĉiujn kurso trejnado radoj de tiuj finaj semajnoj por ke post tio, vi povas reveni al via propra fields-- ĉu tio estas aŭ Ne komputiko aŭ inĝenierio, en la natura sciencoj, artoj, homaroj, aŭ beyond-- kaj alporti iuj de ĉi Kompreneble ideoj kaj ĉi kampa ideoj kaj praktika kapablojn por via propra domajno por solvi problemojn en gxi. Kion ni povas fari tie dume en plej ĵaŭdo post hodiaŭ estas kun la kurso kapoj kondukante kion ni nomas walkthroughs de la kurso la problemo aroj. Do ĉiu semajno kiam ni esti problemo aro, ni instruos vin esti piediranta tra en ubicación tiel la kurso defioj, proponante vin kelkaj konsiletoj kaj ruzoj kaj dezajno teknikoj. Sed se vi ne povas fari tiujn persone, realigi tiujn samajn rimedoj estos enigita de unu el la kurso instruado helpantoj en la problemo aroj mem, ankaŭ. La problemo aroj ĉi jaro, kontraste pasintjare, bazita sur sugestoj, ankoraŭ estos ĵetita la vendredo. Sed anstataŭ devante la posta vendredo, donante al vi nur sep tagoj, estos efike ŝuldiĝi 10 tagoj poste. Kaj efektive, tio signifos ke ili devos koincidigi per semajnfino. Sed ni esperas ke tiu jaro Precipe tiu volo permesi studentoj por bone alĝustigi altibajos en siaj horaroj, ĉu ĝi estas akademianoj aŭ extracurriculars aŭ atletiko aŭ midterm sezono. Vi aŭ antaŭ-ŝarĝo aŭ dorso-ŝarĝo via semajno temigante CS50 bazita sur via propra semajno fakta kurson ŝarĝo. La problemo aroj mem kovros gamo de lingvoj, kvankam ni enfokusigi ĉefe frue sur C antaŭ ni enfokusigi poste sur alta nivelo, pli ttt-centrita lingvoj. Kaj poste kelkajn FAQs here-- vi devas preni klaso kiel CS50 kiel unuajaraj? Tiel absolute. Kaj fakte, ĝi ne estas nepre io vi devas prokrasti ĝis vi tranĉis viaj dentoj sur aliaj tipoj de klasoj. Sed prefere, konsideri ke por multaj lernantoj, min inkludas reen en la tago, tio estas tre nekonata kampo, speciale se vi neniam prenas AP CSA aŭ io simila en mezlernejo. Sed rimarkas ke frue, ĉu ĝi estas tiu kurso aŭ alian enkondukan kurson, nun estas vere la plej bona tempo, Mi pensas, por trovi iun novan padon aŭ iu nova akademia intereso, tiel. Kaj tiam prenante kun aliaj courses-- tial unu el la ŝlosilaj diferencoj tie kontre Harvard estas ke ni nur preni kvar kursoj po semestro Harvard ial. Kaj vi uloj fakte tiri ekstere kelkaj 36 kursoj en tuta super la kurso de via kvar jaroj, kio signifas ĝenerale kvar aŭ kvin klasoj. Kaj mi kredas ke estas tute ĝuste diri kaj disclaim CS50, de dezajno, estas probable ne la tipo de klaso ke vi devus tipe prenu kun kvar aliaj kursoj por totalo de kvin ĉar psets estas per desegni sufiĉe intensa. Efektive, mi tro lernis ĉi tie en la tago. Mi ne priskribi CS50 kaj komputiko, programado kiel tiel malmola kiel ĝi estas nur temporaba. Ĝi ne estas la speco de afero kie post la vespermanĝo, vi povas reiri al via dormejo ĉambro, sidiĝu, kaj komenci temigante la pset pensante, bone, Mi estas gonna bang ĉi ekstere ĉinokte kaj tiam movon al mia proksima subjekto la venontan tagon. Foje vi nur batis muron. Vi havas erarojn en via kodo. Vi ne nepre scias kiel solvi iun problemon. Kaj unu el la ĉefaj ecoj de programado por mi ĝis hodiaŭ Estas vi nur ia bezonas preni retropaŝon kelkfoje, dormi sur ĝi aŭ pensi ĝin dum la kurso de Jog aŭ iu alia aktiveco, kaj tiam revenu al ĝi freŝan. Kaj vi nur bezonas tiujn fenestrojn de tempo. Kaj efektive, jen kial ni havas plilongigis la kvanton de tempo disponebla por la problemo aroj tiu jaro kaj ankaŭ, por ke URL Mi starigis frue kiel por kio novas ĉi semestro, borderita la problemo aroj tia ke ili estas fundamente ne malpli rigora, kaj la takeaways estas ne malpli, sed ekzistas multe malpli antaŭ aferon, multe malpli legwork ke vi bezonas fari ĉe la fronto de ĉiu problemo aro, kiel vi vidos, antaŭ vi povas reale plonĝi en la viando de ĝi. Do rimarki, ke tiuj kaj aliaj ŝanĝoj estas sur la horizonto better akomodi studentoj, sed finfine certigi ke la takeaways estas ja tiel alte kiel eblas. Tiel dum pli laboro ol povus esti en tipa klaso, ni esperas ke la revenoj por vi kaj la takeaways por vi kaj la kapablojn kaj ideojn kun kiu vi eliras estas des pli konvinka kiel rezulto. Kaj ekiru there-- kaj ĉi estas unu el la ŝlosilaj takeaways, kiel Patrick aludis earlier-- estas la kurso de apogo strukturo. Do ne nur CS50 havas unu el la plej kurson bastonoj sur kampuso. Ĝi ankaŭ havas unu el la plej bakalaŭra. Ja CS50 pasintjare Estis la unua klaso havi bakalaŭran instruistaro. Kaj testamento al tiu sukceso faras nun multaj aliaj kursoj ene Yale CS havas tion, ankaŭ. Kaj por studentoj, specife, volo tiuj TAS kaj kompreneble helpantoj esti subtenanta tuto reto de subteno rimedoj, inter ili sekcioj aŭ deklamoj, semajna ŝancojn havi pli intiman diskutoj kaj recenzoj de materialo laŭcela por malsamaj aŭtoveturejoj, por studentoj malpli komfortaj, pli komforta, aŭ ie intere. Tiuj sekvos la haveblecon de la prelegoj de pluraj tagoj ĉiusemajne lunde kaj marde. Kaj tiam oficejo hours-- unu-sur-unu ŝancojn helpon de la kurso CAS kaj TAS Estos merkrede kaj ĵaŭde kaj dimanĉoj ĉe multoblaj tempoj, ĉiuj kiuj estos poŝtita sur la kurson de afiŝinto, eĉ pli ol pasintjare, ankaŭ. Sed kio estas ŝlosilo al CS50, se ne rekoni iom nekutima, estas la kurso la kulturo kiu ni provis kultivi, ambaŭ en Cambridge dum multaj jaroj kaj nun laste en New Haven. Kaj fakte, venante ĉi Sabato, se vi ne aŭdis, CS50 Puzlo Tago, kiu havas nenion komunan kun komputiko sed estas tute desegnita por sendi mesaĝon ke komputiko estas pri solvi problemojn. Kaj efektive, se vi ŝatus partnero kun unu aŭ du aŭ tri amikoj kaj formi teamon por CS50 Puzzle Tagon, rigardu ĉe la reklamojn kiuj estas sur la vojo ekstere. Kaj tri horojn de pico kaj enigmoj kaj premioj atendas. Kaj efektive, dum la unua fojo ĉi tiu jaro, ĝi ne okazos kune kun Harvard. Estos tie sendepende ĉe Yale. Do prigardi ekstere por tiuj se vi havas ne. Plej ĉiun vendredon en la semestro ni provos fari grandan klason sentas malgrandan kaj alporti iun 50 studentoj lunĉi kun la kurso de dungitaro, kun lernantoj, amikoj de industrio paroli pri kio estas la vivo post klaso kiel CS50 kaj super la someroj kaj post diplomiĝo. Do prigardi ekstere por invitoj al tiu. Unuafoje iam tiu jaro volas ni tenas la unua iam CS50 kodigon konkurso, laŭvola opt -in ŝanco meze semestro, post ĉiuj el ni havis iuj ses aŭ sep semajnojn de programado en C sub sia zono konkurenci, se vi estus tiel choose-- denove sur teams-- provi solvi kiel multaj defioj kiel vi povas en programado kun viaj amikoj kontraŭ aliaj. Kaj al la vosto de la semestro volo ni ĉarto iuj busoj, reale pasi sezonon en Cambridge, se vi volas ŝatus aliĝi nin por la tn CS50 hackathon. Ĉe 7 PM ni komencos. Ĉirkaŭ 9 ptm, ni devos pico. Ĉirkaŭ 1:00 AM, ni devos burritos. Kaj iu ankoraŭ maldormis sur la aŭtobuso rajdo hejmen ĉirkaŭ 5:00 AM, ni halti ekstere por krespoj ĉe IHOP survoje home-- 12-hora ŝanco mergi mem kun samklasanoj kaj kunlaborantaro en la kurso de fina projekto, kio estas ŝanco iri bone preter la Kompreneble la problemo aroj kaj dezajno kaj efektivigi plej io de intereso al vi, kiu finfine estu prezentita tie en Commons. La unua iam CS50 justa estis lastafoje jaro, fino-de-semestro ekspozicio aŭ okazigo de kion ĉiu en la klaso estis plenumita, precipe tiuj, denove, kiu iris de nenion al iu, de nulo al 60, havi neniun antaŭan fonon kaj elmetante, finfine, ion por la tuta kampuso kaj, se rete, la mondo por vidi, kiel bone. Nun, tiuj ĉi estas nur kelkaj el la Tas kaj CAS kiu faras CS50 ebla. Permesu al mi inviti ajnan de tiuj laborantaranoj Kiu estas ĉi tie elkreskis sur scenejo, krom la kurso de kapoj, oferti kelkajn vortojn de inspiro, tiel. ANDI: Saluton, knaboj. Povas vin infanoj aŭdas min? Dankon por kunigi nin je tiu bela, pluva ĵaŭdon posttagmeze. Mia nomo estas Andi. Mi juniora en Berkeley. Kaj kune kun Stelios kaj somero, ni estos viaj tri kapo instruado helpantoj por tiu venonta jaro. Do, mi supozas, spektaklo de hands-- kiom vi ne intencas esti CS grava nek vere plonĝado profunde en komputiko kiel grava tie? Awesome. Jen brila. Do mi estas fakte tutmonda aferoj kaj kognitiva scienco grava. Mi laŭvorte venis Yale kun la intenco de ne devi rigardi nombro iam denove en mia vivo. Venante al Yale, tio estis iu kiu neniam estis en mia radaro. Mi volis lerni pri poezio. Mi volis lerni pri internaciaj aferoj. Mi volis lerni pri akvarelo desegnoj. Jes, ni proponas klaso sur akvarelo desegnoj. Sed mi neniam vere interesiĝis en iu tigo rilatajn. Sed tiam la pli aĝa mi ricevis, des pli mi ekkomprenis ke ĉiukampe vere en iuj senco laborigas komputiko, aŭ se ne komputiko, komputado. Fakte, por mia tutmonda aferoj Capstone projekto, ni uzas datumojn analytics analizi terorismaj atakoj por Boko Haram en Niĝerio. Kaj tiel kiel vi povas vidi, nekonsiderante kio grava vi finos persekutantaj aŭ kion viaj interesoj tie ĉe Yale estas, programado kaj la fundamentoj de kio ajn kapabloj estas super utila. Kaj CS50 vere estas bone ekipita por ia pruntedoni multajn liajn rimedojn al vi, nekonsiderante kiom komfortaj vi aŭ kiom interesas vin estas en plutraktanta la klaso. Somera tuj parolos iom iom pri kio vi uloj estas lernos pri ĉi jaro. SOMERO: Saluton, ĉiuj. Mi Somero Wu. Mi juniora en Morso. Kaj mi fakte komencis eksteren kiel CS50 studento mem. Do tri jaroj, mi estis en interspaco jaro. Mi neniam prenis CS klaso en mezlernejo, sed mi opiniis, ke en mia libera tempo, ĝi estus malvarmeta lerni kiel kodigi. Tial mi faris rapidan Google serĉo, serĉis kio estis havebla rete, kaj vidis tiu video kun muppets kaj diskistoj kaj malvarmeta retejoj. Mi estis kiel, Mi volas lerni kiel fari tion. Do mi prenis la kurson, kaj mi nur enamiĝis ŝin. Sed mi memoras esti tiel ĵaluza de la infanoj kiuj povis ĉeesti la hackathon, ĉeesti Puzlo Tago, ĉeesti oficejo horoj, Akiri helpon de TAS persone. Kaj tiel mi neniam imagis ke mi akiras la ŝancon esti tie implikita en la kurso kiu unue akiris Min interesas komputilo scienco kaj estas la kialo kial Mi komputika grava hodiaŭ. Do mi avertas vin, tiu klaso tuj etendos vi. Ĝi tuj defias vin. Sed ĝi estas ankaŭ iranta instrui vin kiel fari aferojn ke vi neniam imagis vi povus. Stelios: Saluton, ĉiuj. Mia nomo estas Stelios. Mi estas juniora en Branford Kolegio kaj CS grava. Mi estas ankaŭ de Ateno, Grekio. Mi vere antaŭĝojis renkonti vin ĉiujn, babili kun vi ĉe sekcio, ĉe oficejo horoj, je vendredo lunĉoj. Mi estas vere ekscitita ĉar ni metis tiel penado en kreante sola subteno strukturo por vi ĉiuj fari vian sperton kun la kurso la plej bona ebla. Kaj mi esperas ke kvankam plejparto de Vi probable ne prenis CS Kompreneble antaux Mi esperas ke estas CS50 cxar vi estas kio fajreroj intereso por plue okupiĝi komputilo scienco en la estonteco, kiel ĝi faris kun tia multaj personoj en la pasinteco. Do dankon por esti tie, ekscitita vidi vin. Jason Hirschhorn. JASON Hirschhorn: Saluton, ĉiuj. Mia nomo estas Jason Hirschhorn. Mi loĝas en Silliman. Kaj mi iris al Harvard kiel studentoj de kaj specialiĝis sociaj studoj kaj minored en komputiko. Kaj unu el miaj ĉefaj roloj tie Estas por apogi tiun mirindan kunlaborantaro kiel ili subtenas vin ĉiujn. Fakte, ĉi tiu estas ne ĉiuj. Ekzistas 55 studentoj kaj diplomo ĉi tie kaj vin ĉiujn. Kaj supozeble unu el la plej bonaj partoj de la kurso por vi ĉiuj estas akiranta labori kun ilin, ekkonu ilin, alveni al vidi ilin, ambaŭ en CS50 kaj ekstere de CS50 ĉi semestro kaj dum multaj semestroj veni. Do espereble vi prenos la Kompreneble ĉar espereble vi atingos interagi kun la mirinda bastonon ni havos en la scenejo. Parolanto: Nu, lasu min fini dirante estos amuza. DAVID Malan: Bone, danke al nia tuta teamo. Permesu al mi dim la lumoj kaj permesi iun pli de nia teamo, ambaŭ de Kembriĝo kaj New Haven, diri saluton kiel tiuj uloj dosieron for. Kaj post tio ni transiron al la unua de nia programado engaĝiĝoj kun tiu lingvo nomata Scratch. Do dankon al la teamo. Ni dim la lumoj kaj aŭdi de kelkaj aliaj. [Aplaŭdo] [VIDEO reprodukto] -La Misio de CS50 estas fari vin pli komforta kun tute nova maniero de pensado, tiu komputa pensmanieron. -ĝi Faris komputiko interesa, kiu Estas io, kion mi ne vere konscias eblis ĝis mi prenis la klaso. -mi Estis kiel, halt. Mi vere tradukado miaj pensoj en komputilo aktuale. -Even Se vi ne havas ajnan fono en komputiko aŭ ajna sperto, tiu estas vere la klaso por vi. -Do Mi definitive volas miaj studentoj nur akiri ekscitita pri komputiko. Ne nur programado, sed pensante kiel komputila sciencisto estas vere kion mi deziras provi instrui mian unuajarulo. -CS50 Estas malmola kaj rekompencanta. -an Sperto. -Extravaganza. -ĝi Estas alportanta nin al la sekvanta nivelo. [MUZIKO Ludanta] -La TFS havas, miaopinie, la lifeblood de la kurso. -I'm Ekscitita havi miaj studentoj min helpi havas tiun aha momento realigi kion ili vere provas fari, por diveni kiel fari pset. -CS50 Estas sendube malfacila kurso. Sed malkiel aliaj Kompreneble vere ĉe Yale, ĝi havas tia granda, helpema komunumo. -Vi Tute ne bezonas scii ion pri kodigo povi preni la kurson. -ĝi Estas miranta rigardi kiom personoj envenos semestro. -Vi Ne sole sidas en via ĉambro lernanta kodo, sed estis pli ol nur klaso. Estis sperto. -La Plej bona maniero por lerni konceptojn kaj prilabori ilin estas instruante aliajn. -Kio Estas la telefona divido? [MUZIKO Ludanta] -Kaj Tiu estas CS50. [MUZIKO Ludanta] -tio Cxi estas CS50. -Got Problemo? Ŝiras ĝin en duono. [MUZIKO Ludanta] Forĵeti ĝin. DAVID Malan: Bone. Do ni tackle-- en iom iom, parenteze, estas estis ĉi tradicio por ial dum 10 jaroj servi kuko ĉe la komenci kaj la fino de CS50. Do atendas vin ĉe la fino de hodiaŭ, krom syllabi, Estos iuj kuko tiel, kaj la kurson bastono diri saluton. Sed nun, ni transiro al la unua de niaj lingvoj, kie ni elspezas vere nur unu semajno kaj unu problemo surtabligis tiu domajno, Scratch. Kaj vi trovos, se vi havas planita antaŭe, multaj de la ideoj kaj la eblecoj estas familiara al vi. Sed vi trovos, ke ĝi estas amuza survoje elkompreni ĝuste kiel traduki iuj de la ideoj vi jam scias al tiu aparta medio por vere impresi via familio kaj amikoj kun via laboro, kiu povas iri enreta, Se vi tiel elektas, post tio. Kaj se vi ne havas antaŭan sperton kaj estas inter la plimulto de studentoj malpli komfortaj, rimarkas ke multaj de la ideoj ni nur esploris kun reality-- aferoj kiel telefono librojn kaj asistencia kaj tiel forth-- traduki sufiĉe bele al komputilo, sed ne se vi uzas, komence, lingvo kiel tiu. Do tiu estas programo skribita en lingvo nomita C. Kaj ni pasigas sufiĉe de tempo en C, finfine. Sed probablecoj estas, ĉi aspektos iom kamufla al vi unuavide. Fakte, ekzistas multajn strangajn sintakso, krampoj, angulo krampoj, krispa krampoj, citiloj kaj punktokomojn. Kaj efektive, se vi plonĝi en programado unuafoje rigardante kaj provi krei aĵojn tiel, honeste, vi get tiom enŝlimigita tiel ofte en nur stulta minutia kiu havas nenion intelekte interesa pri tio. Sed imagu se vi povus krei tiu sama program-- kiu, kiel vi eble ia konkludi, verŝajne gravuraĵoj "Saluton, mondo" iumaniere. Ni povas distili tiu sama ideo en nur du puzlo pecoj, se vi volas. Ja, Scratch estas interesa ĉar ĝi estas tiu grafika lingvo. Vi povas treni kaj faligi tiujn enigmo pecoj kiuj nur interplektiĝas se ĝi faras logikan sencon fari tion. Kaj tiel en Scratch, ni baldaŭ vidos, tio estas kiel vi devus apliki tiun saman programo, kun nur du puzlo pecoj ke preskaux faras kion ili diras. Sed ni vidos en nur momento ke iuj de la konstruelementoj ke ni aludis al antaŭaj kaj kelkaj pli estas ĉiuj ke finfine tuj konstituos kelkaj el niaj plej fruaj programoj. Ni tuj devas aferoj kiel functions-- nur agoj kiuj faras ion, kiel diri saluton, mondo. Ni tuj devas masxojn, aferoj kiuj induktas ciklojn denove kaj denove, simple ŝatas nin faris antaŭ momento kun traserĉado Mike Smith. Variabloj, kiel en algebro, se vi havi x aŭ y, kiu povas stoki kelkajn. Nu, en programo, vi povas reale stoki pli ol nur nombrojn. Vi povas stoki vortoj kaj frazoj kaj grafikaĵoj kaj aliaj aĵoj ankoraŭ. Buleaj esprimoj, ĵus questions-- jes aŭ ne, vera aŭ malvera. Kondiĉoj, farado decidoj bazitaj sur tiuj jes / ne respondoj. Kaj tiam amatoro aĵoj tabelo kaj fadenoj kaj eventoj kaj kiom ajn da aliaj trajtoj, sed ĉiuj el kiuj mapi tre bele por tre amika blokoj ŝatas tion. Ĉi tuj esti funkcio, purpura enigmo peco kiu ĵus diras kion lia nomo is-- tiukaze, diru. Kaj tiam ofte, ekzistas blanka skatolo kiu vin povas entajpi aŭ treni iu valoro en. Kaj tio estas kio estas ĝenerale nomita argumento aŭ parametro. Ĝi estas maniero de ŝanĝi la defaŭlta konduto de puzlo peco aŭ funkcio tiel ke ĝi faras io kutimo por vi ŝatas diri: saluton, mondo aŭ saluton, Andy aŭ saluton, Jason aŭ alian frazo anstataŭe. Se vi volas diri ke lot-- laŭvorte forever-- vi povas preni alian enigmo peco nomita ĉiam kaj ĝuste krampitaj la du kune tiel. Kaj ke buklo, kiel la bildo sugestas, signifas nur diru saluton, mondo ĉiam, denove kaj denove kaj denove. Aŭ, se vi nur volas fari ĝin finia nombro de fojoj, kiel 50 fojojn, tie tuj estos alia enigmo peco por that-- ripeti 50 fojoj. Dume, se vi volas havi variablon en tiu lingvo ni pri ludi kun, vi povas uzi oranĝkolora bloko ŝatas tion. Kaj tiu variablo mi arbitre nomita i por entjero. Kaj mi nur starigis ĝin egala al 0. Kaj do eble mi, en tiu case-- ĉi variable-- reprezentas ies partituro en ludo. Vi komencas je nulo, kaj ĉiufoje vi fari celo aŭ io simila, vi ricevas unu aldona punkto. Vi povas demandi demandojn en Scratch. Se ni treni kaj faligi enigmo pecoj en momento kiel oriento, Vi povas fari demandojn kiel, bone, estas i malpli ol 50? Eble vi bezonas 50 punktoj por gajni. Kaj tial ĉi estus la demando vi volas demandi. Aŭ, pli ĝenerale, vi povus diri estas x malpli ol y, kie ekzistas du variabloj implikitaj? Nun, ĉi tiu estas multe granda unuavide, sed vere ne ĉiuj kiuj pli kompleksa. Tiu estas nur kombino de kondiĉoj kaj variabloj kaj Buleaj esprimoj demandi tri questions-- estas x malpli ol y? Se jes, diru tion. Diru, x estas malpli ol y. Alie, se x estas pli granda ol y, alie x devas egali al y. Kaj dum kun Mike Smith, estis kvar scenarojn, tie en la mondo de nombroj, x estas aŭ malpli ol, pli grandaj ol, aŭ egala al. Ĉiuj ni havas tri forkoj en la vojo. Kaj tiam tie estas amatoro enigmo pecoj kiel ĉi por aĵoj kiel tabeloj, kie ni estas tuj povos stoki informon. Ni tuj vidos blokojn kiuj permesas nin implementar multnombraj fadenoj, alia karakterizaĵo ni uzos kaj tiam ankaŭ iu nomita eventoj. Sed antaŭ ol ni atingos tion punkto kaj krei eĉ, finfine, nia propra kutimo enigmo pecoj, ni fakte malfermas la programo mem. Do tiu estas Scratch. Ĝi estas havebla ĉe scratch.mit.edu. Kaj vi plene rajtas ludi nun aŭ poste, tiel. Tiu rezultas esti la eksterreta versio. Por personoj kiuj ne nepre havas grandan Interreto, Vi povas elŝuti la sama programaro, tiel. Kaj estas vere nur tri komponantoj por tiu programaro. Sur supro maldekstra angulo de la ekrano estas la speco de stadio ke Scratch, kiu defaŭlte aspektas kiel kato, vivas ene. Li povas movi supren, malsupren, forlasis, kaj dekstre kaj fari ajnan numeron de aliaj aferoj, kaj povas rigardi ajna nombro de manieroj bazita sur la kostumoj kiujn vi atribuas al li. Sed tio kion ni nomas sprite, ia karaktero. Kaj vi povas havi multoblajn karakteroj, kiel ni baldaŭ vidos. Meze nun estas ĉiuj tiuj enigmo pecoj kaj tiuj kategorioj aŭ pallets gxi. Do nun, mi klakis sur Moviĝo. Kaj tial mi vidas ĉiujn moviĝo-rilataj enigmo pecoj aŭ blokoj, tiel funkcioj kiuj havas fari kun suprenirantaj, sube, maldekstra, aŭ dekstra aŭ alian operacion. Sed se mi alklakis Looks, vi povis vidi aĵojn kiel la vorton bloko ke ni vidis nur antaŭ momento. Kaj se mi alklaku Kontrolo, vi vidos aferojn kiel la ripeto kaj la ĉiam kaj se bloko ke ni vidis antaŭ momento. Do vi trovos ke ni simple grati la surfaco de iuj de la konfuzis pecoj kune, sed estas ĉiuj sufiĉe intuicia kaj punkto kaj klako. Ja, Scratch estis dizajnita por junaj studentoj helpi al ili elirejo por krea pensado. Tamen mirinde, ĝi estas mirinda paŝanta ŝtono al ekzakte la ideoj ni tuj esplori en C kaj Python kaj JavaScript, ankaŭ. Sur la dekstra flanko, fine, tie estas tio, la tn skriptoj areo. Kaj tio estas nur la malplenan skribtabulo kun kion vi komencas skribi programon. Kaj Mi instruos vin ĝuste tio. Nun, mi hazarde scias kie aferoj estas ĉar mi faris tiun kelkajn fojojn. Sed mi scias, ke sub la Okazaĵoj kategorio, ekzistas tiu bloko here-- kiam verda flago clicked. Kaj rimarki se mi malzomi kaj reen en super tie sur la scenejo, Nulo vivoj ene ĉi iom rektangula mondo, atop kiuj estas verdaj flago kaj ruĝa halto signo. Iru do kaj halti, respektive. Do kion mi volas fari kiam tiu verda flago estas klakis? Nu, lasu min iri al tiu Looks kategorio. Kaj lasu min antaŭeniri kaj treni kaj faligi tion. Kaj rimarki tuj kiam ĝi ricevas proksimaj, ili estas speco de magneta. Do se mi nun iras, ĝi punto kune bele pure. Kaj mi tuj iros antaŭen kaj diri ion kiel saluton, mondo dum du sekundoj. Lasu min malzomi kaj klaku nun verda flago, kaj diri, saluton, mondo. Bone. Do jen ĉio bone kaj bona. Ne ĉiuj kiuj ekscita. Ni faru ĝin iom pli beleta. Kaj mi scias, ke en anticipe, Scratch okazas veni kun iuj belaj aĵoj kiel tiu. Tiel ludi sonon meow ĝis farita. Do ni faru ĉi. [MIAŬ] Aw, jen adorable. Kaj se mi alklaku ĝin again-- [MIAŬ] Kaj denove. [MIAŬ] Sed Mi tenas havanta reanimar Scratch. Sed mi povas fari pli bone ol tio. Kial ne mi simple treni tri el tiuj. Kaj nun ĝi estas trioble pli adorables. [MEOWING] OK, vere, ĝi estas iom timiga. Do ni devas ion intere tie. Se mi iros al Kontrolo, ĝi aspektas kiel ekzistas reale atendas bloko. Kaj tiel rimarkos se mi ŝvebi super there-- kaj lasu min fari ĉi iom pli granda. Se mi ŝvebi, ĝi tuj klaki en loko. Do atendu unu sekundo, atendu unu sekundo. Ni batis verda flago denove. [MEOWING] OK, iom pli natura, sed ne tre efika. Do tiu estas korekta, se mia programo celo estis Meow trifoje. Sed ĝi ne estas tre bone desegnitaj. Mi ia tranĉis iuj anguloj. Mi havas iom pigra. Kion sentas like-- kion mi ŝajnas esti farinta malbone, vi diras? Yeah? Yeah, en la mezo. Spektantaro: Uzita pli memoro ol vi bezonis ĉar vi uzas tiom da malsamaj linio. DAVID Malan: Jes, do pli linioj. Kaj ĝi ne nepre estu memoro, kvankam ĝi povus esti vidita kiel tiu maniero. Sed estas definitely-- Tie estas redundo. Kaj mi laŭvorte ia trenis kaj falis la samajn aferojn. Kaj se vi ia extrapolate-- se ĝi ne evidente here-- bone, kiom estus Mi Meow 30 fojojn? Mi treni kaj faligi, kiel, 30 pli paroj de puzlo pecoj. Kaj certe, estas pli bona vojo. Kaj ni vidis pli bonan manieron. Kio intuicie farus esti la pli bona maniero? Yeah, simple uzi buklo. Neniu kopio kaj pasto. Kaj efektive, iam ajn ĉi semestro, se vi komencas trovanta vin mem trenante kaj faliginte, aŭ vere kopii kaj alglui, danĝera kutimo enir ĉar tio estas nur ne tre mantenible. Ekzemple, se mi volas ŝanĝi la sono de io alia, Mi devas ŝanĝi ĝin nun en tri lokoj anstataŭ nur unu. Ĉar ja, se mi rompi tiun away-- mi nur tuj decouple gxin tiel. Lasu min ekpreni ripeto bloko, kaj tiam klaki tri, tajpu tri, ĵeti iun el tiuj for de nur malfiksi. Kaj tiam rimarkas gxin ne aspektas kiel ĝi havas, sed magnete, ĝi tuj ne nur klakas en loko sed kreskas por konveni la formon. Do tio estas bona. Kaj nun se mi klakas teatraĵo. [MEOWING] Tre bela. Bone. Kaj nun ĝi estas tre facile ŝanĝi, ankaŭ, ĉar mi povas nur ŝanĝi unu nombro en unu loko. Sed tiu, tro, ne ĉiuj ke interesa. Ni vere havas Nulo ne meow, sed moviĝas. Mi iros al Moviĝo kaj movas 10 paŝoj ene of-- whoops, mi riparos tion. Lasu min havi ŝin movi 10 steps-- fakte, ni ne faras ripeti. Lasu min ekpreni kontrolon bloko, kaj fari la sekvan ĉiam. Ĉiam, movi 10 paŝoj. Kaj klaku Play. BONE. Do dankeme, li haltas. Alie, infanoj ricevus tre ĉagrenita kiam ia perdos sian katon. Sed almenaŭ mi povas treni lin reen en la ekrano. Sed ĉi tio ne estas ĉio, kion granda de ludo aŭ kuraĝigon. Estus agrabla se eble Li resaltis la rando. Do kion ni faru? Kio konstrukcio ni bezonas havi Scratch decidas rebotar, ĉu vi pensas, eĉ se vi neniam vidis Scratch antaŭe? Yeah, en dorso. Spektantaro: Vi bezonas se bloko aŭ se-tiam. DAVID Malan: Jes, do iu ia se bloko aŭ se-tiam. Do efektive, ni havas unu el tiuj cxi tie. Tiel if-- do lasu min akiri liverita de la movado. Lasu min zomi do estas pli granda. Do kion pri ĉi tio. Ĉiam, se Sensing-- ni ne vidis tiun antaŭe. Mi bezonas Bulea esprimo. Kaj ĝi rezultas, se tuŝi kion? Se tuŝi la rando, Kion mi volas fari? Nu, se mi reirus al Moviĝo, rezultas, ho, mi povas turni ĉirkaŭe. Lasu min treni ĉi tien. Kial mi ne iru antaŭen kaj turni ĉirkaŭ 180 gradoj? Lasu do mi simple movi fine. Mi povus meti la movado en la komenco aŭ la fino. Sed logike, ĉiufoje mi movas, mi volas kontroli, ĉu mi tuŝis la randon? Ĉu mi tuŝis la randon? Ĉu mi tuŝis la randon? Tial logike volteo okazo. Do ni batis teatraĵo. BONE. Do estas iomete kalesxo, por tiel diri. Kaj cimo estas simple eraro en komputila programo. Sed almenaŭ ĝi estas laboranta. Kaj fakte, mi povas iri tien. Kaj lasu min fari ĝin ne 10 ŝtupoj je tempo, sed tio estas ĉiu kuraĝigo. Jen ĉiuj karikaturon aŭ eĉ filmo. Lasu min movi 20 paŝoj samtempe. Do 20 fojojn tiel multaj aĵoj okazas unufoje, dufoje kiel multaj, en tiu kazo. Kaj li moviĝas pli rapide. Lasu min ŝanĝi al 30. 100. 1.000. Kaj ĝi tuj vere rapida. Kaj ĉi is-- yeah, OK. Do nun ni nur rompado kun ĝi. Bone, do kalesxo. Sed ni povas treni lin el la vojo tien. Sed ni povas fari pli amuza kun tiu ankaŭ. Kion pri this-- li estas renversita. Sed rezultu Scratch-- kaj ekzistas reale, Mi devas disclaim, neniu akademia valoro al kion mi faros. Sed se mi malfermas la mikrofono, ni haltigi lin kaj fari ion kiel tiu. Ouch! [LAUGH] Kiu estis adorable. Dankon. Nun, jen kion mia voĉo aspektas kiel kiam mi krii Ouch. Mi ne pensas ke ni kaptis vian ridon. Estas bone. Lasu min savi ĉi kiel "Ouch." Ni savu tion kiel "Ouch". Nun ni reiru al Skriptoj. Kaj nun mi need-- ni vidu, Sound. Ho, ludi sonon Ouch. Do se mi tuŝi la rando, mi unua ludita ouch kaj tiam turni ĉirkaŭe. Kaj nun ni metis lin en la mezon. [Dirante "Aj"] Duoble rapida. BONE. Sed estas laŭvorte faras kion mi diras. Tial estas fakte ĝusta, ĝi estas nur iom ĝena rapide. Do ni aldonu ion pli interese ĉi. Lasu min reale malfermiĝi Kiu mi faris anticipe, aptly nomita Pet la Kato, kiu faras tion. Jen la skripto ĝis tie. Kial tuj do en la angla terminoj? Kio ĉi tiu desegnita por fari? Yeah, ni iru some-- yeah? Spektantaro: Kiam vi dorlotbeston la kato, ĝi meows. DAVID Malan: Jes, do kiam vi dorlotbeston la kato, ĝi tuj Meow. Do alivorte, ekzistas nun oni ĉiam buklo ankoraŭ, kombinitaj kun kondiĉo, kombinitaj kun Bulea esprimo, kombinita kun paro de funkcioj, la efekto de kiu, kiam mi ludas tiu programo, estas nenio okazas ĝis mi movas la kursoron pli kaj pli kaj pli kaj-- [MIAŬ] Tiam estas kvazaŭ karesante la kato. [MIAŬ] Nur unufoje vi reale movi la kursoron super li. Nun mi ankaŭ ekfrapis ne dorlotbeston la kato, kiu faras tion anstataŭe. [MEOWING] Do li nur konstante meowing. [MEOWING] Sed se mi iras tro close-- [MEOWING] [ROAR] Do kiel tio funkcias? Nun mi nur havas dudirekta forko en la vojo. Se tuŝinte musmontrilo, tiam ludi la leono sono. Alie nur ludi la meow sono, kaj poste atendi tri sekundojn por ke ĝi estas speco de farado tre trankvile. Bone. Do jen kombinante iuj pli ideoj ankoraŭ. Ni rigardu ĉi ekzemplo Mi vipis nomas fadenoj. Kaj ĉi tiu estas fundamente malsama en tio ĝi utiligas esprimilo de multaj programlingvo nomas fadenoj, la kapablo de programo por laŭvorte fari du aferojn samtempe. Efektive, tiuj tagoj se vi uzas Google Docs aŭ Microsoft Word, kaj via dokumento estas konstante estanta literumi-kontrolita kiel vi type-- aŭ vi batis Komando-P aŭ Kontrolo-P kaj print ion, ĝi estas presi dum vi daŭrigas tajpadon. Programoj hodiaŭ povas ja fari multoblajn aferojn samtempe, ĵus ŝatas en Scratch tie. Do jen, mi havas du sprites Nun, birdo kaj kato. Kaj se mi alklaku unu el tiuj karakteroj unuope, Mi vidas nun la birdo skriptojn en supra dekstra. Nun mi vidas la kato. Birda, kato. Do ĉiu el ili havas sian propran skribon. Sed rimarki, kion enigmo peco ili ambaŭ komencas kun? Kiam verda flago clicked. Kaj birdo, kiam verda flago clicked. Do kiam mi klakas la verdan flagon, ambaŭ de tiuj skriptoj aŭ programoj tuj kuri en paralela. Kaj vi rimarkos ke la birdo estas nur mindlessly rebotar ekstere la rando. La kato klare estis planita kun strategia avantaĝo. kaj-- [ROAR] Bone. Do la kato kaptis la birdon en tiu kazo. Kial estas tio? Nu, avizo unua ni nur havas la birdo ĵus mindlessly irante al tiu komenca loko, kaj tiam por ĉiam, se ne tuŝi la kato, simple kopii. Kaj se vi estas sur la rando, resalto. Kaj simple movi. Kaj se vi estas sur la rando, resalto. Sed la kato, dume, havas iun aldonan logiko kiu diras this-- unua, nur tiel ke tio ne tute partian kontraŭ la birdo, rimarki ke mi havas uzita verda enigmo peco tie kiu fakte reprenas hazarda. Karakterizaĵo de multaj lingvoj estas doni Vi hazarda aŭ pseudoaleatorios nombroj. Do en ĉi tiu kazo, la kato komence elektas hazarda nombro inter, kiel, 90 gradoj kaj 180 gradoj, esence, do ke ekzistas iom da varianco. Kaj tiam por ĉiam, se kortuŝa la birdo, ludi la leono sono. Alie, nur atentigi al la birdo. Atentigi al la birdo. Punkto al la birdo, kiu estas enigmo peco al si en tiu kazo. Nu, ni povas fari unu alia afero ĉi tie. Lasu min malfermi la okazaĵoj programo tie. Kaj tie ni denove havas du sprites, kiu aspektas kiel ĉi tiuj du marionetoj tie. Kaj kio estas interesa ĉi tie estas tio. La oranĝo ulo havas tiun fiksita de puzlo pecoj tie. Ĉiam faras la following-- se la spaco trinkejo estas premita, tiam diru, Marco, kaj tiam transdonita evento. Kaj dume, la blua ulo tie havas this-- kiam vi ricevos la evento, diru Poluso. Do rezultas en Scratch kaj en aliaj lingvoj, ekzistas manieroj por du programoj aŭ du skriptoj, en tiu kazo, al intercomunican por ke kiam mi batis la spaco trinkejo, li diras Marco. Kaj la alia oni aŭdas ke, por tiel parolu, kaj diras Poluso en respondo. Do vi povas skribi programojn kiuj vere interagi tiamaniere. Kaj se mi tion oni anstataŭe, Mi povas eĉ aldoni variabloj, nur uzante unu sprite tiukaze. Ĉi tiu estas speciale ĝena. [SEAL Barking] Nun, avizo sur la dekstra ni havas kelkaj aldonaj logiko super tie. Kiel mi halti ĉi sigelon de bojante? [SEAL Barking] Ĝi aspektas kiel sur la dekstra flanko estas kio estas ludanta la sono. Sed ĝi estas nur ludanta sonas kvazaŭ veron? Se variable-- oranĝo block-- silentigita estas nulo. Kiel mi ŝanĝu silentigita al esti 1, Signifanta vera, klarigu silentigita? Ŝajne, la alia skripto, mi povas batis la spaco trinkejo, kaj nun li haltas. Do ni povas havi tiun interkomunikado trans skriptoj, tiel, por nur dividi variablon trans la du tiel. Nun, ĉi tiu estas ne ĉiuj kiuj interesa. Ni iru antaŭen kaj fari tion kaj kombini multe de tiuj ideoj kun ĉi programo tie. Antaŭ ni faru tion, kvankam, Kiom proksimume unu volontulo? Lasu min preni la premon ekstere de mi ĉar mi ne vere ludi ĉi tiu ludo. Ni havas ulo ni ne vidis antaŭe. Vi devas esti komforta venas supren sur scenejo ĉi tie, sur fotilo. OK, venu supren. Tre kuraĝa. Kiel vi nomiĝas? Idriso: Idriso. DAVID Malan: Pardonu? Idriso: Idriso. DAVID Malan: Idris, agrable renkonti vin. Venu supren. Kaj nun, en via propra movebla telefono, ĉu vi ludas Pokemon GO? Idriso: No DAVID Malan: Ĉu vere? Idriso: Jes. DAVID Malan: Bone. Bone. Bone, agrable renkonti vin. Venu super. Mi ne ankaŭ ne. Do ni elkompreni kune kiel ludi ĉi, kion iu reale iris kaj implementado en Scratch ŝanĝante la katon al esence malsamaj karakteroj ĉiuj kune. Kaj se mi fullscreen ĉi tie, ni tuj vidi la sekvan ludon kune. Ankoraŭ ŝarĝas, ankoraŭ ŝarĝas. Trafos. Lasu min fari tion. Trafos. Tiu ludo estas tiel granda ke ĝi frakasis. Staras. Provu ĉi denove. Trafos. Bone. Tie ni iru. BONE. Verda flago. Do jen ni iras. [MUZIKO Ludanta] Elekti la mezo nivelo tie. Klaku la blua ulo tie. Bone. Kaj vi povas uzi la sago keys-- supren, malsupren, maldekstra, dekstra. Nun ni konsideru kiel ni this-- kaj tiam sekvu la karaktero tie. Yep. Nun klaku lin per la muso. Ho jes. Moviĝi. Kie estas la sagon? Jen. Do alklaku tien. Yeah. Bone. Do nun, mi diris ke vi havas Poke pilko, ke se klaki ĝin, ĝi faros tion. Tre bona. En praktiki por hodiaŭ, mi trovis tiun version de la ludo fakte ne tre malfacila. Do se vi volas iri ree tien, marŝi malsupren por ĉi Poke pilko. Kaj poste iru preni rajton. Provu klakante sur ĝin. Ho, vere, tio estas la vendejo, ŝajne. OK tiel fermi tion. Neniam faris tion antaŭe. Eble iru al tiu afero ĝis tie. Ho, tie vi iras. Atendu, jen unu estas tie. Ho, tie estas alia. BONE. Malsupren. Yeah, klaku. OK, tio estas tre bela. Okej, tre bone farita. Tiu ludo ne estas tre malfacila. BONE. Gratulojn. Tie, ni havas CS50 streso pilkon por vi. Sed pripensu por nur momento kio kelkaj el la takeaways estas tie. Facila ol la reala ludo, ŝajne. Sed ĉiuj ni iras sur tie estas karaktero ke probable havas ian de buklo asociita kun ĝi. Tio ne estas kato. Estas tiu karaktero anstataŭe. Kaj ke buklo estas ĝuste konstante dirante, se supren sago premis, se malsupren sago premis, se maldekstra sago premis aŭ dekstra sago premis, iru supren aŭ malsupren aŭ dekstra aŭ maldekstra. Aŭ se estas alia enigmo peco tie kiu diras tuŝinte alia sprite, tuŝinte unu el la karakteroj al la Poke pilko, se tuŝi, tiam faru tion. Do ĉiuj la ideoj ni havas estis uzante ĝis nun vere povas nur esti aplikita en tiu aparta kunteksto ludi tiun ludon, ankaŭ. Lasu min antaŭeniri kaj tiros supren unu alia tie, fakte. Lasu min antaŭeniri kaj tiros ĝis, ni diru, tiu. Tio estas io ni remiksis. Farita de unu el niaj studentoj en Cambridge, kaj tiam mi iris traen kaj ŝanĝis preskaŭ ĉiu petskribo de Harvard al Yale tiu tempo. Ĉu iu ŝatas konkurenci kontraŭ la hederoj tie en alia amasiĝo de ĉiuj tiuj ideoj? Venu malsupren, jes. Kiel vi nomiĝas? DINO: Dina. DAVID Malan: Adina? DINO: Dina. DAVID Malan: Dina, venu malsupren. Bone, Dina. Do tiu ludo ricevas pli malfacila kaj malfacila, ĉar en ĉi tiu ludo, ekzistas variabloj uzitaj tiel ke estas konstante konservanta trako de kiu nivelo vi estas en la ludo. Tiel agrable renkonti vin. Venu ĉi tie. Kaj tiel la celo tie estas ordigi de fari vian vojon tra labirinto ke tiu studento implementado. Kaj simple agordi la scenejo, ĉiu el tiuj bildoj sur la ekrano estas liaj propraj sprite, lia propra karaktero. Do jen defaŭlte katoj, sed la studento ŝanĝis ilin al la diversaj hederoj logos tie. Kaj tiam vi vidos, ke nur uzante kondiĉoj kaj maŝojn kaj funkcioj kaj pli, vi ricevas tion. [MUZIKO Ludanta] [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Yeah, OK. Yeah, plu iri. Unua nivelo de tre facila. Vi ĵus devas iri tien. Sed denove, pripensu, tio estas nur buklo aŭskultante sagon keys-- supren, malsupren, maldekstra, dekstra. Kaj nun sensing bloko. Tre bela. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Tre bela. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Tre bela. Sufiĉe facila, Crimson. Bone. Levels-- uh-oh. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Kaj denove, en tiuj tri Harvard krestoj, Vi nur devas logiko dirante se sur randon, resalto. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] OK, kion vi faras estas pli interesaj ol kio. Tre bela. Tre bela. Uh-oh. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Mi pensas vin devi oferi mem. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Rapide! [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Nice. Estas bone. Vi ricevos ĝin. Jes, jes! Tre bela. [Huraado] [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Nice! [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Akiris ĝin. Venu! Dua al lasta nivelo. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Bone. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Jes. Bona uzo de variabloj tie. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Jes. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Nice. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Estas bone. Ni alvenis al atingi la finon. Tie. Ho! [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Kuru malfrue hodiaŭ, sed ĝi estas gonna esti valoras. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Vi povas fari ĝin! Yeah! [Huraado] [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Ĉi tiu estas vere malfacila. [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Ni donos al vi du pli vivoj. Ĉu vi povas fari ĝin? [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] Bone. Kiel pri granda ronda de aplaŭdoj tamen. Vi venis al la dua al la lasta nivelo. Dankon. [Aplaŭdo] Do tio estas nur por diri kiom vi povas fari kun ĉi tiuj specoj de aferoj. Kaj realigi, ankaŭ, ke kiam enigmo pecoj ne exist-- kaj efektive, ĉi tiu tuj estos unu de la potencoj kun la unua problemo aroj kaj beyond-- estas reale krei vian propran. Kaj tio estas nur fragmento de unu el la ekzemploj Vi povos ludi kun enreta, kie se vi ne konstruis en Scratch iu kiel tuso puzlo peco, vi povas reale fari ĝin vi mem. Kaj tiel ĉio ĉi kaj pli atendas. Kaj simple pentri finaj bildo de ĝuste kion estas antaŭen en vendejo por la klaso por vi, bazita sur kelkaj bildoj el samklasanoj pasinteco, permesu al mi dim la lumoj unu lastan fojon kaj montri vin CS50. [MUZIKO Ludanta] Bone. Estas tio por CS50. Kuko estas nun servis. [MUZIKO Ludanta]