>> David: Maligayang pagdating, ang aking pangalan ay David Malan at ito ay CS50. At, ito ay hindi ang iyong mga tipikal na mataas na paaralan na kurso computer science. kurso na ito ay isang maliit na bagay na espesyal. At ito ay dahil hindi ako ng pagtuturo ito. ito ay dahil ito ay isa, tulad namin mag-isip, ang mga bihirang mga kurso na talaga squeezes ang iyong utak kaya marami at ang iyong iskedyul kaya marami na sa pamamagitan ng dulo ng semester ka na tunay na pakiramdam mas madunong. Kaya, na ang paraan ko nadama kapag ako ay kinuha ang aking sarili na ito kurso sa likod sa 1996. Ako ay isang malaking pamahalaan sa panahon dito na naninirahan sa Mather House. At, I. [Pagpalakpak] Habang ang mga iba pang, ang limang iba doon. Kaya, ako ay isang malaking pamahalaan sa panahon. At ako ay isang malaking pamahalaan dahil lagi ko gusto nagustuhan kasaysayan. Nagustuhan ko constitutional batas sa mataas na paaralan. At sa gayon, ako magse-set off sa freshmen taon path paggawa kung ano ang pinakamahusay na ko, kung ano ang ginagawa ko Alam ko nagustuhan. At lagi ko gusto ay isang bit ng isang geek, lagi ko gusto babbled sa computer. Ngunit, ako ang aking sarili, marahil balintuna sa alaala, lagi ko gusto tiningnan ang guys na ang pagkuha ng computer science sa aking mataas na paaralan, ang aking mga kaibigan bilang ang tunay na geeks. At pa, sa wakas ay, sopomor taon kumuha ako ito maliit kurso na tinatawag na CS50 kung saan ay talagang natakot ako malayo sa aking sariling mga presman taon. At ako ay gumagamit ng isang katulong sa oras. Kaya, ako ay tiyak na karapat-dapat, hindi bababa sa, maging sa mga, ang mga geeks na aking ginawa fun ng sa mataas na paaralan. Ngunit, ako ay natakot. May ay, ito ay reputasyon ito sa oras at marahil pa rin sa bahagi na ito ay isang, ito ay isang nakakatakot kurso. Iyon ay isang pulutong ng mga trabaho. Ito ay mahirap at pa, ito ay isa sa mga bagay na kung saan, ang aking Diyos, ang mga bark ay malayo mas masama kaysa sa kagat nito. Ko nahanap ang aking sarili sopomor taon, sa unang pagkakataon, ang tunay na paghahanap ng mga araling-bahay masaya. At hindi ko sinasabi na ito lamang sa sukdulang ito kurso sa iyo. ito ay isang tunay na katuparan para sa akin. Ngayon, tingin ko, sa isang punto, ako nag-cross ang linya sa tunay na geekdum kung saan ako tunay na ginagamit upang tumingin forward sa Biyernes gabi dahil kaya kong kulot up sa harap ng aking maliit na MacBook at magtrabaho sa set ng problema CS50's. Kaya, sa puntong iyon, tingin ko malinaw na ako ay cross ang linya. At, ang aming layunin sa kurso na ito ay hindi upang buksan ang lahat ng ka sa taong iyon, ngunit, lamang sa mga sinasabi na mayroong isang maliit na bagay tungkol sa mga espesyal na kurso na ito, ang isang maliit na bagay tungkol sa mga espesyal na computer science sa pangkalahatang lalo na mga araw na ito. At, mas acclimated sa lahat ng aming got sa teknolohiya, ang mas maraming mga laruan dalhin sa paligid namin sa aming mga pockets na ang kanilang mga sarili computer. ibig sabihin ko, ang aking iPhone ay talagang isang mas mataas na pagpapalabas na computer sa aking laptop ay sa kolehiyo. Maaari mong gawin ang isang pulutong ng mga bagay na malinis sa mga bagay na ito. At ngayon, karamihan ng sa amin sa ang kuwartong ito, marahil makatarungan gumamit ng ibang tao software, ng ibang tao mga kasangkapan, mga ibang tao solusyon sa mga problema dahil pumunta kami sa iTunes, i-download namin ang ilang mga app mula sa mga app store at Walla maaari naming gawin ng isang bagay talagang malinis. Ngunit, sa pagtatapos ng semester na ito, maaari mong maging ang mga tao na gumagawa ng paglutas ng problema. Maaari kang maging ang mga tao paglutas ng ilang mga problema, gusali na app, na piraso ng software, na tool na, ang alinman sa, isa lamang amuses ako, amuses mo. halimbawa, sa pagkontrol, sabihin, ang iyong iTunes library mula sa iyong apartments malinaw na ang isang app na ay mayroon na o maaari mong mahanap ang mga iskedyul arabal na mas madali para sa mga halimbawa. Kaya sa katunayan, ang isa sa mga tunay unang bagay ako did pagkatapos pagkuha CS50 ay muli, ito ay marahil sa puntong ito gabi Biyernes at Sabado gabi, nagkaroon ng ganitong pagkakataon sa panahon na kung saan ang Harvard ay tumatakbo ang bus shuttle. At, sa araw na ito, sila pa rin ay may nakalimbag na mga iskedyul. Subalit, may tunay ay hindi nangangahulugan ng online na paghahanap ng mga out kapag ang mga susunod na kahon ng mesa ay. Ngayon, ako ay hindi pag-aalaga, dahil kahit ako nanirahan sa Mather ako ay hindi kabilang sa mga karaniwang kinuha ang shuttle. Ngunit, ako ay nagkaroon ng isang pulutong ng mga kaibigan sa Pfoho halimbawa. At isa sa kanila tinanong sa akin, tingin ko sa sa isang punto. [Pagpalakpak] Okay Pfoho's mas mahusay kaysa sa Mather malas. Kaya, ang isa sa aking mga kaibigan sa uri ng got ako iniisip marahil ako magsulat ng isang maliit na programa sa uri ng tulong ang aking kaibigan na i-check ang kahon ng mesa iskedyul. At sa gayon ay ipinanganak ang awkwardly pinangalanan boy kahon ng mesa, ito piraso ng leksikon na may nagtutulog sa paligid para sa ilang bilang ng mga taon ng hindi bababa sa ilan sa mga upperclassmen. Sa oras, ito ay ang maliit na command line programa sa mga katulad na espiritu sa Dos. Ito ay tumatakbo sa isang kapaligiran sa UNIX. Kaya, ito ay hindi masyadong sexy sa lahat. Ikaw lamang ang nag-type ng isang command at ilang ito sinasabi sa iyo kapag ang shuttles ay. Well, mga araw na ito ito ay isang maliit na mas sopistikadong. At, tunay na ito ay kinakatawan ng mga tiyak na mga uri ng mga proyekto na ang mga mag-aaral na ito sa kurso end up ng paggawa sa pamamagitan ng mga kataga dulo. Kaya, ito ay apat na bersyon, ang ilang 15 taon mamaya, ng Shuttleboy. Parang ang Google Maps ay isang bit mabagal doon. Subalit, para sa mga ng sa iyo na may sa kumuha lumitaw ng dito pagkatapos ng klase at pumunta, sabihin, mula sa Memorial Hall at kailangan upang pumunta hanggang sa, sabihin, ang mga patyo sa loob. Well, maaari mong iwan ang alinman sa dalawang minuto kung sa pamamagitan ng, ito tunay ay hindi gumagana para sa iyo lamang pa, o ikaw ay may bilang marami pang ibang mga opsyon na maaaring gusto mo. At, pagdating sa lalong madaling panahon, maaari naming itayo ito mula sa CS50, ito ay ang parehong kakayahan sa pamamagitan ng SMS. Ka maaari teksto Shuttleboy sa pamamagitan ng telepono. tumawag ka Shuttleboy. numero ng telepono CS50's sa taong ito, well, amazingly na ito ay magagamit, 617-bug-CS50. Kaya, na ang debut ay lalong madaling panahon. Kaya hindi na tawag ito makatarungan pa dahil ko na hindi tapat na paraan reprimanded para sa, ngayon ito ay dadalhin sa cell phone ang aming sistema ng pagtuturo ng ulo kapwa's. Kaya, makikita mo lamang makuha sa kanya kung mayroon kang mga katanungan tungkol sa iskedyul shuttle ngayon. Subalit, na ay malapit nang ipatupad. Kaya, ang ibang mga bagay, talaga, na namin na ginastos sa ating sarili na ito ng tag-init sa tunay sa paghahanda para sa semestreng ito ay isang buong paglangkay-langkayin ng iba pang mga problema na namin pinaghahanap upang malutas. Halimbawa, may isang buong pulutong ng mga bagay-bagay na napupunta sa sa campus na ito sa isang araw. At sa katunayan, maglagay ng isa pang paraan, may isang buong pulutong ng mga bagay-bagay pagpunta sa ito sa campus na ako tiyak hindi samantalahin. At, kahit na ngayon ako bumagsak sa kung gaano karaming mga bagay na nangyayari, sa campus, ako pa rin tila hindi upang mahanap ang oras. Subalit, Walla, kahit doon, CS50's panayam. That's na kung saan kayo ay, sa gayon ito ay isang, ito ay isang programa namin wrote pinagsamang sa lahat ng mga kaganapan sa campus. At ito ay isang bagay na ang ibang mga mag-aaral sa parehong kurso ay tackled sa kanilang sarili. At, kami ay nagtatrabaho sa ibang mga nilalang sa campus na talagang gawin ito mangyari. Subalit ang punto sa CS50 ito kataga ay na ang lahat ng mga maliit na mga programa namin ay nagtatrabaho sa kung ito ng isa o kung ang isa para sa aggregating ang lahat ng Harvard's balita sa isang lugar, ang lahat ng mga Google News, ang lahat ng mga bagay na ito ay pagpunta sa magkaroon ng kung ano ay tinatawag na API's, application programming interface. At ito ay lamang magarbong magsalita para sa mga kakayahan ng pagpapaalam sa ibang mga tao, mga tao sa ang kuwartong ito, ang tunay na paggawa ng isang bagay na may parehong data. Kaya, sa pamamagitan ng mga kataga dulo, kung magpasya ka na ipatupad ang huling proyekto na may kaugnayan sa mga balita o mga kaganapan o mga mapa, rin namin, hindi bababa sa bilang ng isang kurso, ay gumawa na ng lahat ng mas madali sa taong ito sa pamamagitan ng pagbibigay sa iyo ng isang interface; isang uri ng function, kaya na makipag-usap, software na maaari mong gamitin sa iyong sariling mga proyekto upang pumunta sa itaas at sa kabila kung saan ang mga mag-aaral, marahil, ay nawala sa nakaraang ulit dahil sa balangkas na ito ay hindi pa sa lugar para sa kanila. At muli, ang lahat ng ito ay nagsimula, para sa akin ng hindi bababa sa, ang ilang mga 15 taon na ang nakaraan pagpapatupad Shuttleboy. Ako pagkatapos-email ang aking mga kaibigan Ken sa Pfoho. Ako sinabi hey kung ano sa tingin ninyo? Ay ito kapaki-pakinabang? Siya ipinakoreo ito sa Pfoho buksan listahan at Walla, ang lahat ng mga taon mamaya ako pa rin tila paggatas sa proyektong ito. At ang mga bagay na malinis ang tungkol dito, at ito ay kung saan masyadong ng kurso tulad ng ito sa engineering at computer science, sa tingin ko, ay isang maliit na espesyal na, ay na, kapag ginawa mo ang iyong bahay ay gumagana at kung kailan mo gawin ang iyong mga proyekto sa kurso na ito, kayo alam, marami sa kanila, yes, kayo likumin at hindi tunay na gamitin muli. Subalit, ilan sa mga ito, ikaw ay. At may ito talagang malakas na bagay, hindi bababa sa para sa akin, ito tunay nakapupukaw bagay, kapag gumawa ka ng isang bagay at iba pang mga tao na tunay na pag-aalaga, ng iba pang mga tao ay hindi lamang ang ngiti at tapik iyong sa likod at pagkatapos ay uri ng pumunta tungkol sa kanilang sariling buhay. Sila ay aktwal na gamitin kung ano ang iyong ginawa sa kanilang sariling buhay kahit na ito ay para sa isang bagay na uto o bilang simpleng bilang lamang ang paghahanap ng kapag sila ay maaaring makakuha ng out dito upang makatawag ng susunod na kahon ng mesa sa patyo sa loob. Kaya, sa pamamagitan ng mga kataga dulo, na ang isa sa mga layunin para sa kurso; upang magbigay ng kapangyarihan mo guys sa makatarungan kilalanin ang ilang mga problema kung ito ay sa campus o sana rin lampas campus, at talagang gamitin ang iyong sariling mga kasanayan, ang iyong sariling isip at malutas na ang problema sa ilang mga bahagi, technologically. Kaya, ito ay din ng kurso bilang namin sabihin sa syllabus at ang mga kurso paglalarawan opisyal na nagtuturo sa iyo kung paano mag-isip at ito nagtuturo sa iyo kung paano upang malutas ang mga problema sa mas mahusay. Well, kung ano na ang ibig sabihin nito? Well, kapag nakuha mo na 600 megahertz sa iyong bulsa o tatlong gigahertz sa ilalim ng iyong desk sa bahay, maaari mong malutas ang isang pulutong ng mga problema sa mahusay na sa pamamagitan lamang ng gupitan malupit na puwersa. Subalit, may isang pulutong ng mga problema sa mundo, kung ito ay naghahanap, sabihin, Facebook's network o sa internet sa pamamagitan ng Google, na ito ay hindi bagay paano mabilis ang iyong mga partikular na computer ay, walang paraan sa impiyerno ka na pagpunta sa paghahanap bilyon-bilyong mga pahina ng web na mabilis na maliban kung ang tunay na diskarte ang problemang ito intelligently. Hindi mo lamang ng paghahanap, halimbawa, isang malaking listahan ng lahat ng mga pahina ng web sa lupa mula sa tuktok sa ilalim naghahanap ng isang bagay na may kinalaman sa anumang mga kataga sa paghahanap ang iyong hinahanap para sa mga inaasahan namin na ang Google at siguro Google at Facebook at ng anuman sa mga malalaking entidad magkaroon ng isang pulutong ng mga tao matalino na pag-iisip tungkol sa kung paano nila mahanap ang data ng mas mabilis, kung paano sila proseso ng impormasyon nang mas mahusay, at, kung paano sila lamang karaniwang mga resulta nang mas mabilis kaya na maaari mong gawin pa, mas kagiliw-giliw na mga bagay-bagay sa mga aparatong. At sa gayon, ano ang ibig sabihin namin, bagaman, sa pamamagitan ng kung paano, pagtuturo kung paano mga tao sa tingin mas mabuti, mas algorithmically. Well, ito kaunti visual lagi tila sa pumunta sa ibabaw ng mabuti. At, ito ay anyong matatandaan. At kahit na ako ay nagtanong lang kahapon ng isang dating mag-aaral, oh ikaw ay pagpunta sa gawin ang mga bagay Talaan muli. At ako medyo marami sa mga lugar ay nagpasya tama ba na kami ay bumuo ng isang Talaan bagay. At siya ay nagtanong sa akin kapag kayo torus ito sa kalahati karapatan, ako ay tulad din yeah technically namin torus ito sa kalahati ngunit hindi sa paraan, sa paraan ng computer science ako ay ma-luha bagay na ito sa kalahati. At sa gayon, dito ay ang problema na namin iniharap para sa ilang oras. Kaya, dito ay ang Talaan. It's got hindi bababa sa isang libo o kaya mga pahina. At ang mga simpleng layunin sa kamay tunay tunay na mundo ay para malaman, halimbawa, ang isang tao sa dito. Kaya, Mike Smith, huling pangalan na nagsisimula sa S. Kaya, ako ng isang karaniwang tao, ako kunin na ito ng telepono ng libro. At kahit sino lumitaw diyan, kung ano ang gagawin mo, ang isang pangkaraniwang tao, gawin na simulan ay humanap Mike Smith, nang walang alinlangan hindi alam in advance kung ano ang pahina niya ay talagang sa. Kanan, kaya pumunta ka halos sa gitna, kanan. At sa puntong ito sa mga kuwento, ako ay marahil sa ang N o M's, alam mo, halos kalahati na paraan sa pamamagitan ng mga Talaan. Ay lumiliko out, ang huling oras ako did ito halimbawa ako sa paanuman natagpuan ang aking sarili sa seksyon ng samahan. Kaya, ito ay talagang hindi pantay sa pagitan ng timbang sa pamamagitan ng isang M at N sa pamamagitan ng Z. Subalit, sa araw na ito, kami ay, sa katunayan, sa mga M's, mabuti na ito, ngayon ako sa M's. Ngunit ano ang aking takeaway ngayon lamang bilang isang normal na tao off ng kalye? Saan ako pumunta para sa susunod na Mike Smith. [Hindi marinig] At sa gayon, marahil lamang sa kalahati ito, karapatan, dahil S lumapit matapos M. At kaya, dito kasinungalingan ang visual na drama. Iyan ay hindi tunay pansiwang ito sa kalahati, kanan. Ako uri ng ginulangan down ang center. Subalit, kami ay ngayon malaman na Mike ay hindi bababa sa hindi na kalahati. Maaari naming literal ihagis sa kalahati ng mga problema sa malayo. At ako naiwan sa problema na panimula pa rin ang parehong bagay, hanapin ang Mike Smith sa isang tunay malaki libro. Subalit, ang problema ay ngayon kalahati ng malaki. Kung ito ay isang libong pahina ng bago, ngayon ito got 500. alam mo kung ano, ang maaari kong gawin ang mga parehong bagay muli. ako uri ng recursively o paulit-ulit na gawin ang mga parehong bagay. Ngayon ako ay hindi lubos sa S. ako sa T. At sa gayon, oh nagpunta ako sa isang maliit na masyadong malayo. Subalit, alam ko na ngayon na Mike ay hindi sa kanan, may pagpunta sa maging ang ilang mga klase sa ibang araw kung saan ko lamang ay hindi maaaring mapunit ang dam bagay, ako taya. Ngunit ngayon, alam ko siya ay hindi sa kanan. Kaya, ngayon ang problema ay quartered. Kaya, ako ay nawala mula sa isang libong sa 500-250 pages. At muli, kung ipagpatuloy mo ang lohika, magpatuloy sa matematika, ako matangkad at malusog ang problemang ito sa kalahati, sa kalahati, sa kalahati hanggang sa wakas ako ay alinman sa pagpunta sa hindi mahanap ang anumang Smith sa lahat, walang kasiguruhan, o ako ng pagpunta sa hanapin ang isang Naghahanap ako. Subalit, na, pagkatapos, begs ang tanong, ito ay ang anumang mas mahusay kaysa sa mga simpleng paraan lang ng sinasabi, alam mo, A, nope, B, hindi na, simula mula sa kaliwa papunta sa kanan pagpunta linearly sa pamamagitan ng mga libro? Well, yes katutubo. Ito ay pagpunta sa maging isang pulutong mas mabilis. Subalit, kung magkano ang mas mababa? Well, kung mayroon akong isang libong pahina ng libro ng telepono o sabihin natin 1,024 para sa mga ka na tulad ng kapangyarihan ng dalawa, kung gaano karaming oras na maaari ko bang nahati ang problemang ito sa kalahati bago paghahanap ng Mr Smith? >> Sampung. >> David: Kaya, 10, kanan. Kung mayroon kang 1024 mga pahina at ikaw split ang mga ito sa kalahati, sa kalahati, sa kalahati, sa kalahati, ako na ang sampung ulit na nangangahulugan ko pumunta mula sa 1,000 mga pahina sa taong Naghahanap ako sa loob lamang ng 10 mga pahina ay lumiliko. At iyan ay uri ng kapong baka, ngunit, alam mo, kung sa tingin mo ang tungkol dito mo na na-paggawa na ito ang lahat ng iyong buhay. Ito ay hindi na madula. Ngunit ngayon, na Talaan ay hindi lamang para sa Boston, ito ay para sa buong US o ang buong mundo at ito bagay ay may bilyon-bilyong mga pahina sa loob nito, upang ipalagay ang isang Talaan sa 4000000000 pahina. Gaano karaming mga pahina ay lumiliko ako ay pagpunta sa may sa gawin maximally upang mahanap ang Mike Smith sa isang 4000000000 Talaan pahina? >> Mag-log base 2. >> David: Kaya yeah, kung ikaw ay uri ng uri ng matematika na ito ay mag-log base 2. Subalit, kung sa tingin mo four billion to 2-1000000000, kaya ng isang kalahati ng isang bilyon. ibig sabihin ko, na talagang napupunta whittles mismo down pretty darn mabilis. Sa katunayan sa 32 halvings ng Talaan kahit na mula sa apat na bilyon-bilyong, kukunin ko na makakuha ng down sa isang pahina. At na kapag ang mga bagay-bagay na ito ay makakakuha ng malakas, sa tingin ko. That's kapag ang mga ideya makakuha ng nag-uudyok na kapag maaari kang magkaroon ng isang 4000000000 pahina ng problema at sa 32 mga hakbang na maaari mong hanapin ang taong iyong hinahanap. At ito, na kung ano ang ibig sabihin namin kapag sinasabi namin na kayo ay malaman kung paano sa tingin mas mabuti, mas algorithmically, mas intelligently tungkol sa paglutas ng mga problema. At ang nagbabalik ay napakalaking kapag maaari mong talagang gawin ito, at muli, sa puntong ito ng Googles ng mundo ang Facebooks na ang kasiyahan ng pagkakaroon ng malaking datasets. Mayroon kayong diskarte sa mga problema sa paraan na ito kung ito ay hindi lamang pagpunta sa trabaho. Well, kung ano ang kung ano ang mag-aaral ang aktwal na pagpapabalik? Ko, gusto namin na gawin mga bagay na isang maliit na bit uto kung minsan sa uri ng tumagal ng gilid off ng kung ano sa kabilang banda ay isang pulutong ng mga bagong materyales. At sa gayon, siya talaga, ito dating mag-aaral na ipinadala sa akin ang link na ito kung saan nagpunta ko nga, para lamang sa mga kicks at pagkatapos ay regretted ito sa dulo, hugot up sa uTube dito. Kaya, Akala ko Gusto kong ibahagi ang kung ano ang isang hindi-computer siyentipiko ay nangangahulugan na kapag siya ay luha ng Talaan sa kalahati. [Tawa] [Katahimikan] [Hindi marinig] >> Alam mo higit sa 200 mga pahina, ganda ng malinis na linya, lehitimong luha. [Tawa] >> David: ito, ipagpalagay ko, ang kanyang paraan gumagana masyadong. Kaya, kung ano ako got sa labas ng kurso na ito ang lahat ng mga taon na nakalipas ay yes, Shuttleboy, at pagkatapos ay yes isang degree sa computer science, at pagkatapos ay yes isang PHD sa computer science. At iyan ay hindi kung ano ang aming sinusubukan upang buksan karamihan sa mga mag-aaral sa kurso na ito sa. Karamihan sa iyo sa kurso na ito ay hindi pagpunta sa pumunta sa isang major sa computer science. Ang ilan sa maaari ka menor de edad, ngunit para sa ilan sa iyo na ito ay isang kurso terminal. At iyan ay ganap na ganap pagmultahin dahil sa kurso na ito ay, sa katunayan, nakabalangkas sa isang paraan na kung saan kahit na kung ikaw lamang bayaran ang iyong dues para sa ilang buwan at ikaw talagang focus sa at ka talagang kumuha ng mas maraming out ng mga ito kurso bilang maaari mong, ikaw ay, sa katunayan, maging mahusay sa gamit upang bumalik sa iyong mundo ng ekonomiya, biology, sikolohiya, inilapat matematika, at tunay na gumawa ng paggamit ng kung ano ang huli ay kagiliw-giliw na bilang ng isang kurso ng pag-asa namin sa conceptually bilang na ito ay panimula praktikal. At na masyadong ay isang bagay na marahil ng isang bit bihirang upang mahanap. Akala ko Gusto ibahagi ang ilang mga komento na ang mga mag-aaral mula sa huling mahulog ilagay ito sa nakaraang taon gabay tako kapag tinatanong tungkol sa kung ano ang nais mong sabihin sa hinaharap na mga mag-aaral. Well, kung hindi mo pa tumingin sa mga komento, mag-aaral sa isang kurso sinabi ito ay magdadala sa isang makatarungang halaga ng iyong oras up. ngunit, kung ikaw ay ilagay ang iyong trabaho sa isang buong bagong mundo, isang buong, kung ikaw ay ilagay sa trabaho, kung ikaw ay ilagay ang trabaho sa, tama, kaya ito ay ang kanyang grammar hindi minahan, kaya kung ka ilagay, ilagay sa trabaho, ang isang buong bagong mundo ay bukas sa iyo. Amazing kung magkano ang natutunan ko sa 12 lamang na linggo. Isa pang mag-aaral wrote, mas mabuting gawin ito o ikaw ay pagpunta sa panghinayangan ito. Isa pang wrote, ng kaunti pa bluntly, ito ay sipain ang iyong asno at umalis ka pakiramdam malaki. At pagkatapos ay sa wakas, isa na ito ay marahil isang bagay na maaari ko lamang ipakita sa pamamagitan ng pagsulat, ngunit, mula sa 2 sa ibaba dito. [Tawa] Kaya, hindi ako sigurado kung ikaw ay maraming mga kaibigan na kinuha na ito kurso ngunit hindi namin uri ng ginawa ng isang pulutong ng mga pinsala sa mga mag-aaral ng nakaraang taon. Kami ay nagpasimula ng, sa simula, ilang lektura, ang ilang mga quizzes, ng ilang mga problema sa set, ito paniwala ng lolcats. Hindi mo maaaring makita kung ano ang maaari kong makita dito ngunit sa isang sandali ay makakakita ka ng isang binata na nagngangalang masaya na cat ay ang pinuno ng mga kaya tinatawag na lolcat. Ito ay isa sa mga tunggak forwards internet na sa tingin ko lantaran ang paghihiwalay sa dalawang bahagi sa pagitan ng mga dalawang mga ginoo dito at kung ano kami ngayon ay may sa screen ay marahil. [Tawa] Isa sa pinaka hindi nararapat na gumagamit ng mga ito ng teatro upang petsa. At, bakit hindi gumawa kami ng kaunti pa sa tunay ng kaunti pa personal na paniwala na ito ng aktwal na paglutas ng problema sa mas mahusay. Ang isang simpleng problema sa araw ng isa sa anumang paaralan ay ang umupo o tumayo at simulan bilangin ang mga mag-aaral, karapatan roll call ng masama. Well, ang pinaka-simple ngunit gayunman, very tamang diskarte na isang guro ay maaaring tumagal ay isa, dalawa, tatlo, apat, lima, anim, pitong, at gusto namin dito ay lubos ng ilang panahon. Kaya, ano ang nasa gilid ng isang pagpapabuti sa mga ito kahit na maaari mong nagawa bilang isang bata? Paano mo bilangin mga tao mas mabilis? At, huwag simulan ang pagbabasa off ang aking sariling mga tagubilin? Ano ang gusto mong magkaroon ng tapos na bilang isang bata? Start bilangin ang twos, karapatan, tulad ng sa gayon ako ay pretty mabuti sa dalawa, apat, anim, walong, 10, 12. Kaya, na ang isang bagay na interesante karapatan. Kaya, kung gaano karami ng isang pagpapabuti na ay doon? Kaya, ito ay malinaw naman ang isang factor ng dalawa. Tatagal ako kalahati ng mas maraming oras. Subalit, alam mo kung ano, bilang namin mahanap sa buong semester na ito, sang-ayon, tulad ng pagbaybay up ng iyong pagtakbo ng oras sa pamamagitan lamang ng isang factor ng dalawa ay hindi lahat ng mga kagiliw-giliw na dahil ang analog dito sa mundo ay computer na ako ng isang CPU Ako ay isang computer, well ano ba, kung ako lang maghintay 12 na buwan, 18 buwan, ako ang computer ay lamang maaaring sa pamamagitan ng kalikasan, sa pamamagitan ng bilang ng mga may gigahertz ko sa akin para makapag-count mga tao sa ang kuwartong ito mas mabilis. Kaya, ang mga uri ng mga, mga uri ng guhit speedups kadahilanan tulad ng dalawang kadahilanan ng tatlong, kahit na kadahilanan ng sampung, na nagmamalasakit? Kanan, maaari naming magtapon ng hardware sa problema. Maaari naming maghintay ng mga bagay-bagay sa labas. maaari naming bumuo ng mas mabilis na machine. Subalit, intellectually, yeah na uri ng matalino ngunit hindi ito ang tunay na panimula baguhin ang problema. pa rin ako ng pagpunta mula sa kaliwa papunta sa kanan, harap sa likod. Ito ay talagang ang parehong algorithm. Ngunit, nag-aalok ng ko na maaari naming gawin mas mahusay. Maaari naming gawin mas madunong kaysa sa na ito at ang panimula ng isang mas mabilis na pagpapatupad. Subalit, upang ipakita na ito, kailangan namin kayo sa pagpapatawa sa amin para sa mga sandali lamang. At ito ay sa puntong ito kung saan makikita ito sa akin ay pakikipag-usap mas mababa at pakikipag-usap mo pa. Subalit ko kailangan mong magsagawa ng isang hakbang-sama, na kung iyong pagpapatawa sa amin, mangyaring tumayo. Ang direksyon dito sa board, alam mo ay, okay, isang pares ng ka may sa umupo. Ang mga ng sa iyo sa likod, may pumunta kami, alright. Salamat sa inyo. Kaya, ang mga programa dito ay bago ka. Kayo ngayon ay ang mga computer Isinasagawa ang programa na ito. Ito ay pantay sa sarili paliwanag sa puntong ito. Oo, dapat ay numero isa. Kumuha ng mga ito? Right, marami sa ikaw ay marahil iniisip na ito ay anyway, unang presman taon. Kaya, tingin sa iyong sarili, ikaw ang numero isa. Kaya, tatlong hakbang dito, Pares ng off sa isang tao nakatayo, idagdag ang iyong dalawang numero ng sama-sama at mag-ampon na halaga bilang iyong bagong numero at kami ay gawin ng isang katinuan suriin. [Noises mula] kakapalan ng tao Alam mo ba kung gaano karaming mga mayroon tayo? >> [Hindi marinig] >> Walang [hindi marinig]. >> Kailangan namin na magkaroon ng isang sagot na key. [Katahimikan] >> Yeah. [Noises mula] kakapalan ng tao >> David: Sa puntong ito ang algorithm ay dapat na-iikid down. [Noises mula] Siguro karamihan ng tao ay dapat na namin nawala sa aking paraan matapos ang lahat. >> 43. >> 163. >> David: Ooh aritmetika sa harap ng 300 plus mga tao. [Tawa] Ano ang aming mga huling magkatama pagpunta sa maging? >> 180. [Tawa] >> 1200. >> 386. >> David: 386, at ikaw ay ang huling isa na nakatayo? Ay lahat na? Alam mo ba ang sagot? >> Ano? >> David: Alam ba ninyo kung ano ang sagot ay? Hindi namin magdala ng isang sagot na key sa amin ito, 386 ay sa katunayan tiyak ang karapatan na sagot para sa unang panahon. [Pagpalakpak] [Palakpakan] That's okay. [Palakpakan] Very, very mabuti tapos na. Kaya, ano ay ang takeaway dahil tiyak na nadama ng kaunti hinaan kaysa sa aking napaka simpleng ngunit gayunman very tamang diskarte lang ng pagpunta onesies at twosies at lamang sa pagkuha ng ito tapos na sa mula sa kaliwa sa kanan. Subalit, kung ano did namin talagang lamang gawin doon? Well, kung diyan ay humigit-kumulang, sabihin natin, 400 ng nakatayo ka sa isang punto, at pagkatapos ay kalahati ng sa inyo, tunay mabilis, mula sa kung ano ang maaari kong sabihin, wanted sa umupo. Kaya, sa kalahati ng ka naupo, nagpunta kami ng 400-200 at pagkatapos ay sa 100 at pagkatapos ay sa 50 at pagkatapos ay sa 25. Kaya muli, may na parehong hatiin at lupigin ideya namin ay sa Talaan. Muli, sa bawat pag-ulit namin halved ang laki ng problema, halved namin ito, kami ay halved ito. Kaya, sa teorya, ang iyong mga algorithm ay dapat na nai-marami mas mabilis kaysa sa guhit ang aking diskarte dahil ang aking diskarte ay kinuha na sabihin 400 mga hakbang o marahil kung ako ay bahagyang tuso 200 hakbang. Subalit, nais iyo na kinuha malayo ng mas kaunting, karapatan 400-200, 100, 50, 25, 13, 6; kaya mas kaunti sa sampung mga hakbang sa katapusan laban sa aking 200 o 400. At mayroong mga mikrobyo ng isang tunay na kagiliw-giliw na ideya. At yes, mathematically kung ano ang iyong lamang did ay isang bagay na isang maliit na logarithmic sa kalikasan sa pamamagitan ng mag-log base dalawa, hinati namin sa dalawang at dalawang ulit. At kami ay muling dalawin ito mamaya sa semester na ito. Ngunit sa paraang iyan kasinungalingan muli ng isang napaka intelihente pagpapatupad. At, kami ay scratching ang ibabaw ng mga tunay matalino ang tunay intelihente mahusay na paglalapit sa problema na maaari naming malutas ang huli. Kaya, na ang mga tao na ikaw lamang chatted sa madaling sabi kung? Ang isang karaniwang pag-aalala sa isang kurso tulad ng ito ay na ang lahat sa kaliwa ng iyo at sa lahat ng tao sa kanan ng ikaw ay dapat na malinaw na alam ng higit sa iyo. Well, na walang pasubali na hindi ang kaso. At sa katunayan, sa kamakailan-lamang na taon, kurso na ito ay ginawa ng isang sama-sama pagsisikap upang maabot ang out sa mga mas kumportable, kaya na makipag-usap. At sa pamamagitan ng na, ibig sabihin hindi kami mga tao na hindi kailanman na-baliw isang computer ng bago dahil na tunay matigas upang mahanap sa paligid dito mga araw na ito, ngunit folks na gumagamit ng email, gamitin ang Facebook, marahil kahit na sa ngayon ngunit hindi palaging lubos sigurado kung ano ang gagawin kapag isang bagay na napupunta mali o kung sila ay nagtanong tungkol sa anumang bagay na teknolohikal, alam mo, ang mga kamay pumunta up o sila uri ng itulak ang hardware sa isang kaibigan na marahil ay mas bihasa sa ito kaysa sila. Well, ang mga ito ang ilang mga istatistika mula sa semester ng nakaraang taon. Kaya, kapag tinatanong, kapag tinatanong namin ang aming 400 kaya mag-aaral noong nakaraang taon, alam mo, kung ano ang iyong antas ng kaginhawaan pagdating sa klase na ito, mabuti 34% wrote down na ang kanilang sarili bilang sa mga mas kumportable. Kaya, kung ikaw ay dumating sa ang kuwartong ito at ang pag-iisip pa rin ngayon, na, alam mo kung ano, term na ito mas kumportable na naglalarawan sa akin, alam na ikaw ay nasa napakagandang kompanya. Subalit, mapagtanto masyadong na, kung ikaw ay pagdating sa kurso na may isang background sa computer science at kayo ay tunay na geek sa gitna ng paaralan at mataas na paaralan na nakasulat ang code at pagtuturo sa inyong sarili mga wika, mahusay na pagmultahin masyadong dahil mayroong tiyak isang nontrivial laki ng audience na may background na rin, tungkol sa 13%, huling kataga. At pagkatapos, may lahat ng tao sino pa ang paririto, uri ng isang tao na hindi isipin na ang mga ito mas kumportable, sila ay talagang hindi isipin na ang mga ito mas kumportable ngunit ang mga ito ay lamang sa isang kurso upang makakuha ng isang bagay sa labas ng ito. Kaya, mapagtanto kurso na ito ay ganap gumuhit ang spectrum ng mga mag-aaral. At, upang ilagay ito sa mas maraming mga kongkreto terms, 71% ng mga mag-aaral, huling taon, ay zero kurso sa likod ng mga ito. Kaya, kung ikaw ay pumapasok sa kurso na ito pag-iisip oh lahat ng mga taong tumatanggap ng CS50 ay isang computer paghuni science sa high school, ito ay hindi ang kaso. Karamihan sa mga tao ay maaari lamang na interesado sa ito. At ng ilang, yes, walang pasubali ay gumawa ng ilang mga kurso, ang ilang, o hindi bababa sa isang tao nakaraang taon ay nakuha limang kurso noon. Kaya, aming tiyak ay may ilang mga outliers ngunit muli ang mga karne ng curve ay sa mga mas mababang mga halaga sa kabuuan. At isa pang kagiliw-giliw na estadiskita namin shared sa nakaraang ilang taon ay ang kasarian ratio. Kaya, kasaysayan, ng hindi bababa sa computer science, diyan ay a bit ng isang lalaki babae hilig. Ako ilang taon na ang nakaraan ito ay mas minarkahan kaysa sa nakaraang taon. Kaya, kami ay halos ngayon sa 40% na antas. At kung ako mahulog sa isang responsibilidad para lamang sa ang kapakanan ng pagkakaroon ng isang ikatlong pie tsart sa susunod na taon, na kahit pa pantay. Gusto ko point out na mayroong absolutely walang dahilan mula sa mga kurso perspektibo na lalaki at mga females ay hindi dapat enroll sa ganitong uri ng kurso. Sa medyo pantay-pantay na mga numero at mapagtanto sa 38 porsiyento, 48 porsiyento, kami ay tunay na ganap nalulugod na makita na namin halos sa na, hindi bababa sa, kahit na istatistika na halaga ng 50%. Kaya, kung ikaw ay, sa katunayan, babae, gawin pahinga siguruhin masyadong na ito ay hindi, sa katunayan, isang lalaki dominado klase. Well, ito lang kaya ang mangyayari sa maging 20th kaarawan CS50's. Ako, well salamat sa iyo. [Pagpalakpak] [Palakpakan] That's very nice ng sa iyo dahil dinala namin keyk para sa inyo talaga. At sa gayon, kapag kayo lumabas dito mamaya sa araw na ito, makikita mo ang tunay na makakuha ng isang pagkakataon upang matugunan ang marami sa mga kurso sa pagtuturo fellows na kailangan maging matagal sa pasilyo. At yes ito ay maging isang magandang uri ng incentivized paraan ng pulong ng fellows pagtuturo. Ngunit, gawin namin kumuha ng isang paglalakbay hanggang sa isang maliit na panaderya at muli pare-pareho sa kurso ay mapaglaro kalikasan habang gayunman ay umaasang nontrivial halaga ng trabaho habang namin ay may na masaya. Ngunit, mayroon kaming mga isa sa mga cakes para sa iyo. [Tawa] Kaya, kung ikaw ay tumatawa na tunay mabuti dahil sa kahit na ikaw ay kabilang sa isa sa mga mas kumportable ng hindi bababa sa ikaw ay kamalayan ng mga ito. Ang mga ng sa iyo sa 14 porsiyento ay maaaring ginusto na ito lasa. [Tawa] At pagkatapos ay, kung hindi mo alam kung ano ang impiyerno ay nangyayari sa ngayon, kami ay mayroon din ito para sa ang magpahinga ng sa iyo. [Pagpalakpak] [Palakpakan] Kaya, ang mga ay tinadtad up sa mga piraso sa labas bilang namin magsalita. Kaya muli, sabihin kumuha ng mga bagay-bagay up ng isang bingaw at hindi bababa sa kitang ipakilala ang ilang mga pangunahing mga nangungupahan na kami pagkatapos mang-ahas sa ang natitirang ng semester na ito. Kaya, namin ang lahat ng maaaring malaman na ang mga computer sa huli pasingawan sa anumang paraan sa zero at mga, mga bagay na ito na tinatawag na bits. Ano ang ibig sabihin na? Well maaari mong isipin ng mga ito lantaran bilang ng ilaw bombilya, isang bit ay isang ilaw bombilya na alinman sa o ito ay off. Ito ay isang lumipat, ito ay alinman sa o ito ay off. Ngayon, computer siyentipiko sa pangkalahatan ay sa tingin ng off bilang ang bilang zero nagkataon at sa, at ang paniwala ng sa bilang isa. Kaya, kung magtapon ka ng isang liwanag sa lumipat na ang isa isasara ito na ang isang zero. O, equivalently, buksan ang ilaw sa na ang halaga ng tunay na isasara ito na ang halaga ng maling. Kaya, ang mga ito ay lamang ang mga kasingkahulugan. Sa katapusan ng araw, yes, ang lahat ng pagtutuos, lahat ng mga bagay-bagay na napupunta sa ilalim ang talukbong sa isang computer ay huli pasingawan sa zero at mga. At, kapag tumigil ka mag-isip tungkol sa ito, ito ay pretty pambihira dam kung ano ang mundo ay tapos na sa mga pangunahing gusali ng mga bloke kasama ang ilan sa mga aparato ikaw ay humahawak sa iyong kamay. Well, kung bakit ay zero at mga kapaki-pakinabang? Aking Diyos, kahit na sa tunay na mundo namin ng hindi bababa ng sampung bilang, zero sa pamamagitan ng siyam na. Bakit kaya limitado? Well sa mga tuntunin ng hardware na ito ay tunay madali. Ito ay lubhang mas madaling kumakatawan sa dalawang estado, kanan. Kung ang computer ay plugged sa pader, kadalasan, kayo ay may ito madaling source ng binary kalikasan. Ito ay alinman o patayin. Elektrisidad ay umaagos o ito ay hindi. Kaya, na ang uri ng isa sa mga unang dahilan na mundo ang nagpunta sa mga zero lang at sa mga computer. Subalit, maaari mong gamitin ang mga ito bilang mga gusali ng mga bloke. Kaya, ito tunay ay isang maliit na maliit sa screen dito ngunit maaari naming bilangin sa binary o maaari namin ay kumakatawan sa anumang bagay na gusto namin sa binary tulad ng aming makakaya, sabihin, decimal, tulad ng aming makakaya, kahit na sa katunayan, na may mga titik pang-abakada. At sa gayon, dito ang mabilis na sistema. Sa lamang ng ilang minuto ng oras mo ngayon alam kung paano mag-count, kung paano sumulat ng, kung paano makipag-usap sa binary marami tulad ng iyong sariling laptop. Well, ikaw ay may, sa mundo ng binary, uri ng tulad ng mga haligi ng grade school o halaga. Kaya, sa mababang paaralan malaman namin na ito ay ang mga haligi na ito ay ang sampu-sampung haligi, ang haligi ng daan-daan at sa gayon pasulong. Sa ibang salita, kung bakit ay ang bilang namin malaman bilang 123 ang bilang 123? Well, ang aking guro tinuruan ako na ito ay ang mga haligi, ito ay ang sampu-sampung, ito ay ang daan-daang. Well kung ano na ang ibig sabihin nito? Well, para malaman kung ano ang kabuuang halaga ay ng kung ano sa kabilang banda ay ang string ng mga numero, lamang sumira marka sa board. Well, kami ay may isang 100, kaya na ng 1 beses sa 100 at pagkatapos ay kasama ang kung ano ang dalawang 10's kaya na 2 times 10 plus tatlong iyan, kaya na 3 beses 1, okay, kaya parang ako na magkaroon ng tapat na paraan pabalik sa kung saan ako nagsimula. Ngunit, ito tunay simpleng proseso ng mga lamang ng pagpaparami ng numero ng ang halaga ng haligi ay kung ano mismo ang binary ay ang lahat ng tungkol sa. Subalit, sa binary gumamit ka ng kapangyarihan ng dalawang hindi kapangyarihan ng sampung. Kaya, dito ay isang serye ng mga walong ilaw bombilya. Computer siyentipiko nais na gamitin ang mga halaga ng dalawang at 8 at 16 at 24 at 32 dahil sila ay ang lahat ng mga karaniwang mga halaga maginhawa upang gamitin. Kaya, kapag kami makipag-usap tungkol sa walong mga halaga sa sequence na ito ay tinatawag na tulad ng byte. At ang mga araw na ito namin bihira makipag-usap sa loob lamang ng bytes, makipag-usap namin gigabytes megabytes at terabytes mga araw na ito. Ngunit ito ay ang lahat sa huli ang mga parehong bagay. Narito ang 8 bits AKA isa byte, simple lang hindi maintindihang pag-uusap. Kaya, ang lahat ng mga ilaw bombilya ay off. Kaya, matematika ay talagang tunay madali. Kaya doon sa kanan, bagaman ito ay maliit na upang makita, ay ang haligi ng isa, ang twos, ang nakadapa, ang tag walo, ang 16s, 32s, 64s, 128s. Oo, baka mahirap kabisaduhin sa unang ngunit ito lamang ay multiplied sa pamamagitan ng dalawang mula sa karapatan sa kaliwa. Kaya, maaari mong palaging muli ito. Well, na ang mga ito sa lahat ng off upang's 0 ulit placeholder, 0 ulit placeholder. Kaya, ito ay ang bilang 0 kinakatawan sa binary. Sa ibang salita, paano mo isulat ang numero ng malaman namin bilang 0 sa binary? Well, isa, dalawa, tatlo, apat, lima, anim, pitong, walong, at technically tulad ng sa decimal, ang lahat ng mga nangungunang mga zero, hindi sila magdagdag ng anumang bagay sa formula na ito ay lamang doon dahil kami ay nagpasya nagkataon namin gusto ng walong mga bagay na ito sa isang hilera, karapatan. Kung sila pisikal na mga bagay, kami ay may walong kaya sila na-got sa lahat ay off. Kaya, maaari naming lamang tapat na paraan malayo sa isa sa zero. Balon paano kayo ay kumakatawan sa bilang ng isa? Well, katutubo ikaw ay pagpunta sa mahagis ang isa sa mga switch. Ikaw ay pagpunta sa turn ng isang bombilya sa. Kaya, diyan ay ang bilang isa dahil kami ngayon maglagay ng isa, ng ilaw bombilya na sa, sa posisyon sa isa's. Paano kami pagpunta sa kumakatawan sa dalawang? Well, talagang kami ay pagpunta sa paghagis ng dalawang switch ngayon ng hindi bababa sa laban na ito ng estado, kami ay may sa turn sa dalawang haligi ng patayin ang mga haligi at ngayon kami ay ang halaga ng isa sa twos haligi. Kaya, na ang kabuuang halaga ng dalawang. Ngayon, ang isang mabilis na mental na ehersisyo; kung ano ang pagpunta sa mangyayari sa susunod na pagkakasunod-sunod? Paano ko kasalukuyan ang bilang ng tatlong? Well, kailangan ko ng isa mula sa twos haligi, isa mula sa threes haligi at ah ha. Kaya, ngayon ko na incremented na ang isa. At ngayon, ang parehong basic pattern repeats. Ano ang apat na numero? Well hayaan's makita, ako makatarungan mangilangan a isa sa hanay ng nakadapa at pagkatapos ay zero sa twos at mga. Kaya pagkatapos, ito ay patuloy na paraan. At, ito ay lamang ang pagkakasunod-sunod ng mga hakbang. At sa paniwala ng binary ay talagang hindi lahat na kumplikado. Sa itaas doon kami ay may 8 mga zero. Nasa ibaba na kami ay may pitong mga zero at isang isa. Nasa ibaba na kami ay may anim na zero, isang isa, at isang zero at na binary. Now, thankfully, we computer scientists, we programmers by terms end are not going to often be writing in binary, talking in binary, thinking in binary because we've built many layers of the traction on top of that. In fact, people rarely talk about bits except in a networking context they talk about bytes because one bit, not that useful, eight bits these days still not that useful, but at least eight bits, one byte is at least getting us toward more useful units of measure. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. But that's as of yet unclear. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. All right. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Dec for decimal. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Capital A. And the number 97? Lowercase A. All right. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Right. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [Tawa] >> Seventy Nine. >> David: Can someone second that? Yes. All right. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. All right. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [Music] >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [Palakpakan] ==== Transcribed by Automatic Sync Technologies ====