[INGAY SA LIKOD] Gumagana ba? PATRICK REBESCHINI: Maaari naming magsimula. OK. Malaki. Magsimula na tayo. Kaya ito ay ang aking pinakamalaking kasiyahan upang tanggapin ka sa lahat dito ngayon para sa unang lecture ng, well, Panimula sa Computing at Programming. Kilala rin bilang CS50 o well, CPSC 100, opisyal dito sa Yale. Kaya hindi namin maaaring maging mas nagaganyak upang tanggapin ka lahat dito. Ang pangalan ko ay Patrick Rebeschini. Ako ang ulo magtuturo para sa klase. dito ako na kumakatawan sa isang grupo ng tungkol sa 60 mga miyembro ng kawani na gagana sa iyo sa buong semester. Ang numerong ito ay halos 60 ng sa amin. Ngunit kasama ang mga hindi pangkaraniwang antas ng commitments na namin ilagay sa ito klase, gumagawa CS50 klase sa Yale University na nag-aalok ang pinakamalaking antas ng suporta sa lahat ng sa iyo. At hindi namin maaaring maging mas maipagmamalaki ng nag-aalok ng ito klase here again. Sa katunayan, bilang ikaw ay madaling makaranas, CS50 ay higit pa sa isang klase. Ito ay isang komunidad. At ikaw ay maging bahagi sa lalong madaling panahon ng komunidad na ito. Ito ang ikalawang taon ay Yale ay nag-aalok na ito class. Kami ay pagbuo ng sa matinding tagumpay ng nakaraang taon, kung saan sa unang pagkakataon, dito sa unibersidad na ito, undergraduate pag-aaral assistant ay naangkop sa classrooms. Nagsimula ang lahat sa ito klase noong nakaraang taon. Kaya tulad ng alam mo, ang klase ay itinuro sama-sama sa Harvard University. Upang turuan ang kursong ito kami relying-- aming makakaya bilangin sa mahusay na kadalubhasaan ng David Malan at ang Harvard team. Kaya David ay pagtuturo CS50 para na rin, 10 taon na ngayon. At sa bawat taon siya ay naging patulak ang mga hangganan at pagpapabuti ng karanasan sa silid-aralan. Muli, hindi namin maaaring maging mas masaya na magpatuloy na ito pakikipagtulungan sa kanila. Sa katunayan, isa sa mga pinaka-interesante bahagi, Aking sasabihin tungkol sa pagtakbo ang klase ngayon, kapwa sa Harvard at dito sa Yale, ay ang talagang hindi kapani-paniwala cross-pagpapabunga ng mga ideya, naglalayong sa pagpapabuti ng pag-aaral na karanasan sa inyong lahat. Kaya bilang isang resulta ng mga ito malawak pakikipagtulungan sa pagitan ng dalawang unibersidad, CS50 ay ipinagmamalaki na ipahayag ang bagong bersyon na ito taon may kapansin-pansin na mga pagbabago. David ay ang lahat ng sabihin sa amin tungkol sa mga ito ngayon. Kaya Mangyari lamang na ito pagkatao sinabi, mangyaring sumali sa akin at maligayang pagdating sa bigyan ng malaking ikot ng papuri upang salubungin si David at Harvard koponan dito sa Yale. [Palakpakan] David MALAN: Thank you. Thanks. Ito ay CS50, Harvard University ni at pagpapakilala Yale University ni sa intelektwal negosyo ng computer science at ang sining ng programming. At kung ano ang ibig sabihin nito ay na ang kursong ito sa huli, ay tungkol sa paglutas ng problema. Sa katunayan marami sa inyo baka ay nagsilabas sa mga high school o ay may nagastos sa nakalipas na dalawang taon nagtataka kung ano ang ilan sa iyong mga kaibigan ginawa noong nakaraang taon o sa iba pang mga klase. At gayon pa man, ang katotohanan ay, hindi mahalaga kung ano ang aming gawin sa dulo ng araw sa klase na ito, ito ay pagpunta sa maging tungkol sa paglutas ng problema. At dahil dito, marahil kumuha ilang mga muling pagtiyak sa ang katunayan na 73% ng mga mag-aaral na kumuha ito klase, parehong dito sa Yale pati na rin sa Harvard, na hindi kailanman kinuha ng isang CS klase bago. Kaya't kung ikaw ay upo dito sa ang madla ngayon nagtataka kung bakit ikaw ay upo dito sa madla ngayon, o marahil ka lamang Sinundan kasama ang ilang mga kaibigan, o marahil kayo ay isang maliit na kakaiba tulad ng sa kung ano ang computer science at programming ay, napagtanto na ang karamihan ng iyong mga kaklase sa kaliwa at sa kanan sa inyo ay very much sa parehong demographic. At sa katunayan, kung tiningnan namin sa nakaraang taon istatistika sa loob ng mag-aaral katawan ng CS50, parehong dito at sa Harvard, 58% ng mga mag-aaral ilarawan ang kanilang sarili bilang mas mababa kumportable. 9% ay mas kumportable. At pagkatapos ay 33% ay isang lugar sa pagitan. At walang pormal na kahulugan kung ano ang kahulugan ng mga bucket. Ikaw uri ng malaman kung ikaw mas kumportable kung nasaan ka. Ikaw ay pakiramdam ng isang maliit na nababalisa may marahil pagiging sa klase. hindi ka pa sigurado kung ang isang computer agham klase ay huli para sa iyo, at mapagtanto na ikaw ay sa mga lubhang magandang kumpanya. At sa katunayan ang grading, at ang pagtatasa, at ang feedback, at ang lahat ng iyon suporta istraktura sa klase ay huli very much indibidwal. Higit pang mga kaya kaysa sa karamihan ng anumang iba pang mga klase sa pamamagitan ng disenyo. At sa katunayan, kung ano ang sa huli bagay sa klase na ito ay hindi kaya magkano kung saan ang dulo up na may kaugnayan sa iba, ngunit kung saan ka, sa linggo 11 o huling, at kamag-anak sa iyong sarili sa week 0 here aming unang. Kaya kung ano ang ibig sabihin nito? Well, ito ay nangangahulugan ng mga 73% ng mga mga mag-aaral noong nakaraang taon na ay hindi kailanman kinuha isang CS klase bago, sa pamamagitan ng simulan ng semestre sila ay dabbling sa isang wika tinatawag Scratch, na kung saan namin ang aming sarili ay makikita dito ngayon. At sa pamamagitan ng dulo ng semester ay sila nawala sa pamamagitan na ito buong listahan ng mga hamon. Na nagsisimula sa isang wika na tinatawag c. Pagpapatupad, kung ano ang sa unang tingin, pagpunta upang maging isang bit ng isang hamon para sa ilang, ngunit medyo gratifying kapag nakalikha ka makakuha Super Mario nagba-bounce pataas at pababa ng pyramid ipinatupad, albeit, sa pamamagitan lamang isang bagay na tinatawag na ASCII art. Pagpapatupad huling year-- ano ang mga mag-aaral noong nakaraang taon pagkatapos ay pagkatapos na ay ipatupad ang kanilang mga sariling Caesar cipher at Vigenere cipher. Kaya encryption algorithm na kung saan maaari mong scramble impormasyon at pagkatapos ay ipaliwanag impormasyon upang magpadala ng lihim na mensahe. Ang laro ng 15. Kung tandaan mo mula sa pagkabata o ilang mga partido pabor, na maliit na plastic laro kung saan mo ilipat ang mga numero up, down, kaliwa at kanan upang subukan upang makakuha ng mga ito sa pagkakasunud-sunod, aktwal na pagpapatupad laro na at paglutas ng logic kinakailangan doon. At pagkatapos namin dabbled sa forensics noong nakaraang taon. Kaya sa pamamagitan ng mid-semester, mga mag-aaral na hindi kailanman ginagamit ang kanilang mga keyboard para sa layuning ito bago, ay sumusulat software upang mabawi, kaya na magsalita, JPEG o mga ritrato isa na hindi nabusog sinasadyang tinanggal mula sa isang digital memory card mula sa isang camera. Recovering lihim na mensahe mula sa loob ng isang bitmap imahe, at iba pang tulad ng mga uri ng graphics pati na rin. Pagkatapos namin lumipat sa pagbibigay ang buong klase ng isang diksyunaryo. Lamang ng isang tunay na malaking text file may 150,000 mga salitang Ingles. At lahat ng tao ay hinamon upang kahit papaano ay basahin, kaya na magsalita, mga salitang iyon sa memorya. Into memory ng computer. At pagkatapos ay sagutin ang mga katanungan ng form, ito ay isang salita? Ito ba ay isang salita? Ito ba ay isang salita? Talagang lamang pagpapatupad isang spell checker. At pagkatapos ay hamon sa bawat isa na may isang malaking board-- isang lider board upang makita kung sino ay maaaring gamitin ang hindi bababa sa halaga ng memorya, sa hindi bababa sa halaga ng oras upang aktwal na pagtiyak ng pagbaybay malaking mga dokumento. Kami ay transitioned mula sa pagkatapos sa pagpapatupad ng mga sariling web server. Kaya hindi paggawa ng mga web page sa mga wikang tulad ng HTML at CSS, kung hindi ka pamilyar. Ngunit ang tunay na pagpapatupad sa server na nakikinig sa internet para sa mga kahilingan mula sa mga browser at pagkatapos ay pagtugon sa mga kahilingan. Pagkatapos pagpapatupad ng aming sariling e-kalakalan tulad ng website, kung saan mga mag-aaral ay maaaring bumili at magbenta ng mga stock. Pagguhit sa halos real time stock quotes mula sa Yahoo Finance. At nagpapahintulot sa mga mag-aaral upang makita kung paano ang kanilang portfolio develops. At pagkatapos ay sa wakas ng isang mash up ng Google News at Google Maps kung saan mag-aaral sa pamamagitan ng kataga ng tadhana end nagkaroon ng kakayahan upang i-click, at bilog, at paghahanap sa isang mapa ng Google. At pagkatapos ay makita ang lahat ng ang mga artikulo ng balita na Isasama proximal sa mga partikular na lugar. Kaya tunay na pagpunta mula sa zero sa 60. At kasama ang paraan sa pagkakaroon ng kung ano ang nagkaroon kami noong nakaraang taon na tinatawag na, Hacker karagdagan. Iyon itaas ang bar karagdagang para sa mga mo na maaaring tunay mabuti ay may isang mahusay halaga ng karanasan ng pagiging sa na 9% ng mas kumportable. Kaya Napagtanto na mayroong isang mataas na kisame kahit sa loob ng mga hamon para sa mga mag-aaral nagmumula sa isang iba't ibang mga background. Dahil sa dulo ng araw, hindi namin sa huli nakatutok lubos na lamang sa mga ito. Ngunit kung ano ang ginagawa ito ibig sabihin, paglutas ng problema? Kaya sabihin imungkahi na magdistila namin ito tulad nito. Kaya paglutas ng problema ay talagang lamang ang ganitong uri ng larawan. Kaya nakuha mo na inputs sa ilang mga problema, isang bagay na iyong aktwal na nais upang malutas. Ang layunin ay upang makakuha ng outputs, isang solusyon sa problemang iyon. At pagkatapos ay sa gitna ay ano ang makikita namin tumawag sa isang itim na kahon. Hindi mo kinakailangang malaman o kahit aalaga kung ano ang nasa loob na itim na kahon. Lahat ng alam mo ay na kapag feed mo input sa mga ito, ikaw sana ay makakuha ng output o isang solusyon mula dito. At habang ngayon kami ay tumingin kapwa sa mga inputs at outputs, namin makikita mahabang panahon, at sa ibabaw ng course ng buong semestre, focus sa kung ano ang nasa loob na kahon. At sa ganyang bagay ay kasinungalingan isang bagay na tinatawag na algorithm. Hakbang sa pamamagitan ng hakbang na mga tagubilin para sa aktwal na paglutas ng ilang mga problema. Ngunit kung ano ang isang halimbawa ng ilang mga inputs? Kaya siguro isang simpleng bagay sa simulan ng bawat taon ng paaralan, ang isang tao maaaring nais na kumuha ng pagdalo. Kaya maaari naming gawin ang isa, dalawa, tatlo, apat, lima, anim, at kung paano ko panatilihin track ng impormasyon na iyon. baka ako pumunta lamang isa, dalawa, tatlo, apat, lima, anim. At gamitin lamang uri ng single digit. O maaari ko aktwal na-record Ito ba ay isang maliit na mas mahaba term. At kung paano ko ay kumakatawan sa lahat ang mga tao sa kuwartong ito? Well, maaari ba akong gumawa ng isang bagay tulad ng, OK. nakikita ko sa isang tao. Lahat tama. nakikita ko ang ibang tao, isang ikatlong tao, at iba pa. Ngunit walang sinuman ang binibilang people like this. Kaya literal, karamihan sa atin, kung hindi kami kahit na pagpunta sa gumuhit ng anumang bagay sa lahat, marahil ikaw ay pagpunta sa pumunta isa dalawa tatlo apat, siguro makakuha ng isang maliit magarbong, lima, anim, pito, walo, siyam, sampu at iba pa. At iyon ay talagang isang sistema na tinatawag na unary. Uno, tulad uno implying isa, kung saan mo na lang ay isang titik ng alpabeto. Lamang ka na got ito hash mark. At ako, para sa kahusayan, lamang Drew mga hash mark, sa huli bilang tuwid na linya. Ngunit maaari kong mailayo sila kasing liit stick figure. Saan upang kumatawan isang tao, isang input, Ko na lang gumuhit ng isang stick figure o isang hash mark. Ngunit ito ay hindi lahat na nagpapahayag. Kung ang lahat ng mayroon ako ay ang mga hash mark, pabayaan mag-isa stick figure, kung paano ko ay kumakatawan isang bagay tulad ng bilang 15? O 15 mga tao sa kuwarto? Ko ay maaaring may sa gawin ang isang bagay tulad ng 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. Ito lamang ay hindi scale tunay mabuti. Bilang ng inputs makakuha ng malaking, kami kailangan ng isang mas mahusay na sistema kaysa ito. At ito ay lumiliko out na ang mga sistema na gamitin ang computer ay hindi lahat na iba't ibang mula sa kung ano ikaw at ako malaman. Sa katunayan, karamihan sa mga tao sa kuwartong ito, kahit na ikaw ay kabilang sa mga mas kumportable, ay hindi kinakailangang malaman kung paano ang iyong Mac o PC talagang gumagana, marahil mo na hindi bababa sa narinig, na sa ilalim ng hood ay 0 at 1 ni. Ang tinatawag na binary system. Kaya sa katunayan, mga computer ay may higit sa lamang hash mark sa kanilang bokabularyo, ngunit hindi bilang magkano ng isang bokabularyo bilang namin ang mga tao. Sa katunayan, namin ang mga tao huwag gamitin binary. Bi ibig sabihin 2, 0 at 1. Ngunit decimal, deca ibig sabihin ay 10, 0 hanggang 9. Kaya kami ay may isang pulutong mas makahulugan kakayahan sa aming normal na tao mundo. Ngunit Gusto ko magtaltalan na ang mga sistema, binary, at decimal, at lahat ng bagay sa pagitan ng at sa hinaharap, ay aktwal na ang lahat ng masyadong pamilyar. Halimbawa, isaalang-alang ito halimbawa dito, 123. Kaya ito ay tunay na, siyempre, isang bilang alam namin bilang 123. Ngunit ang lahat ko na lang Drew ay lamang na ito pattern ng mga simbolo, glyphs kaya na magsalita. Pagsunud-sunurin ng mga hugis sa board sa tisa. Ngunit kung bakit ginagawa namin kaagad at intuitively maunawaan ito bilang 123? Well, kung ikaw ay tulad ng ako sa mababang paaralan, ikaw ay malamang na natutunan na ito ang 1s haligi, ito ay ang 10s haligi, ito ay ang 100s haligi. At kung bakit ay na kapaki-pakinabang? Well, ito ay simpleng arithmetic mo na ngayong gawin upang makakuha ng mula sa isang pattern ng mga simbolo sa isang bilang naiintindihan namin intuitively. Ay ano, 100 beses 1, at pagkatapos ay 10 beses 2, at 1 beses 3, na siyempre ay lamang 100, at ito ay 20, at ito ay tatlo. At kaya kung idagdag namin ang mga together-- ah. Kaya ganyang bagay ay namamalagi ang uri ng pangangatwiran likod ng kung bakit ang set na ito ng mga simbolo nangangahulugan ng isang bagay tunay at numeric. Well, mga computer gawin ang eksaktong parehong bagay, Kundi ang kanila lamang maaaring bilangin bilang mataas na bilang isa. Sapagkat ako ay able sa mabibilang bilang mataas na bilang tatlo. At sa katunayan, kung iningatan ko pagpunta ko pumunta bilang mataas na bilang siyam sa system na ito. Computers lamang magkaroon zero at mga bago sa kanilang alpabeto. Kaya kung ano ang ibig sabihin nito? Well, ito lamang ay nangangahulugan na kung ang isang computer Nais ni upang kumatawan, sabihin ang bilang 0, siguro gamit ang tatlong characters-- tatlong mga titik ng alpabeto kaya na magsalita, na kung paano ang isang computer kumakatawan 0. Kaya hindi lahat na nakakatakot so far. Ito ay eksakto kung ano ang aming mga kawani na tao ay gawin. At sa katunayan, ang karamihan sa atin gusto lang huwag pansinin ang mga nangungunang mga zero pa rin. Ang isang computer, kung ito ay nais sa tindahan ng mga numero 1, lumiliko out ay pagpunta sa gawin ito. At isang computer upang mag-imbak ang bilang 2 ay hindi pagpunta sa gawin ang unary system, na aking alluded sa mas maaga. talagang ito ay pagpunta sa gawin ito. At ito ay marahil kung saan ang pattern ay nagsisimula upang maging mas mababa halata para sa karamihan folks. Iyan ay 2, ito ay 3. Pausisa, ito ay ngayon 4. At ngayon ito ay tunay na ginagawa mukhang marahil misteriyoso, ngunit ito ay hindi kung isaalang-alang namin ano binary talagang ibig sabihin nito. Ito ay nangangahulugan na ikaw ay may dalawang titik ng iyong alpabeto. Kaya dalawang posibleng mga letra para sa bawat placeholder. Kaya na talaga ay nangangahulugan na kami ay pagpunta sa kailangan ng isang 1s lugar, o 2s lugar, isang 4s lugar at pagkatapos ay 8, at 16, 32, at 64. At ano ang mga pagkakaiba doon? Kung paano ang mga ay 1, 2, 4, 8, 16, 32, 64. At bago namin ay 110, 100,000, 10,000. Ano ang pagkakatulad doon? At kung ano ang pattern? Yeah. MAG-AARAL: Powers ng 2 sa halip ng mga kapangyarihan ng 10. David MALAN: Oo. Powers ng 2 sa halip ng mga kapangyarihan ng 10. At kaya kung Nais kong panatilihin pagpunta, 8, 16s at iba forth-- ngunit ngayon kung ikaw ay may ganitong uri ng bakas, na ngayon ang binary system ay talagang pretty tapat. Bakit ito pattern ng 0 sa mundo ng mga computer 0? Well dahil sa ito ay 4 na beses 0, 2 beses 0, 1 beses 0 at makakuha ka 0. Bakit ito ang number 1? Same pangangatwiran, ngunit ngayon kami magkaroon ng isang 1 sa 1 haligi. Bakit ito 2? Mayroon kaming isang 1 sa 2s haligi. At kung paano pagkatapos ay gawin Kinakatawan ko sabihin, ang bilang 7 in binary? Say louder. STUDENT: Three 1s. David MALAN: Three 1s. Kaya 1, 1, 1 dahil kami lamang ang kailangan 4 plus 2 plus 1 ay nagbibigay sa akin 7. Lahat tama. Kaya mula there how ginagawa namin kumakatawan 8 na may 3 mga placeholder? Yeah. MAG-AARAL: 1, 0, 0, 0. David MALAN: Yeah 1, 0, 0, 0. At pa siguro, ako uri ng technically kailangan magdagdag ng isa pang placeholder sa board. Kung gusto kong upang magkasya na ako sa katunayan kailangan na gawin ang isang bagay tulad nito. Kaya ko talagang kailangan upang gamitin ngayon ang 8s haligi, at na fine. Ngunit ang hindi pangkaraniwang bagay sa computing ay na na ay pagpunta sa gastos sa amin ng isang bagay. Kailangan mo ng karagdagang RAM sa iyong computer ngayon. Kailangan mo ng karagdagang memory dahil kailangan mo ng isang bagay pisikal upang mag-imbak na karagdagang bit, kaya na magsalita. Binary digit. At sa katunayan ang lahat na nangyari dito, tulad ng decimal system, kung panatilihin namin ang pagdaragdag ng mga numero ng up at up at up, pumunta kami sa 5 hanggang 6 na 7 hanggang 8 ito ay tulad ng pagdala ng 1, literal. At pagkatapos ay lahat ng iba pa napupunta bumalik down sa zero. Ngunit paano namin aktwal na kumakatawan ang mga bagay na pisikal sa isang computer? Well, sa dulo ng araw, ang tanging pisikal input pagpunta sa aking computer dito ay ito kapangyarihan kurdon, kaya koryente o mga electron mula sa pader. At kaya kung paano ako makakakuha ng mula sa isang bagay pisikal na tulad ng sa tunay na na kumakatawan sa isang ideya na tulad nito sa halip. Well, kung ano ang maaari naming gawin? Maaari naming isaalang-alang na, lahat ng karapatan, siguro kung koryente ay umaagos Kaya kong mag-imbak ito at kumapit sa mga ito. At kung ako humahawak sa sa ilang mga koryente, na lamang ang pagpunta sa arbitrarily kumakatawan sa isang 1. At kung hilahin ko ang plug at mayroong wala doon, alam mo na lamang ang pagpunta na nagkataon ay kumakatawan sa isang 0. Kaya kung ang isang bagay ay doon, 1. Kung wala doon, 0. O maaari mong gumawa ng mga ito isang maliit na mas visual. Narito ang isang 0. Mayroong wala na interesante pagpunta tungkol sa likod ng aking phone. Ngunit kung payagan ko ng kaunti bit ng koryente sa daloy, kahit na ito ay isang maliit na maliwanag in dito, ang aking flashlight nagpunta sa. Kaya ako pag-iimbak ng isang bayad at samakatuwid, telepono na ito ngayon ay kumakatawan sa isang 1. Kaya 0 1. Kaya sa 1 iPhone kung gaano kataas ang maaari kong bilangin gamit ang ganitong uri ng diskarte? Ibig kong sabihin sa 1. Ito ay hindi lahat na nakapanghihimok. Kaya kung ano ang higit pa ang maaari naming gawin? Well sabihin makita, ay kahit sino sa kanilang telepono ngayon na maaari kong hiramin? Sinuman na may isang telepono na may isang flashlight built in? Maaari ko bang hiramin? Hindi ko kailangan ito unlock. Lahat tama. Salamat. Hayaan akong humiram ito. Lahat tama. Kaya kung ako ngayon mag-scroll pataas at dito, kung ano ako na kumakatawan ngayon? Yeah. Kaya ito ay isang tatlong dahil ito ay nasa 1s haligi, ito ay nasa 2s haligi. Kaya 1 plus 2 ay 3. At pagkatapos ay kung susubukan namin upang makakuha ng talagang creative-- oh, salamat sa iyo. Very preemptive. Lahat tama. Ako ngayon ay mayroon tatlong mga iPhone. Lahat tama. At ngayon this-- Ayaw ko gawin ang anumang karagdagang kaysa ito. Ano ako na kumakatawan ngayon? Just sevens. Ngunit kailangan ko pisikal higit pang memory sa kasong ito. Ngunit iyon lamang ang lahat ng ito ay. Maaari mong isipin na kung ano ang nangyayari on-- thank you-- loob ng iyong telepono bilang lamang pagiging isang switch na ini-naka-on at off. At kung sakaling mo na narinig ang salitang transistor. O kung sakaling mo na narinig ang marketing magsalita Intel loob, na nagsasalita sa mga klaseng hardware na ang nasa loob ng iyong computer. Intel gumagawa ng CPUs, central processing unit, na kung saan ay tulad ng mga brains sa loob ng iyong computer. At lalakip ang mga CPUs at mga bagay na kanilang na kay na magkaroon ng maraming at maraming ng mga maliliit na switch. Milyun-milyong, bilyon-bilyong mga switch na maaaring maging alinman sa on o off. Kaya mga computer, thankfully, tulad ng ating mga Mac at PC, maaaring bilangin paraan mas mataas kaysa sa 7 o 8 dahil mayroon silang paraan ng higit sa tatlong o apat na bits. Way higit sa ang katumbas ng tatlong flashlights na kami lamang nagkaroon. Ngunit ngayon ito ay nagsisimula upang makakuha ng pretty kawili-wili mabilis. Kung ako ngayon ay nais na tunay na maaaring na gawin isang bagay na mas kawili-wiling, Gusto kong maging magagawang tumalon sa isang bagay na katulad nito. Kaya ASCII, ito ay hindi tunay isang kapaki-pakinabang acronym, ngunit American Standard Code para sa Impormasyon Interchange. Ito lamang ay nangangahulugan, ilang taon nakaraan namin mga kawani na tao nagpasya, alam mo kung ano, gusto naming magawa higit pang mga computer kaysa sa lamang mga numero. Hindi namin gusto ang mga ito sa makatarungan maging mahal calculators, nais naming ma-gumawa ng mga bagay tulad ng word processing, albeit napaka-simple. Mamaya namin ay may e-mail at iba pang mga naturang media. At kaya ang mundo ay nagpasya sa ilang mga taon ago ayon sa sistemang ito ASCII, alam mo ba? Sa ilang mga uri ng programa anumang oras mo makita ang katumbas ng bilang 65, tulad ng mga pattern ng bits. At maaari naming gawin ang math dito sa board. Ang pattern ng bits na kumakatawan 65. Huwag mag-isip ng mga ito bilang 65 sa decimal. Isipin ito sa bilang nagkataon, ngunit globally, patuloy bilang ang kabisera A. At pagkatapos ay ang mundo nagpasya, alam mo kung ano? Tingnan natin ang isa pang halimbawa ng bits. At kung namin kailanman makita ang number 66, sabihin lang ipalagay na iyon ay ang capital B. Fast forward sa H at ako, kung makikita mo ang 72 o 73, na ay dapat na isang H at ng I, buong galang. At kaya hangga't ang buong mundo ay sumang-ayon sa ito. Kaya na kapag nakatanggap ka ng isang email, o makakakuha ka ng isang file sa isang USB stick, o isang bagay tulad na- kapag nakikita mo na pattern ng bits, alam mo na ito ay dapat na ito sulat o ilang iba pang mga titik. Ngunit ito ay tiyak na konteksto, kanan. Isang email programa ay maaaring bigyang-kahulugan mga bagay na ito bilang mga character, ngunit isang graphing calculator o calculator ay maaaring kumatawan o bigyang-kahulugan mga bagay na ito, siyempre, bilang mga titik. Kaya sa na sinabi, mabilis na maliit na pagsusuri. Ito ay marahil ng isang tatlong karakter e-mail na naipadala na sa akin. Sa ilalim ng hood ito ay ang lahat sa 0s at 1s, Ngunit hindi namin pakialam. Kami ay pagpunta sa simulan upang abstract sa itaas ng mga 0s at 1s sa mga titik. At kung makikita ko ang isang pattern ng 0s at 1s na talagang kumakatawan 72, hint, hint, 73, at pagkatapos ay 33, ano ang mensahe? MAG-AARAL: [hindi marinig] David MALAN: Kaya kung sa tingin mo sa likod ng isang sandali lamang ang nakalipas, HI ang mensahe ako ay sinusubukan upang makipag-usap dito dahil H ay 72, Ko ay 73, at ngayon 33-- ayaw ninyo kinakailangang malaman ito nang maaga, ngunit ito ay lumiliko out kung talagang makita pa si chart at ang sistema na ang sangkatauhan napagkasunduang taon ang nakaraan, ito ay lamang ng isang exclamation point. At sa katunayan, mayroong isang pattern ng simbolo at mga numero para sa bawat karakter na maaaring mayroon ka sa iyong keyboard. Lahat tama. Sabihin abstract karagdagang. Kung hindi namin nais na magkaroon lamang mga bagay tulad ng mga numero at titik, namin talagang nais na ipatupad graphics. Well, kung na sa iyo kailanman narinig ang acronym RGB. Ito ay uri ng petsang ngayon, ngunit ito ay pa rin uri ng doon. RGB ay pula, berde, asul. At ito ay lamang ng isang sistema na sabihing, alam mo kung ano, gamitin natin ang tatlong set ng bits. Isang set ng 8 bits, isa pang hanay ng 8 bits, at isa pang hanay ng 8 bits. At gamitin natin ang mga bits upang mag-imbak kung magkano red kami gusto sa aming screen, kung magkano green gusto namin sa aming screen, at kung magkano ang blue naming gusto sa aming screen. At ito lamang ay nangangahulugan na kung ikaw magkaroon ng isang lot-- isang malaking numero para sa red, Nangangahulugan ito na bigyan ako ng isang pulutong ng mga pula. Kung mayroon kang isang malaking numero para sa berde, bigyan ako ng isang pulutong ng mga green. At kung mayroon ka lamang ng isang maliit na bit ng asul o isang maliit na bilang tulad ng 33, bigyan ako ng isang maliit na piraso ng asul. At kung mangyari sa iyo upang pagsamahin ang mga tatlong magnitudes, kaya na magsalita, kumuha ka this-- mong bahagya maaaring makita sa ang aparato ng sine dito, ngunit ito madilim lilim ng dilaw o brown. Ngunit ito ay upang sabihin, gamit na pattern ng 8 plus 8 plus plus 8-- na pattern ng 24 bits ay kung paano ang isang computer ng gagawin tindahan na lilim ng kulay-dilaw na sa isa maliliit na tuldok sa isang pixel sa screen. Kaya namin nawala mula 0s at 1s sa decimal numero sa mga titik ng alpabeto. O mas interesante, kulay na tuldok. Well, kung ano siyempre pagkatapos ay susunod? Well, kung ano ang isang imahe na ikaw makita sa Facebook o makipag-ng email? O ang gusto? Ano ang kahulugan technically ng isang imahe? Yeah. Ano ang isang imahe na binubuo ng kung ikaw tumingin tunay malapit sa iyong screen? Yeah. Ito ay lamang ng isang buong grupo ng mga piksel. Sa katunayan, kung mong gawin ang iyong laptop siguro sa susunod, at tumingin tunay malapit na sa it-- depende sa kung paano mahal ang laptop ay at kung paano mataas na kalidad ng screen ay, maaari mong napakahusay makita ang lahat ng ang maliit na tuldok sa screen. At ang mga tuldok o pixels, na nangangahulugan na may ay 24 bits na kumakatawan sa bawat pixel sa na litrato na nakikita mo sa Facebook, o na ikaw lang kinuha sa iyong iPhone nakaraang araw. At kaya na kung paano namin makakuha ng sa mga bagay tulad graphics. Well, kung ano ang isang video? Ang isang video ay lamang ng isang hanay ng mga graphics lumilipad sa pamamagitan ng muli ang screen at muli at muli. At kaya video talaga, ay lamang kataga ng mga bits na kumakatawan grids, mga hilera at mga haligi ng mga tuldok, lumilipad sa pamamagitan ng mga imahe screen, pagkatapos larawan, ayon sa larawan, a.k.a. Motion larawan. Kaya na ito para sa mga inputs at outputs. Ang kailangan natin ngayon ay isang palagay na, ikaw malaman kung ano ang, kung gusto naming ng isang computer upang kumatawan impormasyon, kami ay may isang sistema para sa paggawa nito. Maaari naming gawin ito sa 0s at 1s sa dulo ng araw. Ngunit maaari naming abstract, kaya na magsalita, sa tuktok ng na sa gayon ay upang kumatawan pa kagiliw-giliw na mga bagay. At dito sa labas sa CS50, at sa computer science mas pangkalahatang paraan, namin ngayon tumayo sa mga balikat ng lahat ng mga taong dumating bago sa amin na may korte na out. At ngayon lamang ipagpalagay na ang mga computer maaaring kumatawan inputs at outputs. Ngunit ngayon sabihin aktwal gawin ang isang bagay sa kanila. Kaya isang algorithm ay lamang ng isang set ng mga tagubilin, hakbang-hakbang, para sa paglutas ng ilang mga problema. At kung ano ang maaaring maging isa tulad problema. Kaya ito ay isang lumang paaralan teknolohiya, ang isang phone book. At sa loob ng isang libro ng telepono ay isang ang maramihang mga pangalan at numero. At ang mga pangalan ay sa pangkalahatan pinagsunod-sunod ayon sa alpabeto. Kaya kung nais ko upang mahanap ang isang tao sa ito telepono libro tulad ng Mike Smith, kung ano ang isang tipikal na tao pagpunta sa gawin? Well, maaari mong buksan lamang it up, tumingin sa unang pahina. Hindi ako nakakakita ng Mike Smith. Lumiko sa ikalawang pahina, Hindi ako nakakakita ng Mike Smith. At lamang panatilihin ang pagpunta at pagpunta. Ito ba ay hakbang-hakbang na diskarte ay tama? Yeah. Ito ay uri ng bobo, kanan. Ito ay hindi mabisa, kanan. Dahil ito ay pagpunta sa tumagal magpakailanman upang makakuha ng sa Mike, ngunit ito ay tama. Dahil kung Mike ay dito Ako sa katunayan mahanap sa kanya. Kaya kung ano ang isang bahagyang mas makatuwirang tao pagpunta sa gawin? Baka sila pa rin buksan sa harap, at marahil lumipad sa pamamagitan ng phone book dalawang pahina sa isang pagkakataon. Dalawa, apat, anim, walo. Hindi ko maaaring aktwal na pisikal na gawin ito nang mahusay. Ngunit sa teorya, ito ay dapat na dalawang beses nang mas mabilis, dalawang pahina sa isang pagkakataon. Ito ba algorithm tama? MAG-AARAL: [hindi marinig] David MALAN: Hindi kinakailangan. Good. Bakit na caveat? MAG-AARAL: Dahil siya ay maaaring maging sa isa ng mga pahina na naka-laktaw. David MALAN: Oo. Kaya kahit na nakukuha ko ng mas malapit at mas malapit. Paano kung siya lang sinasadyang, sa pamamagitan ng masamang luck, sandwiched sa pagitan ng dalawang mga pahina na ako na lumilipad sa ibabaw? Kaya kailangan namin ng isang remedyo para dito. Kami ay talagang kailangan upang iyo ngang sabihing, maghintay ng isang minuto, siguro kung pumunta kami masyadong malayo, marahil kung kami ay pindutin ang seksyon T, para sa T darating pagkatapos Smith, pagkatapos ay dapat namin hindi bababa sa double likod ng hindi bababa sa isang pahina. Kaya fixable, ngunit may isang kondisyon isyu doon. Kaya ito ay dalawang beses bilang mabilis, ngunit maaari ka kung double pabalik lamang ng isang maliit na bit. Ngunit walang sinuman sa kanyang kuwarto, kahit na kung ikaw hindi talaga gamitin ang mga libro ng telepono anymore, ay pagpunta sa magsimula sa simula. Ano ang gagawin mo naghahanap para sa Mike Smith? Ikaw ay pagpunta upang pumunta halos sa S ni. O kung hindi mo talaga magkaroon ng ang impostor sheet sa papel, ikaw ay pagpunta sa pumunta ng hindi bababa humigit-kumulang sa gitna. At tiyak na hindi sa harap ng libro. Ikaw ay pagpunta upang tumingin pababa. At mathematically ikaw ay malamang na pagpunta sa tingnan ang seksyon M, na kung saan ay tinatayang sa gitna. At pagkatapos ikaw ay pagpunta sa mapagtanto, kung ano ang totoo? Nasaan si Mike? MAG-AARAL: [hindi marinig] David MALAN: Oo. Kaya siya ay higit sa bandang ito. At kaya kung ano ang maaari mong gawin? Well, parehong pasimbolo at literal maaari mong pilasin ang problema sa loob ng kalahating isang beses? At kung magkagayo'y talastasin ninyo na maaari mong itapon ito sa kalahati ng mga problema ang layo. At ngayon kami ay kaliwa na may panimula ang parehong problema, ngunit ito ay kalahati bilang malaki. At kaya ngayon kung ano ang hanay ng mga tagubilin? Ano ang algorithm para sa paghahanap ng Mike Smith? Ito ay ang eksaktong parehong bagay. Ngayon na ito ang mangyayari sa maging ang M seksyon at ito ay ang Z seksyon, ngunit ang pangunahing formula ay pa rin ang parehong. Pumunta halos sa gitna, hamakin, oh, darn ito. Ngayon ako sa seksyon ng T, Ko na wala na masyadong malayo. Ngunit dito masyadong maaari mong mag-aplay na parehong logic. Throw kalahati ng problema ang layo at ngayon kami ay kaliwa na may isang problema na isang-kapat ng ang laki. At maaari naming ulitin, at maaari naming ulitin, at maaari naming ulitin hanggang theoretically mayroong isang pahina lamang iniwan sa na kung saan Mike alinman ay o ay hindi. Kaya kung ano ang kaya malakas tungkol sa ideya? Ibig kong sabihin pagkatapos ng lahat, ito ay medyo madaling maunawaan. Walang sinuman ay pagpunta sa magsimula sa simula ng phone book at i-flip sa 1,000 mga pahina upang mahanap Mike Smith. Karamihan sa lahat sa kuwartong ito ay pagpunta na gawin halos ganoong uri ng algorithm save para sa pansiwang. At kaya bakit namin gawin iyon? Well, isaalang-alang ang kahusayan. Isaalang-alang lamang kung magkano ang mas mahusay na ito algorithm ay sa pamamagitan ng paglabag ito down sa mga bahagi na mga bahagi. Kaya kung ano ang una kong gawin? Ako pumili ng up ang telepono libro. At isang computer siyentipiko, at isang programmer, mas pangkalahatang paraan ito ay lumiliko out, ay pagpunta upang simulan ang pagbibilang ng lahat ng bagay sa 0. Bakit? Well, ito ay isang maliit na kakaiba na tayong mga tao count, sa pangkalahatan, simula sa isa. Dahil kung ano ang pinakamaliit na bilang maaari naming malinaw na kinakatawan batay kahit na sa aming lumang math grade school? Well, ito ay 0, kung ito ay sa decimal o binary. At kaya makikita mo makita sa mundo ng computing at programming, partikular, simulan namin pagbibilang ng lahat ng bagay mula sa 0. Kaya ko kinuha ang phone book step 0. Pupunta ako upang buksan sa gitna ng phone book. At iyon ang dahilan sa katunayan ng isang pagpapahayag ng kung ano ako did. At pagkatapos ay dalawang hakbang ay tumingin sa ang mga pangalan. Hakbang tatlong ay isang maliit na iba't ibang conceptually. Ako na humihingi sa aking sarili ng isang katanungan. Kung Smith ay kabilang ang mga pangalan, Pupunta ako sa gumawa ng isang desisyon. Kung siya ay sa gitna ng mga pangalan, pagkatapos ay ako pagpunta sa tumawag Mike. At ako pagpunta sa gumawa ng isang desisyon batay sa na piraso ng impormasyon. Gayunpaman, kung hindi, kung Smith ay mas maaga sa aklat sa kaliwa, Pupunta ako upang buksan sa gitna ng kaliwang kalahati ng aklat. At pagkatapos ay narito ang katalinuhan, Pupunta ako sa bumalik sa hakbang dalawa. Pupunta ako upang ayusin ng tumayo sa aking sariling mga balikat at lamang ulitin ang nakaraang trabaho ko. Ngunit ang trabaho ko ay may kaliwa ay mas mababa, at mas kaunti, mas at mas kaunti. Ngunit pa rin ito ay pagpunta sa trabaho. Ngunit kung Mike, sa halip, ay sa ibang pagkakataon sa aklat sa kanan, Pupunta ako upang buksan sa gitna ng kanang kalahati ng libro, pagkatapos ay bumalik sa pangalawang hakbang. Ngunit mayroong talagang isang ika-apat na sitwasyon. Mike mag dito, o dito, o dito, or-- MAG-AARAL: Hindi doon. David MALAN: Hindi doon. At sa katunayan, kung hindi natin mahulaan ang pang-apat at huling senaryo aming programa ay maaaring maging maraming surot o flawed sa ilang mga paraan. Iba Pa, umalis sa kaso na hindi pa kami nakakahanap Mike sa lahat. At sa katunayan, kung ikaw ba napansin iyong computer nagha-hang, o lahat ng ng isang biglaang salita o ilang iba pang mga programa lamang tabla nang hindi inaasahan, at kung minsan sa iyo error mensahe ay literal na. Ang program na ito umalis nang hindi inaasahan. Maaari itong maging para sa anumang bilang ng mga kadahilanan. Ngunit kung minsan ito ay isang bagay na karaniwan bilang na ito. Ang pantao programmer na sinulat ni na software ay hindi mapagtanto na, oh, may isang balik bagay na maaari talagang mangyari. At kung hindi mo isulat ang code upang makuha na ika-apat na sitwasyon, ito ay sa katunayan hindi inaasahang minsan kung ano ang computer ay maaaring aktwal na gawin. Ngayon sabihin tawagan ang isang ilan sa mga bagay na ito. So in yellow dito, ako may naka-highlight tuntunin na mula ngayon kami ay lamang pagpunta sa tumawag function. Pag-andar sa mundo ng programming ay tulad ng mga aksyon, pahayag ng mga aksyon. Kaya pick up, bukas sa, tumingin sa, tawag, bukas, bukas, mag-quit. Iyan ay isang function, isang pamamaraan, isang aksyon, ang anumang bilang ng mga kasing-kahulugan Gusto trabaho pati na rin. Ngayon kung ano ang mga bagay na ngayon sa dilaw? Kung dili, kung dili, kung iyong sino pa ang paririto, ang mga ito ay kung ano ang kami ay pagpunta sa tumawag kondisyon sa programming, o sangay, desisyon puntos, kung ikaw ay. Ngunit paano ko malalaman mo kung aling tinidor sa kalsada na kumuha, kaya na magsalita? Kailangan namin upang i-highlight ang mga tuntunin sa kanan doon, ay ang mga ito yes, walang mga katanungan. Ang mga tunay na false katanungan. Smith kabilang pangalan? Smith nang mas maaga sa libro? Smith mamaya sa libro? Ito ang mga tanong sa kung saan mayroong isang oo, o hindi, o equivalently totoo, o hindi totoo, o equivalently, isa o zero sagot. At samantala mayroong isa lamang huling piraso. Ito dito ay kung anong uri ng epekto? Kahit na o hindi ang programa mo bago, kung paano mo ilarawan kung ano ang hakbang pitong at 10 ginagawa? Ano ang sinabi mo? MAG-AARAL: Ang isang recursive na hakbang. David MALAN: Ang isang recursive na hakbang. Oo, mahalagang. Ito ay technically umuulit dito kung ikaw ay pamilyar. Ngunit kami ay bumalik sa na. Ngunit ito ay paggawa ng isang bagay nang malinaw. Muli, ito ay isang pampalaglag cycle, isang loop, kanan. literal Ikaw ay pagpunta i-back sa ilang mga mas maaga hakbang. At kaya sa katunayan, ito ay pagpunta sa ipatupad ang ilang mga uri ng cycle. Ngunit hindi ka pagpunta upang makakuha ng natigil sa ito endlessly, kanan. Dahil kung patuloy ka ng paglagay ng tsek ang Mike dito, o sa kaliwa, o hindi dito, sa wakas siya ay hindi pagpunta sa maging doon. At maaari mo lamang mag-quit nang sama-sama bilang bawat ang huling linya. Kaya na ito para sa bokabularyo. At ito ay kung ano ang gusto namin pangkalahatan tumawag pseudocode code. Ito ay hindi isang aktwal na wika. Ito ay lamang masyadong maikli at tuwiran Ingles, ngunit ito nakikipanayam sa punto. Walang pormal na istraktura dito. Mo lamang gamitin ito ay ilang salita, ngunit bilang malinaw na mga salita hangga't maaari mong makipag-usap ang iyong mga ideya. Ngayon kung paano mabuti ay na algorithm at kung magkano ang mas mahusay na ito? Well, hindi namin ay may upang makakuha ng sa specifics ng mga numero o anumang bagay tulad niyan. Ngunit maaari naming tingnan ang hugis ng solusyon na ito. Kaya kung lang namin gumuhit ng ilang xy plot dito sa pahiga aksis dito. Sabihin lang tawagan ang laki ng problema. At isang computer siyentipiko gagawin karaniwang gamitin n bilang ang variable dito. Kaya n mga pahina, o n tao sa kuwarto, o ano man ito ay na sinusubukan upang mabilang. At pagkatapos ay sa vertical axis sa kaliwa, na magiging ng oras upang malutas. Kaya kung gaano karaming mga segundo ang ginagawa nito tumagal sa akin upang mahanap Mike Smith? O kung gaano karaming mga hakbang ang aabutin? Gaano karaming mga pahina ay lumiliko ang aabutin? Kaya na ang dahilan kung magkano ang gastos sa akin sa oras upang malutas ang isang problema. At kami ay maaaring gumuhit ang unang algorithms slope, kung ikaw ay, bilang lamang ito tuwid na linya ng pula. At kukunin ko na tumawag ito n. Bakit n? Bakit ay ito lamang ang isang ito sa isa na relasyon? Well, kung Verizon o kahit anong kumpanya ng telepono nagdadagdag ng isa pang pahina sa ang phone book sa susunod na taon, na maaaring itulak Mike isa higit pang hakbang na mas malapit sa dulo, depende sa kung saan ang pahinang iyon ay. At kaya ang epekto maaari lamang ay upang magdagdag ng isa pang segundo. O isa pang page turn. Isang isa sa ratio. Sa pamamagitan ng kaibahan, ang pangalawang algorithm. Magkano mas mabilis ay na intuitively? Saan nagpunta ako dalawang pahina sa isang pagkakataon? Yeah. MAG-AARAL: [hindi marinig] David MALAN: Oo. Kaya ito ay pagpunta sa maging dalawang beses bilang mabilis. At gusto naming gumuhit na dito depende sa scale. Ito pa rin ay isang tuwid na linya, ngunit mas mababa kaysa sa pulang linya. Dahil para sa ilang bilang ng mga pahina, kung ito ay tumatagal mo ito maraming mga hakbang sa ang unang algorithm, ito ay pagpunta sa magdadala sa iyo sa kalahati ng maraming mga hakbang na may pangangailangan ang ikalawa. At kaya ang dilaw na linya na naglalarawan sa ikalawang algorithm ay lamang pagpunta sa maging sa ibaba nito. Ngunit kung ano ang talagang malakas ay upang isipin ang tungkol sa ikatlong at huling, at amazingly pinaka-intuitive algorithm, na may ang hugis na ito. Technically gusto naming tumawag Ito ba ay isang logarithmic curve. Mag-log base 2 ng n sa kasong ito. Ngunit iyon ay hindi talagang mahalaga. Kung ano ang mahalaga ay tunay na ang panimula iba't ibang mga hugis na ito ay may. At maaari mong isaalang-alang lamang kung paano mas maikli ang linyang ito talagang ay sa katagalan. patuloy na ito ay ang pagtaas. Hindi ito patagin perpektong. Ngunit ito ay lumalaki napaka magkano mas mabagal bilang ang problema makakakuha ng mas malaki at mas malaki. At maaari mong isipin ng mga ito sa ganitong way-- kung Verizon ay hindi lamang magdagdag ng isang pahina sa susunod na taon ngunit doubles ang bilang ng mga pahina sa aklat ng telepono, ang unang algorithm maaaring tumagal ng dalawang beses bilang maraming mga hakbang. Kung ito ay sa 1,000 mga pahina na ito taon, 2,000 mga pahina sa susunod na taon, Mike ay maaaring maging na marami higit na malayo ang layo. Kaya ito ay 1,000 dagdag na mga hakbang upang mahanap sa kanya. Ang ikalawang algorithm ay maaaring maging lamang ng 500 pa hakbang upang mahanap sa kanya dahil muli, Ako lumilipad sa pamamagitan ng ito dalawang sa isang pagkakataon. Ngunit ano ang tungkol sa ikatlong algorithm? Kung Verizon doubles ang laki ng phone book sa susunod na taon mula sa 1,000 sa 2000 mga pahina, kung gaano karaming mga higit pang mga hakbang ay ang aking ikatlong algorithm pagpunta sa tumagal? Yeah, ito ay isa lamang. At iyan ang makapangyarihang ideya. Maaari kang kumuha ng 1,000 page kagat out ng problema na sa iisang pagkakataon. At ngayon, kung isaalang-alang mo isang hangal na sitwasyon, ngunit ito uri ng nagsasalita sa kapangyarihan ng ganitong uri ng intuition-- kung ang isang phone book ay, tulad ng, apat na bilyong mga pahina, nararamdaman tulad ng isang tunay na malaking problema. At sa katunayan, maaaring ito dalhin ako apat na bilyong page lumiliko upang mahanap Mike Smith sa na kaso sa mga unang algorithm. Ngunit kung gaano karaming mga hakbang ay ito kumuha sa ang ikatlong algorithm upang mahanap Mike tinapay sa apat na bilyong piraso ng papel? Kaya apat na bilyong pilasin mo sa kalahati. Makakakuha ka ng dalawang bilyon. Pagkatapos ng isang bilyon, pagkatapos ay 500 milyon, 250 milyon, 125 million-- ngunit ito nararamdaman tulad ng ito ay pagpunta sa tumagal ng isang habang. paano ko na kailangan 32 mga daliri upang mabilang up na mataas. Ngunit ito ay sa katunayan bilang ilang bilang 32 page luha. Maaari kang pumunta mula sa apat na billion sa isang pahina naghahati ang orihinal na bilang ng mga mga pahina sa loob ng kalahating 32 beses hanggang sa ikaw ay kaliwa na may lamang na solong pahina. Ngayon, siyempre, ako pagdaraya dito. Ito ay hindi na lamang namin ay pagiging uri ng bobo ganap sa unang dalawang algorithms. Ako ay cheating sa ilang mga kahulugan, o Talaga ako leveraging isang palagay. Kung ano ang totoo tungkol sa phone book sa kanyang orihinal na anyo na pinapayagan sa akin na kahit na gamitin na ang mga third algorithm? Yeah? Madla: Ito ay alphabetized. David MALAN: Ito ay alphabetized, right? Kung ito ay lamang sa random order, ito ay isang pag-aaksaya ng oras, ito buong pag-uusap. Mayroon akong upang tumingin sa bawat page kung ito ay sa random order upang mahanap Mike Smith bago ako maaaring tapusin siya ay doon o hindi. At kaya sa sulok namin nagupit ay na mayroon akong ipinapalagay na ang isang tao sino pa ang paririto sa kasong ito gumawa ng gawain para sa akin. At kaya na sa huli mga paanyaya ang tanong, well, maghintay ng isang minuto. Paano mo ayusin 1,000 pahina ng mga pangalan at mga numero? Iyan ay talagang isang iba't ibang mga problema, isang bagay kami ay bumalik sa sa hinaharap. Ngunit kapag sa tingin mo tungkol sa mga website tulad ng Facebook at Google para sa Gmail at mga bagay tulad ng Google sariling index ng paghahanap, kapag ikaw ay may milyon-milyong o bilyun-bilyong mga piraso ng data na naka-imbak ang mga araw na ito, searching-- at hindi sa banggitin pag-uuri mga problems-- sa huli ay isang hamon sa kanyang sarili. At sa katunayan, ito pagkatapos ay lamang ng isa sa mga hamon na kami ay naghahanap sa. Kaya ngayon hayaan mo tumagal ng isang sandali at kumuha ng isang pagtingin sa CS50 kanyang sarili at bigyan ka ng isang pakiramdam ng pagkakaroon ng ano ang sa tindahan na ito semestre. Sa katunayan, kung hindi mo pa nagagawa, kumuha ng isang pagtingin sa URL na ito. At bilang Patrick alluded upang, sa taong ito kami ay paggawa ng isang makabuluhang investment lahat ang higit pa sa suporta ng kurso istraktura sa mga tuntunin ng TAS at ang CAs, oras ng opisina, seksyon availability, at digital na mga materyales sa online, pati na rin. Sa katunayan, sa mga tuntunin ng ang kurso na iyon lecture, hindi namin dito ngayon. At ang mga inaasahan na ito taong opisyal ng kurso ay dumalo sa araw na ito, ang kurso na iyon huling panayam, at isang hanay humigit-kumulang sa gitna ng semestre sa bawat panayam sa pagitan ng ginawang magagamit sa pangkalahatan sa isang afternoon Biyernes online, ang parehong para Yale aaral at Harvard mag-aaral sa taong ito. Sa katunayan, isa sa mga pangunahing pagbabago ay na kami ay adopting sa Harvard isang paradaym very much tulad ng ginawa namin dito huling taon at ngayon sa taong ito, nang sa gayon ay katulad, pa rin namin film pinaka ng mga aralin sa kurso sa Cambridge ngunit gumawa ng mga ito magagamit nang mas maaga kaysa sa mayroon kami sa nakaraan sa gayon ay ang mga ng you-- kung ikaw nais na, halimbawa, makakuha ng isang ulo ng pagsisimula sa mga materyales sa unang katapusan ng linggo sa halip kaysa sa ikalawang weekend, magkakaroon ka ng access sa mga ganitong uri ng mga materyales, nahahanap, embeddable, hyperlinkable sa kaugnay na mga mapagkukunan ng lahat ng mas maaga. Sa mga tuntunin ng mga paksa, upang bigyan ka isang kahulugan ng trajectory-- ng kurso at ang ilan sa ito ay maaaring maging magulong pag-uusap para sa ngayon, ngunit hindi para sa mahaba, magpahinga sigurado. Sisimulan naming ngayon, sa huli, sa pagtingin sa isa programming wika na tinatawag na scratch. Susubukan naming i-transition pagkatapos noon sa susunod na linggo sa isang bagay na tinatawag na C at pagkatapos ng pagtingin sa iba pang mga gusali bloke para sa paglutas ng mga problema, bagay na tinatawag na arrays at algorithm, kung paano ginagamit namin memory sa aming kalamangan at kawalan, at mga bagay tulad ng istruktura ng data, at pagkatapos ay sa dakong huli ng klase ng pagtingin sa machine learning at pagtingin sa isa pang wika na tinatawag na Python, kung paano ang web ay gumagana, kung paano ang internet pa sa pangkalahatan ay gumagana, mga protocol tulad ng HTTP, wika para sa mga database tulad ng SQL, JavaScript para sa web, at sa huli tinali ang lahat ng mga sama-sama. At kaya sa katunayan, sa tapusin ng araw, ikaw hindi malaman sa ganitong klase Scratch o C o Python o SQL o JavaScript. Ikaw ay sa halip mas pangkalahatang paraan matuto computer science at ang mga patibayan niyaon, at ikaw malaman kung paano programa sa anumang bilang ng mga wika kasama ang paraan. Kaya sa katunayan, isa sa mga layunin ng kurso sa katapusan ay upang mag-alis ng lahat ng mga kurso gulong ng pagsasanay sa pamamagitan ng mga huling linggo na anopa't nang mamatay ito, maaari mong bumalik sa iyong sariling fields-- kung na ay o ay hindi computer science o engineering, sa natural agham, sining, makataong sining, o beyond-- at magdala ng ilang ng mga ito ideya ni kurso at ang patlang na ito ni mga ideya at mga praktikal na mga kasanayan sa iyong sariling domain upang malutas ang mga problema sa ganyang bagay. Ano ang matatagpuan hahawak kami dito samantala sa karamihan ng Huwebes pagkatapos ng araw na ay may mga ulo ng kurso na humahantong kung ano ang makikita namin tumawag walkthroughs ng mga hanay ng problema ang kurso na iyon. Kaya bawat linggo kapag kami may isang problema set, kami ay naglalakad sa pamamagitan ng sa isang lokasyon tulad nito hamon ng kurso, nag-aalok sa iyo ng ilang mga tip at mga tricks at disenyo pamamaraan. Ngunit kung ikaw ay hindi magagawang upang gumawa ng mga sa tao, mapagtanto ang mga parehong resources ay naka-embed sa pamamagitan ng isa sa mga kurso assistants pagtuturo sa hanay ng problema sa kanilang sarili, pati na rin. Ang problema nagtatakda sa taong ito, hindi katulad noong nakaraang taon, ayon sa mga feedback, ay pa rin ay ilalabas sa Biyernes. Ngunit sa halip na pagiging angkop ang kasunod na Biyernes, gayon nagbibigay sa iyo lamang ng pitong araw, ay epektibong maaaring dahil 10 araw mamaya. At sa katunayan, ito ay nangangahulugan na ang mga ito ay nago-overlap sa pamamagitan ng isang weekend. Ngunit umaasa kami sa taong ito lalo na ito ay payagan mag-aaral upang mas mahusay na mapaunlakan sumabay sa alon sa kanilang mga iskedyul, maging ito man ay akademya o extracurriculars o athletics o midterm season. Maaari kang mag-front-load o back-load iyong linggo tumututok sa CS50 batay sa aktwal na kurso ng pag-load ng iyong sariling linggong ito. Ang problema Nagtatakda ang kanilang mga sarili ay sumasakop sa isang hanay ng mga wika, bagaman kami ay tumutok nakararami maaga sa C bago kami ay tumutok pagkatapos noon sa mas mataas na antas, higit pang mga wika web-sentrik. At pagkatapos ng ilang mga FAQs here-- dapat mong gawin ang isang klase tulad ng CS50 bilang isang unang-taon? Kaya walang pasubali. At sa katunayan, ito ay hindi kinakailangan ng isang bagay dapat mong ipagpaliban hanggang sa ikaw ay i-cut ang iyong mga ngipin sa iba pang mga uri ng mga klase. Ngunit sa halip, isaalang-alang na para sa maraming mga mag-aaral, kasama ang aking sarili pabalik sa araw, ito ay isang napaka-pamilyar field, lalo na kung ikaw hindi kailanman ginawa kumuha ng AP CSA o isang bagay tulad na sa high school. Ngunit mapagtanto na sa maagang bahagi, maging ito man ay sa kursong ito o ilang iba pang panimulang kurso, ngayon ay sa katunayan ang pinakamahusay na oras, Sa tingin ko, upang mahanap ang ilang mga bagong landas o ilang mga bagong akademikong interes, pati na rin. At pagkatapos ay ang pagkuha sa iba pang mga courses-- kaya isa sa mga pangunahing pagkakaiba dito versus Harvard ay na namin lamang tumagal ng apat na kurso kada semestre sa Harvard para sa ilang kadahilanan. At sa iyo guys talagang hilahin off ang ilang mga 36 mga kurso sa kabuuang sa kabuuan ng iyong apat na taon, na nangangahulugan pangkalahatan apat o limang klase. At sa tingin ko ito ay lubos na makatarungan sa sabihin at upang itatwa CS50, sa pamamagitan ng disenyo, ay Marahil hindi ito ang uri ng klase na dapat ikaw ay karaniwang kumuha na may apat na iba pang mga kurso para sa isang total ng limang dahil psets ay sa pamamagitan ng disenyo medyo intensive. Sa katunayan, ako masyadong natutunan ito pabalik sa araw. Hindi ko ilarawan CS50 at computer science, programming bilang kaya magkano mahirap na ito ay lamang oras-ubos. Ito ay hindi ang uri ng bagay kung saan pagkatapos ng hapunan, ikaw maaaring bumalik sa iyong dorm room, umupo, at simulan ang nagbibigay-diin sa pset nag-iisip, lahat ng karapatan, Ako gonna bang this out ngayong gabi at pagkatapos ay ilipat sa aking mga susunod na subject sa susunod na araw. Minsan mo pindutin lamang ng isang pader. Mayroon kang mga bug sa iyong code. Hindi mo kinakailangang malaman kung paano upang malutas ang ilang problema. At isa sa mga pangunahing katangian ng programming para sa aking sarili sa araw na ito ay sa iyo lamang ang uri ng kailangang gumawa ng isang hakbang pabalik minsan, matulog sa mga ito o sa tingin sa mga ito sa kabuuan ng isang alog o ilang iba pang aktibidad, at pagkatapos ay bumalik dito sariwa. At kailangan mo lamang ang mga bintana ng oras. At sa katunayan, na ang dahilan kung bakit hindi namin lengthened ang halaga ng oras magagamit para sa mga hanay ng problema sa taong ito at din, per URL na Ko bang ilagay up ng mas maaga bilang sa kung ano ang bago na ito semestre, Nai-trim ang mga hanay ng problema sa gayon ay ang mga ito ay sa panimula hindi kukulangin mahigpit, at ang takeaways ay hindi mas mababa, ngunit mayroong isang pulutong ng mas kaunting front matter, ng maraming mas mababa matrabahong gawain na kailangan mong gawin sa harap ng bawat hanay ng problema, tulad ng makikita mo, bago ka Maaari aktwal na sumisid sa karne ng mga ito. Kaya Napagtanto na ang mga at iba pang mga pagbabagong ito ay sa abot-tanaw upang mas mahusay na mapaunlakan mag-aaral, ngunit sa huli upang matiyak na ang takeaways ay sa katunayan bilang mataas hangga't maaari. Kaya habang mas maraming trabaho kaysa ito ay maaaring maging sa isang tipikal na klase, namin pag-asa na ang mga nagbabalik para sa ikaw at ang takeaways para sa iyo at ang mga kasanayan at mga ideya na kung saan lumabas ka ang lahat ng mga mas nakakahimok bilang isang resulta. At upang makakuha ng there-- mo at ito ay isa sa mga pangunahing takeaways, bilang Patrick alluded earlier-- ay support istraktura ng kurso. Kaya hindi lamang ay CS50 magkaroon ng isa sa ang pinakamalaking course staffs sa campus. Mayroon din itong isa sa mga pinaka undergraduate. Sa katunayan, CS50 noong nakaraang taon ay ang unang klase na magkaroon ng isang undergraduate pagtuturo ng mga tauhan. At testamento sa tagumpay na gawin ngayon maraming iba pang mga kurso sa loob ng Yale CS magkaroon ng na, pati na rin. At para sa mga mag-aaral, partikular, nga ang mga ito TAS at kurso assistants maging isang sumusuportang buong network ng mga mapagkukunan ng suporta, kasama ng mga ito mga seksyon o recitations, lingguhan pagkakataon upang magkaroon ng higit intimate talakayan at mga review ng mga materyal na naka-target para sa iba't ibang mga track, para sa mga estudyante mas kumportable, mas kumportable, o sa isang lugar sa pagitan. Ang mga ito ay sundin ang availability ng ang lektura sa pamamagitan ng ilang mga araw sa bawat linggo tuwing Lunes at Martes. At pagkatapos office hours-- one-on-one pagkakataon para sa tulong mula sa mga kurso CAs at TAS ay magiging sa Miyerkules at Huwebes at Linggo sa maramihang beses, ang lahat ng na Ipo-post sa website ng kurso ni, kahit na higit pa kaysa sa nakaraang taon, pati na rin. Ngunit kung ano ang susi sa CS50, kung hindi tinatanggap na isang bit hindi pangkaraniwang, ay kultura ng kurso na na sinubukan namin upang magsaka, parehong sa Cambridge para sa maraming taon at ngayon pinaka-kamakailan sa New Haven. At sa katunayan, pagdating up ito Sabado, kung hindi mo pa narinig, ay CS50 Puzzle Day, kung saan ay may walang kinalaman sa computer science ngunit ay ganap na dinisenyo upang magpadala ng isang mensahe na computer science ay tungkol paglutas ng problema. At sa katunayan, kung gusto mong i-partner may isa o dalawa o tatlong mga kaibigan at bumuo ng isang koponan para sa CS50 Puzzle Day, tingnan sa adverts na ay sa paraan out. At tatlong oras ng pizza at puzzle at prizes hintayin. At sa katunayan, para sa mga unang pagkakataon sa taong ito, hindi na ito ay gaganapin sama-sama sa Harvard. Ito ay magiging dito nang nakapag-iisa at Yale. Kaya abangan ang para sa mga kung hindi mo pa. Karamihan sa bawat Biyernes sa semester huwag naming subukan upang gumawa ng isang malaking klase tingin maliit at dalhin ang ilang mga 50 mga mag-aaral sa tanghalian sa staff ng kurso, sa alumni, mga kaibigan mula sa industriya upang makipag-usap tungkol sa kung ano ang buhay ay tulad pagkatapos ng isang klase tulad CS50 at sa ibabaw ng summers at pagkatapos ng graduation. Kaya abangan ang para sa imbitasyon sa na. Sa unang pagkakataon kailanman sa taong ito kami ay pindutin nang matagal ang unang kailanman CS50 coding contest, isang opsyonal na opt-in pagkakataon mid-semester, pagkatapos ng lahat sa atin ay may mga anim o pitong linggo ng programming sa C sa ilalim ng kanilang sinturon upang makipagkumpetensya, kung nais mong upang choose-- muli on teams-- sinusubukang malutas ng maraming mga hamon hangga't maaari sa programming gamit kaibigan ng sa iyo laban sa iba. At sa dako ng buntot ng semestre kami charter ilang mga bus, aktwal na gumastos ng ilang oras sa Cambridge, kung Gusto mo nais na sumali sa amin, para sa tinatawag CS50 hackathon. Sa 7 PM kami magsimula. Alas-9 PM, kakailanganin naming pizza. Around 1:00 AM, kakailanganin naming burritos. At kahit sino pa rin gising sa biyahe sa bus sa bahay sa paligid 5:00 AM, ititigil namin ang off para sa pancakes sa IHOP sa paraan home-- 12-oras na pagkakataon na isawsaw ang iyong sarili sa mga kaklase at mga kawani sa huling proyekto ng kurso, na kung saan ay isang pagkakataon upang pumunta rin sa kabila ng mga hanay ng problema ni course at disenyo at ipatupad pinaka anumang bagay ng interes sa iyo, na ay ganap na maging itinatampok dito sa Commons. Ang unang kailanman CS50 fair ay huling taon, ang isang end-of-semester exhibition o pagdiriwang ng kung ano ang lahat sa klase na maganap, lalo na ang mga, muli, na nagpunta mula sa wala sa isang bagay, mula sa zero sa 60, walang bago background at exhibiting, sa huli, isang bagay para sa buong campus at, kung online, sa mundo upang makita, pati na rin. Ngayon, ang mga dito ay lamang ng ilang sa mga TAS at CAs na gumagawa CS50 maaari. Payagan ako upang mag-imbita ng anumang ng mga miyembro ng kawani na dito na dumating up sa entablado, pati na rin ang mga ulo ng kurso, upang mag-alok ng ilang mga salita ng inspirasyon, pati na rin. ANDI: Hi, guys. Maaari ninyo guys marinig sa akin? Salamat sa pagsama sa amin sa ito kaibig-ibig, maulan hapon Huwebes. Ang pangalan ko ay Andi. Ako ay junior sa Berkeley. At kasama Stelios at Summer, kami ay iyong tatlong ulo pagtuturo assistants para sa darating na taon. Kaya, hulaan ko, ay ipakilala hands-- paano marami sa inyo ay walang intensyon ng pagiging isang CS major o talagang diving malalim sa computer science bilang isang pangunahing dito? Kahanga-hanga. Iyan ay napakatalino. Kaya ako tunay na isang global affairs at nagbibigay-malay agham major. Literal na ako ay dumating sa Yale may balak ng hindi pagkakaroon upang tumingin sa isang number kailanman muli sa aking buhay. Kapag ako ay dumating sa Yale, ito ay isang bagay na ay hindi kailanman sa aking radar. Nais kong malaman ang tungkol sa tula. Nais kong malaman ang tungkol sa international affairs. Nais kong malaman ang tungkol sa waterkolor drawings. Oo, nag-aalok kami ng isang klase sa waterkolor drawings. Ngunit hindi ko talaga ay interesado sa anumang bagay STEM kaugnay na. Ngunit pagkatapos ay ang mga mas lumang ko nakuha, mas ko natanto na ang bawat patlang talagang sa ilang kahulugan employs computer science, o kung hindi computer science, pagtutuos. Sa katunayan, para sa aking global affairs capstone proyekto, aming ginagamit data analytics upang pag-aralan atake ng terorista para Boko Haram sa Nigeria. At sa gayon ay maaari mong makita, hindi alintana ng kung ano ang mga pangunahing tapusin mo up pursuing o kung ano ang iyong mga interes dito sa Yale Isasama, programming at ang mga patibayan ng kahit anong mga kasanayang ito ay sobrang kapaki-pakinabang. At CS50 ay tunay na mahusay na kagamitan upang uri ng bang ipahiram sa isang pulutong ng mga mapagkukunan nito sa iyo, nang walang kinalaman sa kung paano kumportable kayo ay o kung paano ka ka-interesado sa pursuing klase. Summer ay pagpunta sa makipag-usap ng kaunti bit tungkol sa kung ano ka guys ay pagpunta upang malaman ang tungkol sa taong ito. SUMMER: Hi, everyone. Ako Summer Wu. Ako ay junior sa Morse. At ako tunay na nagsimula out bilang CS50 student ang aking sarili. Kaya tatlong taon na nakalipas, ako ay sa isang taon na agwat sa. hindi ko gusto kinuha ng isang CS klase sa high school, ngunit naisip ko na sa aking libreng oras, gusto ito ay cool na upang malaman kung paano i-code. Kaya ako ay isang mabilis na paghahanap ng Google, tumingin para sa kung ano ay magagamit sa online, at nakakita nitong video na may muppets at DJ at cool na mga website. Ako ay tulad ng, gusto kong malaman kung paano gawin iyon. At aking kinuha ang mga kurso, at ako lamang ay nahulog sa pag-ibig dito. Ngunit tandaan ko pagiging kaya naninibugho ng mga bata na maaaring dumalo sa hackathon, dumalo Puzzle Day, dumalo office oras, makakuha ng tulong mula TAS sa tao. At kaya hindi ko naisip na gusto ko makuha ang pagkakataon na dito na kasangkot sa ang kurso na unang nakuha ako interesado sa computer agham at ang dahilan kung bakit Ako ay computer science major ngayon. Kaya kukunin ko na bigyan ng babala sa iyo, ito klase ay pagpunta sa mag-abot sa iyo. Ito ay pagpunta sa hamunin mo. Kundi pati na rin ito ay pagpunta sa magturo sa iyo kung paano gawin ang mga bagay na hindi mo naisip maaari mong. STELIOS: Hi, everyone. Ang pangalan ko ay Stelios. Ako ay junior sa Branford College at isang CS major. ako din mula sa Athens, Greece. Talagang Naghahanap ako inaabangan ang panahon sa pagtugon sa lahat ng sa iyo, sa pakikipag-chat sa iyo sa seksyon, sa oras ng opisina, sa Biyernes lunches. ako ay talagang nagaganyak dahil ilagay namin kaya magkano ang pagsisikap sa paglikha ng isang natatanging suporta istraktura para sa inyong lahat upang gawin ang iyong karanasan sa kurso ang pinakamahusay na posibleng. At Umaasa ako na bagaman ang karamihan ng marahil ikaw ay hindi kinuha ng isang CS kurso bago, Umaasa ako na ang CS50 para sa iyo ay kung ano ang Sparks interes upang higit pang ituloy ng computer agham sa hinaharap, bilang ito ay tapos na may kaya maraming mga tao sa nakaraan. Kaya salamat sa iyo para sa pagiging dito, nasasabik na makita ka. Jason Hirschhorn. Jason HIRSCHHORN: Hi, lahat. Ang pangalan ko ay Jason Hirschhorn. Nakatira ako sa Silliman. At nagpunta ako sa Harvard bilang isang undergrad at majored sa araling panlipunan at minored sa computer science. At isa sa aking mga punong-guro tungkulin dito ay upang suportahan ang kahanga-hangang mga kawani bilang sila ay sumusuporta sa iyo ang lahat. Sa katunayan, ito ay hindi lahat ng mga ito. May mga 55 undergraduates at nagtapos dito upang suportahan ka sa lahat. At sa palagay ko ang isa sa mga pinakamahusay na bahagi ng kurso para sa iyo lahat ay nakakakuha upang gumana sa mga ito, sa pagkuha ng malaman ang mga ito, pagkuha sa makita ang mga ito, parehong sa CS50 at sa labas ng CS50 ito semestre at para sa maraming semesters na dumating. Kaya sana ikaw ay kumuha ng siyempre dahil inaasahan namin na ikaw ay makapunta sa makipag-ugnayan sa kahanga-hangang mga kawani ay may namin sa entablado. SPEAKER: Well, hayaan mo akong tapusin sa pamamagitan ng pagsasabi ito ay magiging masaya. David MALAN: Well, salamat sa aming buong koponan. Payagan ako upang hindi maliwanag ang mga ilaw at payagan ang ilang mga higit pa sa aming team, parehong mula sa Cambridge at New Haven, upang kamustahin dahil ang mga ito guys maghain off. At pagkatapos nito ay kami ay lumipat sa ang unang ng aming mga programa engagements sa wikang ito na tinatawag na scratch. Kaya salamat sa team. ni madilim ang mga ilaw Hayaan at marinig mula sa ilang mga iba. [Palakpakan] [Video playback] -Ang Misyon ng CS50 ay upang gumawa ka mas kumportable na may isang ganap na bagong paraan ng pag-iisip, ito computational mindset. -Ito Ginawa computer science kagiliw-giliw na, na kung saan ay isang bagay na hindi ko talaga mapagtanto ay maaari hanggang kinuha ko ang class. -Ako Ay tulad ng, whoa. Talaga ako pagsasalin aking mga saloobin sa isang computer ngayon. -Kahit Kung hindi ka magkaroon ng anumang background sa computer science o anumang karanasan, ito ay aktwal na ang klase para sa iyo. -Kaya Ko talagang gusto aking mga mag-aaral sa makatarungan maging abala tungkol sa computer science. Hindi lamang programming, ngunit pag-iisip tulad ng isang computer scientist ay talagang kung ano ang gusto kong subukan upang turuan ang aking freshman. -CS50 Ay mahirap at rewarding. -Isang karanasan. -Extravaganza. -Ito Ay nagdadala sa amin sa susunod na antas. [MUSIC nagpe-play] -Ang TFs ay, tingin ko, ang lifeblood ng kurso. -I'm Nagaganyak na magkaroon ng aking mga mag-aaral ako pagtulong mayroon na aha sandali upang mapagtanto kung ano talaga sila ay sinusubukan na maaaring gawin, upang malaman kung paano gawin ang isang pset. -CS50 Ay talagang isang mahirap na kurso. Ngunit hindi tulad ng anumang iba pang mga course talagang sa Yale, ito ay tulad ng isang mahusay na, supportive komunidad. -Ikaw Absolutely hindi kailangang malaman ang anumang bagay tungkol sa coding para ma upang gawin ang mga kurso. -Ito Ay kamangha-manghang upang panoorin kung paano malayo mga tao na dumating sa isang semester. -Ikaw Ay hindi nag-iisa pag-upo sa iyong kuwarto pag-aaral upang code, ngunit ito ay higit pa sa isang klase. Ito ay isang karanasan. -Ang Pinakamahusay na paraan upang malaman ang mga konsepto at upang iproseso ang mga ito ay sa pamamagitan ng pagtuturo sa iba. -Ano Ang telephone split? [MUSIC nagpe-play] -At Ito ay CS50. [MUSIC nagpe-play] -Ito Ay CS50. -Got Isang problema? Tanggalin na ito sa kalahati. [MUSIC nagpe-play] Throw ito sa malayo. David MALAN: Lahat ng karapatan. Kaya sabihin tackle-- sa isang maliit na bit, hindi sinasadya, ito ay naging ganito tradisyon para sa ilang kadahilanan para sa 10 taon upang maghatid ng cake sa simula at dulo ng CS50. Kaya naghihintay sa iyo sa dulo ng araw na ito, bilang karagdagan sa syllabi, magkakaroon ng ilang mga cake pati na rin, at staff ng kurso upang kamustahin. Ngunit ngayon, sabihin paglipat sa unang ng aming mga wika, kung saan ipapakita namin gastusin talagang lamang ng isang linggo at ang isa hanay ng problema sa ito domain, scratch. At makikita ninyo ang kung ikaw program bago, maraming mga ng mga ideya at ang posibilidad ay pamilyar sa iyo. Ngunit makikita mo na ito ay masaya sa kahabaan ng paraan upang malaman kung eksakto kung paano i-translate ilan sa mga ideya na alam mo sa ito partikular na kapaligiran na talagang mapabilib ang iyong pamilya at mga kaibigan sa iyong trabaho, na maaaring mag-online, kung ikaw kaya pumili, afterward. At kung ikaw ay walang naunang karanasan at kabilang sa mga karamihan ng mga mga mag-aaral mas kumportable, mapagtanto na marami sa mga ideya namin lamang ginalugad na may reality-- bagay tulad ng mga libro phone at pagdalo at iba pa forth-- isalin medyo mabuti sa isang computer, ngunit hindi kung gamitin mo, una, isang wika tulad nito. Kaya ito ay isang programa na nakasulat sa isang wika na tinatawag na C. At kami gumastos ng lubos ng kaunti ng oras sa C, sa huli. Ngunit logro ay, ito ay tumingin ng kaunti cryptic sa iyo sa unang tingin. Sa katunayan, may isang pulutong ng mga weird syntax, panaklong, anggulo bracket, kulot tirante, quotes, at semicolons. At sa katunayan, kung sumisid ka sa programming para sa unang pagkakataon pagtingin sa at sinusubukan upang lumikha ng mga bagay-bagay tulad nito, sa totoo lang, ikaw ay makakuha ng kaya mired kaya madalas sa loob lamang bobo minutia na ay walang kinalaman intellectually kawili-wiling tungkol dito. Ngunit isipin kung maaari kang lumikha ito parehong program-- kung saan, bilang maaari mong uri ng magpakilala, marahil prints "Hello, world" sa anumang paraan o iba pang. Maaari naming magdistila na parehong ideya sa lamang ng dalawang piraso puzzle, kung ikaw ay. Sa katunayan, Scratch ay kagiliw-giliw dahil sa ito ay na ito graphical wika. Maaari mong i-drag at i-drop ang mga mga piraso ng puzzle na lamang interlock kung ito ay gumagawa ng lohikal na kahulugan na gawin ito. At kaya sa simula, kami ay madaling makita, ito ay kung paano mo ipatupad na parehong programa, na may lamang ng dalawang piraso ng puzzle na medyo marami gawin kung ano ang sinasabi nila. Ngunit gagamitin namin makita sa sandali lamang na ang ilang mga ng mga bloke ng gusali na aming alluded upang mas maaga at ng ilang higit pang ay ang lahat na sa huli ay pagpunta sa bumubuo ang ilan sa aming pinakamaagang mga programa. Kami ay pagpunta sa magkaroon ng mga bagay tulad functions-- lamang mga aksyon na gawin ang isang bagay, tulad ng sinasabi kumusta, mundo. Kami ay pagpunta sa magkaroon ng mga loop, bagay na magbuod cycles muli at muli, gusto lang namin ginawang isang sandali ang nakalipas na may searching para sa Mike Smith. Variable, tulad ng sa algebra, kung ikaw kung xoy, na maaaring mag-imbak ng isang numero. Well, sa isang programa, maaari mong aktwal na mag-imbak ng higit pa sa mga numero. Maaari kang mag-imbak mga salita at pangungusap at graphics at iba pang mga bagay pa rin. Boolean expression, lamang questions-- oo o hindi, totoo o hindi. Kundisyon, paggawa ng mga desisyon batay sa mga oo / hindi sagot. At pagkatapos ay may interes mga bagay tulad ng array at mga thread at mga kaganapan at anumang bilang ng iba pang mga mga tampok, ngunit ang lahat ng na map napaka mabuti sa napaka friendly na mga bloke tulad nito. Ito ay pagpunta sa maging isang function, isang purple piraso puzzle na lang sabi ano ang pangalan nito is-- sa kasong ito, sabihin. At pagkatapos ay madalas, may isang puting kahon na kayo maaaring i-type sa o i-drag ang ilang mga halaga sa. At na kung ano ay sa pangkalahatan tinatawag na isang argument o isang parameter. Ito ay isang paraan ng altering ang default na pag-uugali ng isang malaking suliranin piraso o isang function upang ito ay isang bagay custom para sa iyo gusto na sinasabi, kumusta, mundo o hello, Andy o hello, Jason o ilang iba pang pangungusap sa halip. Kung nais mong sabihin na ang isang lot-- literal forever-- maaari mong gawin ang isa pang puzzle piraso na tinatawag na magpakailanman at lamang sandwiched ang dalawang magkasama tulad nito. At na loop, bilang mga larawan ay nagpapahiwatig, nangangahulugan lamang kamustahin, mundo magpakailanman, muli at muli at muli. O kaya naman, kung gusto mo lamang na gawin ito ng isang may hangganan bilang ng mga beses, tulad ng 50 beses, doon ay pagpunta sa maging isa pang palaisipan piraso para sa na- ulitin 50 beses. Samantala, kung nais mong na magkaroon ng isang variable sa wikang ito kami si-play sa, maaari kang gumamit ng orange block tulad nito. At ito variable ko arbitrarily tinatawag i para integer. At ko lang itakda ito katumbas ng 0. At kaya siguro i, sa ganitong case-- ito variable-- kumakatawan marka ng isang tao sa isang laro. Magsisimula ka sa zero, at sa bawat oras na gumawa ng isang layunin o isang bagay tulad na, makakakuha ka ng isang karagdagang point. Maaari kang magtanong sa scratch. Kung kami ay i-drag at i-drop puzzle piraso sa isang sandali tulad nito, maaari mong hilingin sa mga katanungan tulad ng, well, ay i mas mababa sa 50? Siguro kailangan mo ng 50 puntos upang manalo. At kaya ito ay magiging ang tanong Gusto mong hilingin. O kaya naman, mas pangkalahatang paraan, ikaw maaaring sabihin ay x mas mababa sa y, kung saan mayroong dalawang variable na kasangkot? Ngayon, ang isang ito ay isang pulutong mas malaki sa unang tingin, ngunit talagang hindi lahat na mas kumplikadong. Ito ay lamang ng isang kumbinasyon ng mga kundisyon at mga variable at Boolean expression upang magtanong tatlong questions-- ay x mas mababa sa y? Kung gayon, sabihin ito. Say, x ay mas mababa sa y. Saka kung x ay mas malaki kaysa y, sino pa ang paririto x dapat na katumbas ng y. At yamang may Mike Smith, Mayroon ngang apat na sitwasyon, dito sa mundo ng mga numero, x ay alinman mas mababa, mas malaki kaysa sa, o katumbas ng. Lahat kami ay may tatlong tinidor sa kalsada. At pagkatapos ay mayroong fancier mga piraso ng puzzle na tulad nito para sa mga bagay tulad ng arrays, kung saan kami ay pagpunta sa magagawang upang mag-imbak ng impormasyon. Kami ay pagpunta upang makita bloke na payagan sa amin upang ipatupad ang maramihang mga thread, isa pang tampok gagamitin namin, at pagkatapos ay din ng isang bagay na tinatawag na mga kaganapan. Ngunit bago makuha namin sa na point at lumikha ng kahit na, sa huli, ang aming sariling pasadyang mga piraso ng puzzle, sabihin aktwal na buksan ang programa mismo. Kaya ito ay scratch. Ito ay makukuha sa scratch.mit.edu. At tuloy po kayo upang i-play ngayon o sa ibang pagkakataon, pati na rin. Ito ang mangyayari sa maging ang offline na bersyon. Para sa mga taong hindi kinakailangang magkaroon ng mahusay na internet, maaari mong i-download ang parehong software, pati na rin. At mayroong talagang lamang ng tatlong mga bahagi upang ang software na ito. Sa itaas na kaliwang sulok ng ang screen ay ang uri ng stage na simula, na sa pamamagitan ng default ganito ang hitsura ng isang pusa, nakatira sa loob. Maaari niyang ilipat pataas, pababa, pakaliwa, o pakanan at gawin ang anumang bilang ng mga iba pang mga bagay, at maaaring tumingin sa anumang bilang ng mga paraan batay sa costume na iyong itinalaga sa kanya. Ngunit ito ay kung ano ang makikita namin tumawag sa isang sprite, isang uri ng character. At maaari kang magkaroon ng maramihang character, dahil kakailanganin namin sa lalong madaling panahon makita. Sa gitna ngayon ay ang lahat ng mga puzzle piraso at mga kategoryang ito o pallets niyaon. Kaya ngayon, nag-click ako sa Motion. At kaya ko na nakikita ang lahat ng mga galaw na may kinalaman sa mga piraso palaisipan o mga bloke, kaya pag-andar na may ang gagawin sa pagpunta up, pababa, pakaliwa, o pakanan o ilang iba pang mga operasyon. Ngunit kung ako nag-click sa hitsura, ikaw maaaring makita ang mga bagay tulad ng mga sinasabi block na nakita natin sa isang sandali lamang ang nakalipas. At kung ako mag-click sa Control, makakakita ka ng mga bagay tulad ng paulit-ulit at ang magpakailanman at ang kung block na Nakita namin ang isang sandali ang nakalipas. At kaya makikita mo ang na kami na lang scratch ang ibabaw ng ilan sa mga puzzle piraso sama-sama, ngunit ito ay ang lahat ng medyo intuitive at point at click. Sa katunayan, Scratch ay dinisenyo para sa mas batang mga mag-aaral upang makatulong sa bigyan sila ng isang outlet para sa mga creative pag-iisip. At pa kamangha-mangha, ito ay isang kahanga-hangang stepping stone sa eksakto ang mga ideya kami ay pagpunta sa galugarin sa C at sawa at JavaScript, din. Sa kanang gilid, sa wakas, dito ay ito, ang tinatawag na mga script na lugar. At ito ay lamang ang blangkong slate na may kung saan ka magsimula upang makapagsulat ng isang programa. At ako makikita eksakto na. Ngayon, mangyayari kong malaman kung saan bagay ang dahil nagawa ko ito nang ilang beses. Ngunit alam ko na sa ilalim ng mga Kaganapan kategorya, mayroong ito block here-- kapag berde bandila na-click. At mapansin kung ako mag-zoom out at pabalik sa paglipas dito sa entablado, Scratch buhay sa loob ng maliit na hugis-parihaba mundo, nasa ibabaw na kung saan ay isang green bandila at isang pulang stop sign. Kaya pumunta at itigil, buong galang. At kaya kung ano ang gusto kong gawin kapag na berdeng bandila ay nag-click? Well, hayaan mo akong pumunta sa na Mukhang kategorya. At hayaan mo akong magpatuloy at i-drag at i-drop ito. At mapansin sa lalong madaling ito ay makakakuha ng close, ang mga ito ay uri ng magnetic. Kaya kung ako ngayon sabihin pumunta, ito snaps magkasama maganda at malinis. At ako pagpunta sa sige at sabihin ng isang bagay tulad ng kumusta, mundo para sa dalawang segundo. Hayaan akong mag-zoom out at i-click ngayon ang green flag, at sabihin, hello, world. Lahat tama. Kaya na ang lahat ng fine at mabuti. Hindi lahat na kapana-panabik. ni gawin itong isang maliit cuter Hayaan. At alam ko na sa advance, Scratch mangyayari na sumama sa ilang mga cute mga bagay na katulad nito. Kaya i-play sound meow hanggang tapos na. Kaya sabihin gawin ito. [MEOW] Aw, na ang karapat-dapat sambahin. At kung nag-click ko ito again-- [MEOW] At muli. [MEOW] Kundi patuloy na ko sa pagkakaroon ng upang pasiglahin scratch. Ngunit maaari kong gawin mas mahusay kaysa sa ito. Bakit hindi ko i-drag lamang ang tatlo sa mga ito. At ngayon ito ay tatlong beses na mas kaibig-ibig. [Meowing] OK, talaga, ito ay isang maliit katakut-takot. Kaya kailangan namin ng isang bagay sa pagitan ng doon. Kung pupunta ako sa Control, mukhang may tunay na isang paghihintay block. At kaya mapapansin kung mag-hover ko sa ibabaw there-- at hayaan mo akong gumawa ito ng isang maliit na mas malaki. Kung ako mag-hover, ito ay pagpunta sa snap sa lugar. Kaya maghintay ng isang segundo, maghintay ng isang segundo. hit ni green flag muli. [Meowing] OK, isang maliit na mas natural, ngunit hindi masyadong mahusay. Kaya ito ay tama kung ang aking programa layunin ay ngiyaw ng tatlong beses. Ngunit ito ay hindi masyadong mahusay na dinisenyo. Ako uri ng hiwa ng ilang mga sulok. Nakatanggap ako ng isang maliit na tamad. Ano nararamdaman like-- ano ang tila ako na magkaroon ng tapos na hindi maganda, gusto mo sabihin? Yeah? Yeah, sa gitna. Madla: Ginamit pa memory kaysa sa iyo na kailangan upang dahil gumagamit ka ng kaya maraming iba't ibang linya. David MALAN: Oo, kaya higit pang mga linya. At hindi kinakailangan ito magiging memory, bagaman maaaring ito ay makikita bilang sa gayong paraan. Ngunit ito ay definitely-- mayroong kalabisan. At ako literal uri ng dragged at bumaba ang parehong bagay. At kung ikaw uri ng extrapolate-- kung ito ay hindi halata here-- well, kung paano gagawin meow ako 30 beses? Gusto ko i-drag at i-drop, tulad ng, 30 higit pang mga pares ng mga piraso puzzle. At tiyak, may isang mas mahusay na paraan. At nakakita kami ng isang mas mahusay na paraan. Ano intuitively gagawin ang mas mahusay na paraan? Yeah, makatarungan gumamit ng isang loop. Walang kopya at i-paste. At sa katunayan, kahit anong oras ito semester kung sinimulan mo paghahanap ng iyong sarili pag-drag at pag-drop, o talagang pagkopya at pag-paste, mapanganib na ugali upang makakuha ng sa dahil ito ay lamang ng hindi masyadong maintainable. Halimbawa, kung gusto kong baguhin ang tunog sa iba pang dahilan, Kailangan ko bang baguhin ito ngayon sa tatlong mga lokasyon sa halip na lamang ng isa. Dahil sa katunayan, kung ako break na ito away-- ako lamang ang pagpunta sa decouple ito tulad na. Hayaan akong sunggaban ang isang ulitin bloke, at pagkatapos ay i-click ang tatlong, i-type tatlo, itapon ang ilan sa mga ang layo sa pamamagitan lamang ng pagpapaalam go. At pagkatapos ay mapansin ito ay hindi mukhang ito Tama ang sukat, ngunit magnetically, ito ay pagpunta upang hindi lamang snap sa lugar ngunit lumago upang magkasya ang hugis. Kaya na mabuti. At ngayon, kung nag-click ako play. [Meowing] Very nice. Lahat tama. At ngayon ito ay mas madali upang baguhin, masyadong, dahil maaari ko lang baguhin ng isang numero sa isang lugar. Ngunit ito, masyadong, ay hindi lahat na kawili-wili. Natin ang aktwal na magkaroon ng Scratch hindi ngiyaw, ngunit ilipat. Hayaan akong pumunta sa Motion at ilipat 10 hakbang loob of-- Whoops, hayaan mo akong ayusin ito. Ipaalam sa akin ito ilipat 10 steps-- actually, huwag ni huwag ulitin. Hayaan akong mang-agaw ng control block, at gawin ang sumusunod magpakailanman. Forever, ilipat 10 hakbang. At i-click Play. OK. Kaya thankfully, siya tumitigil. Kung hindi man, ang mga bata ay makakuha ng tunay mapataob kapag sila uri ng mawala ang kanilang pusa. Ngunit hindi bababa sa maaari kong i-drag siyang pabalik sa screen. Ngunit ito ay hindi lahat na na malaki sa pangangatawan ng isang laro o animation. Mas maganda kung marahil siya bounced off sa gilid. Ano na ang gagawin natin? Ano tayuan na kailangan namin upang magkaroon ng Scratch magpasya sa bounce, sa tingin mo, kahit na sa iyo hindi kailanman tumingin Scratch bago? Yeah, sa likod. Madla: Kailangan mo ng kung block o kung-pagkatapos. David MALAN: Oo, kaya ang ilang mga uri ng kung block o kung-pagkatapos. Kaya talaga, mayroon kaming isa sa mga ito dito. Kaya if-- kaya hayaan mo akong makakuha ng alisan ng kilusan. Hayaan akong mag-zoom in sa gayon ito ay mas malaki. Kaya kung paano tungkol sa ito. Forever, kung Sensing-- hindi namin nakita ito bago. Kailangan ko ng isang Boolean expression. At ito ay lumiliko out kung hawakan kung ano? Kung pagpindot sa gilid, kung ano ang gusto kong gawin? Well, kung pumunta ako pabalik sa Motion, lumiliko out, oh, ang maaari kong i-sa paligid. Hayaan akong i-drag ito sa dito. Bakit hindi ko sige at bumwelta 180 degrees? At ngayon, ipaalam sa akin lamang ilipat sa dulo. Maaari ko bang ilagay ang kilusan sa simula o dulo. Ngunit logically, sa tuwing ako ilipat, ako nais na tingnan, ako ng pagpindot sa gilid? Ako ba ay pagpindot sa gilid? Ako ba ay pagpindot sa gilid? Kaya na logically ko bumwelta kung gayon. Kaya ipaalam sa hit ni play. OK. Kaya ito ay bahagyang maraming surot, kaya na magsalita. At isang bug ay lamang ng isang pagkakamali sa isang computer program. Ngunit hindi bababa sa ito ay gumagana. At sa katunayan, ang maaari kong pumunta sa dito. At hayaan mo akong gawin itong hindi 10 hakbang sa isang oras, ngunit ito ay ang lahat animation ay. Ito ay ang lahat ng isang cartoon o kahit na isang pelikula ay. Hayaan akong ilipat 20 hakbang sa isang pagkakataon. Kaya 20 beses na mas maraming mga bagay ay nangyayari isang beses, o dalawang beses bilang marami, sa kasong ito. At siya ay paglipat ng mas mabilis. Hayaan akong baguhin sa 30. 100. 1,000. At ito ay pagpunta talagang mabilis. At ito is-- yeah, OK. Kaya ngayon kami ay lamang messing sa mga ito. OK, kaya maraming surot. Ngunit maaari naming i-drag sa kanya sa labas ng paraan dito. Ngunit maaari naming gumawa ng mas masaya na may ito, masyadong. Paano ang tungkol sa this-- siya baligtad. Ngunit ito ay lumiliko out Scratch-- at doon ay talagang, Kailangan ko bang itatwa, walang academic halaga sa kung ano ako tungkol sa upang gawin. Ngunit kung buksan ko up ang mikropono, sabihin hihinto sa kanya at gawin ang isang bagay tulad nito. Ouch! [LAUGH] Iyon ay kaibig-ibig. Salamat. Ngayon, ito ay kung ano ang aking tinig Mukhang kapag ako sumigaw ouch. Hindi sa tingin ko kami ay nahuli ang iyong pagtawa. Iyan ay OK. Hayaan akong i-save ito bilang "ouch." I-save ito bilang "ouch" Hayaan. At ngayon kami ay bumalik sa Scripts. At ngayon ako need-- sabihin makita, Sound. Oh, play ng tunog ouch. Kaya kung ako hawakan sa gilid, hayaan mo akong unang pag-play ouch, at pagkatapos ay bumwelta. At ngayon sabihin ilagay natin siya sa gitna. [Sinasabi ng "OUCH"] Dalawang beses bilang mabilis. OK. Ngunit ito ay literal ginagawa kung ano ang ako sinasabi. Kaya ito ay sa katunayan tama, ito ay lamang ng isang maliit na nakakainis mabilis. Kaya sabihin magdagdag ng isang bagay mas interesante sa mga ito. Hayaan akong aktwal na buksan up isa na aking ginawa nang maaga, aptly tinatawag Pet ang Cat, na ginagawa ito. Narito ang script up dito. Ano itong pagpunta sa gawin sa mga tuntunin ng Ingles? Ano ang ito dinisenyo upang gawin? Yeah, hana some-- oo? Madla: Kapag kayo pet ang pusa, ito meows. David MALAN: Oo, kaya kapag ikaw pet ang pusa, ito ay pagpunta sa ngiyaw. Kaya sa ibang salita, mayroong ngayon isang magpakailanman loop pa rin, na sinamahan sa isang kondisyon, na sinamahan na may isang Boolean expression, na sinamahan ng isang pares ng pag-andar, ang epekto na kung saan, sa sandaling i-play ko ang program na ito, ay wala mangyayari hanggang ilipat ko ang cursor mas malapit at mas malapit at mas malapit at- [MEOW] Pagkatapos ito ay tulad ng petting ang pusa. [MEOW] Isang beses lamang ang iyong aktwal na ilipat ang cursor sa ibabaw niya. Ngayon, ako din wip up huwag pet ang pusa, na kung saan ay ito sa halip. [Meowing] Kaya siya lang patuloy meowing. [Meowing] Ngunit kung ikaw ay makakuha ako masyadong close-- [Meowing] [ROAR] Kaya kung paano ito gumagana? Ngayon ko na lang ay isang two-way tinidor sa kalye. Kung hawakan mouse pointer, pagkatapos i-play ang leon sound. Else lamang-play ang meow tunog, at pagkatapos ay maghintay ng tatlong segundo kaya na ito ay uri ng paggawa ito tunay tranquilly. Lahat tama. Kaya na ang pagsasama-sama ng ilang karagdagang mga ideya pa rin. Tingnan natin ang isang pagtingin sa halimbawa na ito Ko wip up na tinatawag na thread. At ang isang ito ay sa panimula naiiba sa na ito Pinakikinabangan isang tampok ng maraming programming language na tinatawag threads, ang kakayahan ng isang programa upang literal gawin ang dalawang bagay nang sabay-sabay. Sa katunayan, ang mga araw na kung gumagamit ka ng Google Docs o Microsoft Word, at ang iyong mga dokumento ay patuloy na pagiging spell-check kung paanong type-- mo o ikaw hit Command-P o Control-P at i-print ang isang bagay, ito ay pag-print habang patuloy mong mag-type. Programa ngayon nga maaari gawin ang maramihang bagay nang sabay-sabay, tulad lamang sa simula dito. Kaya dito, mayroon akong dalawang sprites ngayon, isang ibon at isang pusa. At kung ako mag-click sa bawat isa sa mga character ng isa sa isang panahon, nakikita ko ngayon ang ibon script sa kanang tuktok. Ngayon nakikita ko ang pusa ni. Ibon, pusa ni. Kaya bawat isa sa kanila ay may kanilang sariling script. Ngunit paunawa, kung ano ang puzzle piraso sila parehong magsimula sa? Kapag berdeng bandila click. At ibon, kapag berde bandila na-click. Kaya kapag nag-click ko ang green flag, pareho ng mga script o mga programa ay pagpunta sa tumakbo sa parallel. At mapapansin mo na ang mga ibon ay lamang mindlessly nagba-bounce off sa gilid. Ang pusa malinaw ay program na may isang strategic advantage. at- [ROAR] Lahat tama. Kaya ang pusa nahuli ang ibon sa kasong ito. Bakit na? Well, notice unang kami na lang ay ang ibon lamang mindlessly pagpunta sa ito sa unang lokasyon, at pagkatapos ay magpakailanman, kung hindi hawakan ang pusa, lamang ilipat. At kung ikaw ay sa gilid, bounce. At lamang ilipat. At kung ikaw ay sa gilid, bounce. Ngunit ang pusa, samantala, ay may ilang karagdagang lohika na nagsasabing this-- una, kaya lang na ito ay hindi ganap na kampi laban sa mga ibon, mapapansin na na hindi ko na ginagamit ng isang green na piraso puzzle doon na talagang Picks isang random na numero. Ang isang tampok ng maraming mga wika ay upang bigyan ka ng mga random o pseudorandom numero. Kaya sa kasong ito, ang cat sa una pinipili ng isang random na numero sa pagitan ng, tulad ng, 90 degrees at 180 degrees, mahalagang, kaya na mayroong isang maliit na piraso ng pag-iiba. At pagkatapos ay magpakailanman, kung hawakan ang ibon, i-play ang leon sound. Kung hindi man, ituro lang sa dakong ibon. Ituro sa dakong ibon. Point patungo sa ibon, kung saan ay isang puzzle piraso unto mismo sa kasong ito. Well, maaari naming gawin ang isa pang bagay dito. Hayaan akong buksan ang programa ng mga kaganapan dito. At dito tayo ay muli ay may dalawang sprites, na tumingin tulad ng mga ito ng dalawang puppets dito. At kung ano ang kawili-wiling dito ay na ito. Ang kulay kahel na guy na ito ay may hanay ng mga piraso ng puzzle dito. Forever gawin ang following-- kung ang space bar ay pipi, iyo ngang sabihing, Marco, at pagkatapos ay broadcast ng isang kaganapan. At samantala, ang mga asul na guy dito ay may this-- kapag nakatanggap ka ng mga kaganapan, sabihin Polo. Kaya ito lumiliko out sa scratch at sa iba pang mga wika, may mga paraan para sa dalawang mga programa o dalawang mga script, sa kasong ito, upang makipag-usap sa gayon ay kapag ako pindutin ang space bar, sabi niya Marco. At ang iba pang isa nakakarinig na, kaya na magsalita, at sabi ni Polo bilang tugon. Kaya maaari mong isulat ang mga programa na talaga makipag-ugnayan sa ganitong paraan. At kung gagawin ko ang isang ito sa halip, Maaari ko bang kahit na magdagdag ng mga variable, lamang gamit ang isa sprite sa kasong ito. Isa na ito ay lalo na nakakainis. [SEAL Barking] Ngayon, pansinin sa kanang namin nakuha ilang karagdagang lohika sa paglipas dito. Paano ko ihinto ang tatak nito mula tumatahol? [SEAL Barking] Mukhang sa kanang-kamay bahagi ay kung ano ang pag-play ng tunog. Ngunit lamang ito ay naglalaro ng isang tunog kung ano ang totoo? Kung ang isang variable-- orange block-- naka-mute ay zero. Paano ko papalitan ang naka-mute na maging 1, ibig sabihin ay totoo, gumawa ito ng naka-mute? Sa malas, ang iba pang mga script, maaari ko pindutin ang space bar, at ngayon siya tumitigil. Upang maaari naming magkaroon ito ng pakikipag-usap buong script, pati na rin, sa pamamagitan lamang ng pagbabahagi ng isang variable sa kabuuan ng dalawang tulad nito. Ngayon, ito ay hindi lahat na kawili-wili. Sabihin sige at gawin ito at pagsamahin isang pulutong ng mga ideya sa programang ito dito. Bago namin gawin iyon, bagaman, kung paano tungkol sa isang volunteer? Hayaan akong gawin ang presyon off ng sa akin dahil hindi ko talaga play ang laro. Sabihin magkaroon ng isang tao Hayaan namin hindi nakita bago. Mayroon kang upang maging komportable darating up sa entablado dito, sa camera. OK, dumating sa up. Very matapang. Ano ang iyong pangalan? IDRIS: Idris. David MALAN: Sorry? IDRIS: Idris. David MALAN: Idris, nice to meet you. Pumasok dito up. At ngayon, sa iyong sariling mga mobile phone, mo pinaglalaruan Pokemon GO? IDRIS: No. David MALAN: Really? IDRIS: Yeah. David MALAN: OK. Lahat tama. Well, nice to meet you. Halika dito. Gagawin ko hindi alinman. Kaya makikita namin malaman kung sama-sama kung paano i-play ito, na kung saan ang isang tao talagang yumaon at ipinatupad sa Scratch sa pamamagitan ng pagbabago ang pusa sa mahalagang ibang mga character ang lahat ng sama-sama. At kung fullscreen ko ito dito, kami ay pagpunta upang makita ang mga sumusunod na laro sama-sama. Still loading, pa rin naglo-load. Pumasok dito. Hayaan akong gawin ito. Pumasok dito. Ang larong ito ay kaya malaki na ito crashed. Stand sa pamamagitan ng. Subukan ito nang isa pang beses. Pumasok dito. Lahat tama. Mayroon kaming pumunta. OK. Green flag. Kaya dito kami pumunta. [MUSIC nagpe-play] Piliin ang gitnang antas dito. I-click ang mga asul na guy doon. Lahat tama. At maaari mong gamitin ang mga arrow keys-- pataas, pababa, pakaliwa, pakanan. Ngayon, sabihin isaalang-alang tulad ng ginagawa namin this-- at pagkatapos ay pumunta pagkatapos ng character doon. Yep. At ngayon mag-click sa kanya gamit ang mouse. Oh, yeah. Ilipat. Saan ang arrow? Dito ka pumunta. Kaya mag-click sa doon. Yeah. Lahat tama. Kaya ngayon, ako sinabi mayroon kang isang Poke ball, na kung nag-click ito, ito ay gawin na. Very good. Sa pagsasanay para sa ngayon, ako natagpuan ang bersyong ito ng laro talagang hindi masyadong mahirap. Kaya kung nais mong upang pumunta muli dito, maglakad pababa sa ito Poke ball. At pagkatapos ay pumunta kumuha ng karapatan. Subukang i-click sa mga ito. Oh, talaga, na ang dahilan sa tindahan, sa malas. OK kaya isara iyon. Hindi kailanman tapos na bago. Siguro pumunta ng hanggang sa ang bagay na ito up dito. Oh, mayroong kang pumunta. Maghintay, mayroong isang banda roon. Oh, may isa pang. OK. Down. Yeah, i-click. OK, na very cute. OK, napaka-magaling. Ang larong ito ay hindi masyadong mahirap. OK. Congratulations. Dito, kami ay may isang CS50 stress ball para sa iyo. Subalit isaalang-alang para sa isang sandali kung ano ang ang ilan sa mga takeaways ang naroon. Mas madali kaysa sa ang tunay na laro, tila. Ngunit lahat kami ay pagpunta sa dito ay isang character na marahil ay may ilang mga uri ng loop na nauugnay dito. Ito ay hindi isang cat. Ito ay ang karakter na ito sa halip. At na loop ay lamang patuloy na na sinasabi, kung up arrow pipi, kung down arrow pipi, kung kaliwang arrow pinindot o pakanan palaso pinindot, umakyat o pababa o pakaliwa o pakanan. O kung may isa pang malaking suliranin piraso doon na nagsasabing kapag pagpindot ng isa pang engkanto, kapag pagpindot isa sa mga character sa Poke ball, kung hinahawakan, at pagkatapos ay gawin ito. Kaya lahat ng mga ideya na namin ay gumagamit ng sa gayon ay malayo talaga maaari lamang ilapat sa partikular na konteksto upang i-play ito laro, pati na rin. Hayaan akong magpatuloy at hilahin up ng isa pang dito, sa katunayan. Hayaan akong magpatuloy at hilahin up, sabihin nating, na ito. Ito ay isang bagay na namin remixed. Ginawa ni isa sa aming mag-aaral sa Cambridge, at pagkatapos ay nagpunta ako sa pamamagitan at nagbago medyo magkano ang bawat pagkakataon ng Harvard sa Yale oras na ito. Gusto isang tao nais na makipagkumpetensya laban sa mga Ivies dito sa ibang akumulasyon ng lahat ng mga ideya? Halika sa down, yes. Ano ang iyong pangalan? DINA: Dina. David MALAN: Adina? DINA: Dina. David MALAN: Dina, dumating sa pababa. O sige, Dina. Kaya laro na ito ay makakakuha ng mas mahirap at mas mas mahirap, dahil sa larong ito, mayroong mga variable na ginagamit pati na rin na patuloy sa pagpapanatili ng track ng kung ano ang antas ng ikaw ay sa laro. So nice to meet you. Halika sa paligid dito. At kaya ang layunin dito ay upang ayusin ng gawin ang iyong paraan sa pamamagitan ng isang maze na ang estudyante na ito ipinatupad. At lamang upang itakda ang yugto, ang bawat isa sa mga larawan sa screen ay kanyang sariling sprite, ang sarili nitong character. Kaya ang mga ito ay sa pamamagitan ng default cats, ngunit ang mag-aaral ay nagbago ang mga ito sa iba't-ibang Ivies logo dito. At pagkatapos ay makikita mo na lang sa pamamagitan ng paggamit na mga kondisyon at mga loop at pag-andar at higit pa, makakakuha ka ng ito. [MUSIC nagpe-play] [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Yeah, OK. Yeah, panatilihin ang pagpunta. Unang antas ni napakadaling. Lamang ka na kailangan mong pumunta sa banda roon. Ngunit muli, isaalang-alang, ito ay lamang ng isang loop pakikinig sa pana keys-- pataas, pababa, pakaliwa, pakanan. At ngayon ng isang sensing block. Very nice. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Very nice. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Very nice. Medyo madali, Crimson. Lahat tama. Levels-- uh-oh. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] At muli, sa mga tatlong Harvard crests, mayroon na lamang kayong logic sinasabi kung sa gilid, bounce. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] OK, ano ang iyong ginagawa ay mas kawili-wiling kaysa sa kung bakit. Very nice. Very nice. Uh-oh. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Sa tingin ko ikaw ay may na isakripisyo ang iyong sarili. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Quick! [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Nice. Iyan ay OK. Makakakuha ka ng mga ito. Oo, oo! Very nice. [Pagpalakpak] [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Nice! [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Nakuha ko. Halika sa! Pangalawa sa huling antas. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Lahat tama. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Oo. Magandang paggamit ng mga variable dito. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Oo. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Nice. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Ito ay OK. Mayroon kaming upang makakuha ng sa dulo. May. Oh! [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Maaaring tumakbo late ngayon, ngunit ito ay gonna maging katumbas ng halaga. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Kaya mo yan! Yeah! [Pagpalakpak] [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Isa na ito ay talagang mahirap. [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Bibigyan ka namin ng dalawang higit pang mga buhay. Magagawa mo ba yan? [MUSIC - MC HAMMER, "U CANT TOUCH  ITO "] Lahat tama. Paano ang tungkol sa isang malaking ikot ng papuri gayunman. Nakuha mo sa ikalawang sa huling antas. Salamat. [Palakpakan] Kaya ito ay lamang na sabihin kung magkano ang iyong ay maaaring gawin sa mga ganitong uri ng mga bagay. At mapagtanto, masyadong, upang pangyayari mga piraso ng puzzle huwag exist-- at sa katunayan, ito ay pagpunta sa maging isa ng mga kapangyarihan sa mga unang problema set at beyond-- ay upang aktwal na lumikha ng iyong sariling grupo. At ito ay lamang ng isang snippet ng isa sa mga halimbawa mapapasok mo na ang upang i-play sa online, kung saan kung hindi mo inilagay sa Scratch isang bagay tulad ng isang piraso ubo puzzle, maaari mong talagang gawin ito sa iyong sarili. At kaya ang lahat ng ito at higit pa awaits. At lamang sa pintura ng isang pangwakas na larawan ng katunayan kung ano ang maaga sa tindahan para sa mga klase para sa iyo, batay sa ilang mga larawan mula sa mga kamag-aral nakaraan, payagan ako sa madilim ang mga ilaw isa huling oras at ipapakita sa iyo CS50. [MUSIC nagpe-play] Lahat tama. Iyan na ang lahat para sa CS50. Cake ay ngayon nagsilbi. [MUSIC nagpe-play]