[MUSIC nagpe-play] [MUSIC nagpe-play] David MALAN: Lahat ng karapatan. Ito ay CS50. [MUSIC PLAYING Tritonal, Cash Cash,  "Untouchable"] [MUSIC nagpe-play] Tagapagsalita 1: Pupunta ako sa France, at ikaw ay pagpunta, masyadong. [MUSIC nagpe-play] David MALAN: Ito ay CS50, pagpapakilala Harvard University ni sa intelektwal negosyo ng computer science at ang mga sining ng program-- at para sa unang pagkakataon sa kasaysayan, Yale University pati na rin. Sa katunayan, kung ikaw ay dito sa Cambridge o sa New Haven o Miami o St. Louis o Amsterdam o saan sa buong mundo pagkuha CS50, computer agham E50, CS50X, CS50 AP, tayong lahat ay iisa at pareho. Maligayang pagdating sa CS50. Ano have-- namin [Palakpakan] [LAUGHS] [Palakpakan] Kaya ako nagkamali sa aking sarili ilang panahon ang nakalipas kapag ako ay nagsimula off sa kolehiyo. At nakuha ko sa kolehiyo, at ako ay nagpasya na lantaran, stick sa loob ng aking comfort zone. Napunta ako deklarasyon ng konsentrasyon, o isang major, ng pamahalaan. Ant na ay halos isang pag-andar ng sa akin pagiging pretty pamilyar sa pamahalaan o hindi bababa sa kasaysayan o ko talagang nagustuhan konstitusyonal na batas sa high school. At kaya kapag ang nakuha ko dito, ako uri ng gravitated patungo bagay na kung saan ako ay na pamilyar. Right? Malayo nawa sa amin ang gagawin ko na hindi maganda sa klase. Ako ay tiyak na nais upang manatili sa loob ng aking kaginhawahan zone, at ito ay hindi hanggang sopomor taon na ako sa wakas got up ang nerve sa hakbang paa sa isang silid-aralan na tinatawag na CS50. At sa puntong iyon, ako ay sa wakas mapagtanto na, ang aking Diyos, araling-bahay ay maaaring aktwal na maging masaya. Sa katunayan, ako ay isa sa mga kids na sa Biyernes gabi kapag ang P-SETS ay inilabas, ako babalik sa aking kuwarto at dive sa gabi ni P-SETS. At para sa akin, na noon ay isang mag-sign na ito ay isang patlang para sa akin. Ngunit kung ano ang mas mahalaga ay ang katunayan na ako ay makakuha ng up na ito nerve upang galugarin tubig pamilyar sa akin at makakuha ng lampas sa aking sariling kaginhawahan zone at lantaran, ako lamang ay able sa gawin na sopomor taon sa pamamagitan ng pagkuha ito klase pasa bagsak. Sa katunayan, ito ay ang napaka-huling araw na iyon Ako sa wakas lumipat sa ibabaw at sa wakas ipinahayag CS bilang aking konsentrasyon, paglagay gov sa puntong iyon sa likod ako. At kaya hindi namin-set out sa kursong ito upang buksan ang lahat ng sa iyo sa CS majors o concentrators, ngunit sa halip na magbigay sa iyo ng isang pagkakataon upang sana ay pumunta sa ibayo ng mundo na kung saan ikaw ay kasalukuyang pamilyar at isauli mula sa mundong ito kasanayan at kaalaman at savvy na maaari mong ilapat sa iyong sariling mundo, kung na sa makataong sining, agham panlipunan, natural na siyensiya, o higit pa. Sa katunayan, kung ikaw ay Medyo intrepid tungkol sa pagiging sa kuwartong ito pabayaan mag-isa sa klase na ito, mapagtanto na kung ang kasaysayan ay anumang indikasyon, 72% ng sa iyo na hindi kailanman kinuha ng isang CS course dati. Kaya ito ay sa pamamagitan ng lahat ng ibig sabihin hindi ito ang kaso na ang estudyante na nakaupo sa kaliwa o sa kanan o sa harap o sa likod mo alam malayo higit pa tungkol CS o programming sa partikular kaysa sa iyo. Iyan ay hindi sa katunayan ang kaso. At sa katunayan, ang karamihan sa ang istraktura ng suporta na na-set up namin sa course sa loob ng nakaraang maraming mga taon ay para eksakto na reason-- sa magbigay ng isang on ramp na pa rin labasan tulad rigorously at lamang bilang mataas na bilang ever-- ngunit ang slope ng na nagbibigay-daan mag-aaral mas kumportable at mas kumportable magkamukha upang magtagumpay hindi isinasaalang-alang ng kanyang bago background. Sa katunayan, kung ano ang sa huli bagay sa klase na ito ay hindi kaya magkano kung saan mo end up may kaugnayan sa iyong mga kamag-aral ngunit kung saan ka sa linggo 12 end up na may kaugnayan sa iyong sarili sa linggo zero, na kung saan ay kung saan kami dito ngayon. Sa katunayan at ito ay maaaring tunay mabuti at marahil ay hindi hitsura Greek sa marami sa inyo. Ngunit magpahinga panatag, na na ito at kaya marami pang iba ay pagpunta sa maging ganap na sa loob ng iyong hawakang mahigpit sa loob lamang ng isang maliit na piraso ng oras. Ngunit ngayon, ang focus namin sa ilang ng mas mataas na antas ng mga ideya upang bigyan ka ng isang lasa ng CS50 at computer science sa isang kahulugan ng kung ano ang nagsa-sign up para sa. At sa katunayan, computer science maaaring distilled pa lamang bilang computational thinking-- pag-iisip tulad ng isang computer, kung ikaw ay. At mayroong kaya maraming iba't ibang mga bagay ingredients na pumunta sa na, ngunit sabihin imungkahi tatlo lamang para sa ngayon. Kung ang layunin ng klase sa huli ay hindi na magturo sa iyo ang mga programa, ay hindi upang magturo sa iyo C o PHP o SQL o anumang bilang ng mga salita at acronym sa paglalarawan ni course, ngunit sa halip na magturo sa iyo upang malutas ang mga problema nang mas mabisa at mag-isip ng mas maraming methodically at mas algorithmically, kaya na magsalita. Tayo'y makita kung ano ang eksaktong ito ay nangangahulugan Hayaan. Kaya Gusto ko imungkahi na pag-iisip computationally kahulihan babagsak sa paglutas ng mga problema. Ano ang kailangan mo upang malutas ang isang problema? Kailangan mong input-- tulad ang input sa problem-- kailangan mo ng isang output, na kung saan ay inaasahan namin na ang solusyon, at pagkatapos ay kailangan mo ng isang proseso sa pamamagitan ng kung saan upang malutas na problema, kung saan kami ay tumawag ng isang algorithm-- isang hanay ng mga mga tagubilin para sa paglutas ng ilang mga problema. Ngunit una, sabihin tumuon sa mga una at ang huling ng mga inputs at outputs. Computers pagkatapos ng lahat, tila lamang nauunawaan zero at mga. Ngunit kung paano maaari na marahil ay? Kahit na ikaw ay hindi pamilyar sa lahat sa kung ano ang sa ilalim ng hood, ikaw ay malamang na hindi bababa sa narinig na mga computer na maunawaan binary-- lamang zero at ones-- ngunit kung paano maaari mong posibleng gumawa ng anumang bagay kawili-wili? Well, isa sa mga tema ng klase ay pagpunta upang maging ito layering-- kung saan ngayon, kami ay kumuha ng isang mabilis na sulyap sa ang pinakamababang antas mga detalye, ngunit sa bawat pagdaan ng araw, kung saan kami layer o abstract sa itaas ng mga detalye upang aktwal na malutas ang mas mataas na antas problema ng interes sa amin. Kaya dito ay kung ano ang maaari naming tumawag binary-- sa pamamagitan lamang ng isang alpabeto ng 0 at 1. Ngunit namin ang mga tao ay halos pamilyar sa decimal. Disyembre kahulugan 10. Bi ibig sabihin dalawa. At kaya sa decimal system, kami ay may 10 digit sa aming disposal-- ng Siyempre, zero sa pamamagitan ng siyam. Kaya't kung tiningnan mo sa isang bilang tulad nito, karamihan sa inyo intuitively lamang dakutin na 123. Mayroong wala talagang mahirap tungkol sa na. Ngunit kung bakit ay ito 123? Well, kung sa tingin mo bumalik sa grade school-- o hindi bababa sa ang paraan ko natutunan ito uri ng world-- mo maaaring pagpapabalik na ginagamot namin ang mga bagay sa mga haligi, o mga lugar. Kaya kami ay may ang mga lugar sa kanan. Ang sampu ilagay sa gitna. Ang daan-daang ilagay sa kaliwa. At pagkatapos ay paano namin makakuha ng mula sa pattern na ito symbols-- 1 2 3-- sa ito mas mataas na antas ideya na alam namin bilang 123? Well, ito ay lamang ng ilang mga simpleng arithmetic. Right? Ang isa ay may mahalagang ay nangangahulugan bigyan kami ng 100 beses 1 plus 10 beses 2 plus 1 beses 3. At syempre kung gagawin namin ang math doon, ito ay 100 plus 20 plus 3-- hindi man ay kilala bilang 123. Kaya kung ikaw ay on the parehong pahina tulad ng karapatan na ngayon at ay kumportable sa tinaguriang decimal system bilang isang tao, ito ay talagang mahusay sa loob iyong saklaw ng kaginhawaan upang isaalang-alang ngayon ang binary system. Kumuha ng ligaw na guess-- ito ay kumakatawan, sa mundo ng mga computer in binary-- kung ano ang numero? Zero. Ngunit kung bakit ay na? Well, ito ay lumiliko out na ang mga haligi o lugar here-- mga ito ay hindi kapangyarihan ng 10. 1, 10, 100, 1000, at iba pa. Ang mga ito ay sa halip, lubos simple, kapangyarihan ng 2. So, 1, 2, 4, 8, 16, 32, at iba pa. At kaya ngayon kami ay siyempre makakuha ng 0 dito lamang dahil kami ay may 4 na beses 0 plus 2 beses 0 plus 1 beses 0, na siyempre ay nagbibigay sa amin 0. Ngunit paano ko pumunta tungkol sa na kumakatawan sa mga numero 1? Ano ang halimbawa ng zero at mga upang kumatawan ang bilang namin ang mga tao malaman bilang 1? 001. At 2? 010. At ngayon, ang pattern ay nagsisimula sa ulit. Ngayon ay 011. At muli, 0 fours, isa 2, isa 1. Kaya 2 plus 1. Iyan ay 3. At ngayon upang kumatawan 4, kami huwag lang baguhin na 0 sa isang 1. Ikaw uri ng kailangang magdala, kaya na magsalita, at ang mga numero simulan flipping sa paligid lamang tulad ng sa decimal mundo. Kaya ito ay 4. Ito ay 5. Ito ay 6. Ito ang 7. At kaya na binibilang namin ng mataas na bilang 7. Ngayon ang lahat ng kailangan lang namin ay mas isang bits-- mas zero at isang tao. At sa katunayan "bits", kung na sa iyo marinig ito term-- binary digit. Bit ay kung saan na nanggagaling mula sa. At kaya kung gusto naming upang kumatawan mas malaking numero, kailangan namin ng karagdagang bits. Ngunit sabihin ilipat ang layo mula slide ngayon sa isang bagay ng kaunti pa sa real. Ipagpalagay na gusto naming aktwal na kumakatawan bagay na ito. Well ipaalam sa tumagal ng isang pagtingin ngayon sa isang maliit na demonstration. Kaya ito ay isang web based na application na ang isa sa CS50 sarili, Michael G, magkasama ngayong summer para matulungan amin liwanagin eksakto ang ideyang ito. At gagawin sa isang tao tulad sa venture up sa entablado sa harap ng lahat ng kanyang mga kamag-aral? Doon sa harap. Pumasok dito up. Mayroon kang upang maging komportable na kinukunan ng kamera at ang internet. Oh, dito mismo. SIGE. Humihingi kami OK. Lahat tama. Pumasok dito up. Ano ang iyong pangalan? Emily puntahan ng up. Kaya ito ay Emily. Anong taon ka na? Freshman. Emily, nice to meet you. David. Lahat tama. Kaya up sa screen dito, taglay namin ang touch screen kung saan ay pagpunta upang payagan sa amin upang aktwal na makipag-ugnayan sa programang ito, at ito ay lamang ng isang browser. Ito ay ganap na screened Chrome sa sandaling ito, ngunit ito ay ay programmed sa pamamagitan ng Michael sa tumugon sa isang paraan na nagbibigay-daan sa sa amin upang i-play sa paligid na may binary digit. Kaya halimbawa, dito kami ay may hindi tatlong ngunit walong bits-- zero at mga. Sa ngayon, hindi namin pagtingin sa bilang 0. At sa katunayan, ang lahat ng walong mga zero sa decimal nangangahulugan zero. Kaya na ang lahat na ini-hinted sa dito. Kaya kung nais mong kumakatawan sa bilang 8, kung ano ang mga pattern ng mga zero at mga bago na gusto mo? Maaari mo lang i-tap pataas o pababa o ang mga numero sa kanilang sarili. Lahat tama. Kaya na ng mga kurso ay 8, tulad ng makikita mo up doon. At kung gusto naming huwag 16, ano ang gagawin namin gawin? Yep, pindutin lamang ito muli. 16. Lahat tama. Kaya ito ay ang lahat ng fine at mabuti, ito ay pa rin napakababang antas. Kailangan namin ng isang paraan sa tunay na mundo para Emily ng aktwal na kumakatawan sa mga bagay na ito. At kaya ipagpalagay na i-namin ang mga zero at mga, na higit na haka-haka, sa aktwal na ilaw bombilya. Right? Ang isang computer ay isang pisikal, mechanical, electrical aparato. At nito input-- hindi bababa sa kung plug mo ito in o charge it-- ay upang magkaroon ng lakas ng baterya at electron agos in at out. Kaya ngayon, bakit hindi namin itigil na pag-iisip tungkol bits bilang zero at mga, ngunit isang bagay na mas pisikal tulad ng liwanag na mga bombilya dito. At kung Dan Armendariz maaaring sumali sa akin lamang ng isang moment-- puntahan up-- kami ay pagpunta sa queue up ang isang application. Pumunta ka rito, Emily. Ikinalulungkot namin na ito ay ang pinaka awkward demo para sa iyo kailanman. Halika sa paglipas dito. Kami ay pagpunta sa queue up na may salamat sa Dan Armendariz, isa pang miyembro ng aming kawani, isang application na kilala bilang binary bombilya. Kaya kung ano ang mayroon kami dito ay isang iPad application na may mga sumusunod na user interface sa screen para sa Emily. Lamang Ito ay nakuha ang parehong eksaktong UI mahalagang iyon banda roon. At kung ikaw ngayon ay nais na kumakatawan sa bilang, sabihin 8, kung paano mo pumunta tungkol sa paggawa ito pagpuna sa tamang, ang ilaw bombilya na mayroon kami dito? Ah-ha. Magical. Kaya kung gusto naming ngayon buksan ito sa isang bagay ng kaunti mas mahirap, at sabihin sige at pumili ng isang random number tulad ng bilang 50 dito. Input ito. At kung maaari mo na ngayong ma-hinamon upang makabuo ng ang bilang 50, kami ay may isang hindi kapani-paniwala na premyo para sa iyo. EMILY: OK. Oh aking Dios. David MALAN: Arithmetic ay sa katunayan mahirap sa harap ng daan-daan ng iyong mga kaklase. Ngunit 50 ay ang sagot dito. [Palakpakan] At kaya ngayon, ito ay sinadya upang maging demonstrative para Emily. Kaya, sa dito, ay ilang ilaw bombilya medyo tulad ng mga ito, ngunit ito ay tunay na ang maliit na magnetic strips. At kung ano ang cool na tungkol sa mga ito at ang dahilan na ginagamit namin ang mga ito sa CS50 ay na sila ay sumusuporta sa isang bagay na tinatawag isang API-- isang application programming interface, na kung saan ay lamang ng isang magarbong paraan ng pagsasabi na kung ano ang isa sa aming mga kawani ay sa tag-init ay lumikha isang iPad application dito na pag-uusap sa loob ng internet sa liwanag bombilya sa paglipas dito, na kung saan ay wirelessly konektado sa isa pang aparato. Ngunit ito ay ngayon ng isang pagpipilian para sa pangwakas na proyekto. At kaya Emily, kung gagawin mo ito tulad ng, sa dulo ng termino, maaari mong mag-adorno ang iyong dorm room sa habang panahon sa mga iyon. Salamat sa Emily pati na rin. [Palakpakan] Ngunit ngayon, sabihin i ang aming pansin sa kung ano ang mensahe na maaaring mukhang, at ito ay isang maliit na isang bagay na katulad nito. Sa katunayan, ito ay isang Halimbawa lamang bilang isang teaser ng kung ano ang darating ng kung ano ang tinatawag na isang kahilingan API. At kaya kung ano ang mayroon kami dito ay para lang eksakto ang uri ng mga mensahe na pagkatapos ng ilang linggo oras sa CS50, makikita mo magagawang upang ipadala sa isang bagay na medyo pamilyar tulad na upang aktwal na buksan ang mga ito sa at off. Ngunit ito ay ang lahat ng fine at mabuti. Right? Mayroon kaming ang kaisipan modelo sana para sa kumakatawan numero na may zero at isang tao. At mula zero at mga, maaari naming makapunta sa mas mataas na mga numero tulad ng 50, bilang Emily lang ginawa, o tayo maaaring ilipat up mula sa na. At inaangkin ko na maaari naming kumatawan mga bagay tulad ng mga titik pati na rin. Right? Computers ay malayo mas kagiliw-giliw kaysa sa lamang mga numero. At kaya paano mo pumunta tungkol sa kumakatawan sa mga salita sa screen o emails o Sanaysay o ang gusto? Well, ito ay lumiliko out na ang mga computer lamang abstract sa tuktok ng mga mababang antas ng mga detalye, at mga kawani na tao ng ilang oras nakaraan, ay dumating up gamit ang isang arbitrary, ngunit isang pare-pareho, mapping ng mga numero upang letters-- kaya na ang anumang oras na makita mo isang malaking titik A sa iyong computer screen, logro ay kung ano ang sa ilalim ng hood ay isang pattern ng mga zero at mga bago na kumakatawan sa mga numero, per ang tsart na ito, 65. At higit pa sa pisikal sa loob ng iyong computer, mga milyon-milyong ng mga bagay na tinatawag na transistors-- mga days-- na ay lamang switch kung kalooban mo, mga bagay na maaaring pumunta sa at off at iba pa isipin. Hindi walong ng mga malalaking ilaw bombilya ngunit milyon-milyong ng mga maliliit na maliit na liwanag bombilya, o switch o transistors, na maaaring i-on at off batay sa kung paano mong programa ang mga ito. At kaya ngayon kami ay may isang paraan ng na kumakatawan sa mga titik pati na rin. Sa katunayan, kung ako ay upang gamitin ang paggawa ng mga mapa dito at subukan upang aktwal na spell ng isang bagay out, maaari naming tumingin sa ang pattern na ito ng mga decimal na numero ngayon na. Kaya kami ay hindi pagpunta sa kahit focus sa binary anymore. Sabihin lamang isaalang-alang ang mga ito bilang decimal na numero 72, 73, 33. Ngunit kung ano ang maaaring kumakatawan ito? Kahit sino ay may isang sapat na photographic memory malaman kung ano ang naisulat sa screen dito? Yeah ng ilang. Kaya hi. H-I at pagkatapos ay isang exclamation point, na kung saan ay hindi tunay na sa screen. Ngunit sa katunayan mayroong isang mapping para sa bawat titik sa bawat numero ng na baka gusto mong type sa iyong keyboard. Ngunit numero ay hindi na kumakatawan lamang mga titik. Right? Ang lahat ng sa amin kung tungkol sa mga imahe at mga larawan at mga file na audio at mga video file at iba pa. Kaya malinaw na maaari naming kumatawan mas mataas na antas ng mga bagay pa rin. At kaya kung ano ang isang computer ay ay simpleng piliin upang bigyang-kahulugan pattern ng zero na mga bago sa ibang paraan batay sa konteksto. Kung double-click ang isang Microsoft Word icon, nakikita mo mga salita sa screen sa halip ng mga kulay at mga larawan dahil salita alam na ito ay isang sanaysay na talagang iyong nai-type. Kung ikaw sa halip double click sa isang JPEG o isang GIF o isang PNG, ito ay bubukas up at ito ay isang imahe dahil ang PNG o ang .docx o ano pa man ang file extension at anumang software gumagamit ka ng alam na bigyan ng kahulugan isang pattern ng mga zero at mga iba batay sa kung ano ang layunin nito sa buhay ay. Kaya halimbawa, ito parehong pagkakasunud-sunod ng mga numero maaaring kumatawan kung magkano red gagawin mo gusto, kung magkano ang green ang gusto mo, at kung magkano ang blue ang gusto mong. At sa katunayan, kung ikaw ay kailanman narinig RGB-- kaya lang red green blue. At kaya kung makikita ko ang mga numero tulad ng, ito bigyan ako ng 72 red, bigyan ako ng 73 green, at 33 asul, ito ay kung paano ang isang computer gamit tatlong bytes-- kung saan isang byte ay walong bits o 24 bits-- ay kumakatawan sa isang pretty pangit lilim ng kayumanggi o dilaw dito. At sa iba't ibang konteksto, maaari mga eksaktong parehong pattern sa mga zero at mga ibig sabihin isang bagay na ganap iba't ibang mga pati na rin. Kaya kami ay may na ngayon ng isang paraan ng kumakatawan information-- zero at mga. Sa itaas ng na, makakakuha tayo ng mga titik. Sa itaas ng na, maaari naming makakuha ng mga kulay. At sabihin ipinapalagay para sa araw na maaari naming makakuha ng mga audio at video at mga bagay na kaya marami pang iba sopistikadong kaysa sa na. Ngunit ngayon sabihin isaalang-alang kung paano namin gamitin ang mga inputs at makagawa ng mga outputs ngayon na kami ay may isang paraan ng kumakatawan na impormasyon. Well, kailangan namin ng isang bagay tinatawag na isang algorithm. Muli, isang hanay ng mga tagubilin para sa paglutas ng ilang mga problema hakbang-step-- at ang mas tiyak, ang mas mahusay. At kaya isang halimbawa na kung saan ang mga tao ay admittedly mas pamilyar ang mga araw na ito, ngunit gayunman ay pa rin kahit nang nasa software, ay ang proseso ng naghahanap up ng isang tao sa isang phone book. Ngayon, mas kaunting at mas kaunting mga tao malaman ng bawat taon kung ano ang banal na alaala talaga dito. Ngunit bumalik sa aking araw, ito ay isang phone book Libu-libong ng mga pahina at mga numero at mga tao ang mga pangalan mula sa A sa pamamagitan Z. At kahit na kami ay uri ng pagdaraya isang bit-- ito ay halos dilaw na mga pahina. May mga puting din mga pahina sa panahon, na kung saan ay ang lahat ng mga pangalan at mga numero ng mga tunay na mga tao. At kung ako pinaghahanap upang tumingin up ng isang tao sa isang phone book tulad nito ngayon, siyempre, I-type lamang sa unang ilang character ng kanyang pangalan, at ang aking phone hahanap na impormasyon. Ngunit ang proseso kung saan ang iyong iPhone o Android phone o ano pa man ay aktwal na paghahanap isang tao sa iyong listahan ng mga contact ay kapareho ng kung ano ang aming mga kawani na tao marahil ay tapos na para sa ilang oras. Ngayon ay maaari ko tumagal ito problema, kung ikaw ay, at ang inputs dito ay hindi zero at mga. Sila ay pages-- like, sabihin natin 1,000 mga pahina. At kung gusto ko upang tumingin up ng isang tao gusto Mike Smith sa phone book, kaya kong magsimula sa simula at makita na ako sa isang seksyon at pagkatapos ay i isang pahina sa isang panahon, naghahanap at naghahanap habang isinasagawa ako sa B at ang C at ang D's at iba pa para sa Mike Smith. Smith na nagsisimula sa isang S, kukunin ko sana sa huli mahanap sa kanya. Ito ba algorithm-- na process-- tama? Yeah. Tama yan. maghahanap ako ng Mike kung siya ay in dito, ngunit ano ang caveat na maaari mong nag-aalok. Ito ay mabagal. Right? Alam ko Mike S ay isang uri ng dakong sa huli kalahati ng libro ng telepono. Bakit ano ba ako simula sa simula at pagpunta pahina sa pamamagitan ng pahina sa pamamagitan ng pahina. Kaya siyempre, maaari ko bang i-flip ito sa paligid at simulan mula sa likod, ngunit na ay pagpunta upang makakuha ako doon sa parehong rate, kung willl-- mong page pagkatapos ng pahina matapos pahina. At ito ay hindi pagpunta sa trabaho kung gusto ko upang maghanap para sa ibang tao na ang pangalan ay mas maaga sa alpabeto. Kaya kung ano kung gagawin ko kung ano ang aking natutunan sa mababang paaralan, muli, gumawa ng mga bagay na hindi sa pamamagitan ng mga bago ngunit sa pamamagitan ng twos. Kaya 2, 4, 6, 8, 10, 12, at iba pa. Iyan ba ay tama? Hindi. Ito ay uri ng tama. Ngunit ang ilan sa iyo kung sino murmured no, kung saan ay ang problema, o ang bug, ang mga pagkakamali sa gayon na magsalita. Yeah. MAG-AARAL: Maaari mong laktawan sa kanang entry. David MALAN: Oo. baka ako laktawan sa paglipas ng Mike Smith ay dahil ko na kinuha ng dalawang mga pahina nang sabay-sabay at siya lamang ang mangyayari sa maging sandwiched sa pagitan ng mga dalawang pahina. baka ako mapagtanto na Ako ay nasa sa seksyon T hindi pagkakaroon ng natagpuan Mike Smith pa. At kaya kung ano ang maaaring ang fixed magkaroon? Well, kung gagawin ko pindutin ang Ts sa phone book, paano ko na kailangan i-double i-back ang isa o higit pa ng mga pahina. Kaya ito ay fixable, ngunit ito ay hindi lubos na simple bilang lamang ang pagpunta sa pamamagitan ng dalawang sa mapabilis ang aking pagganap. Pero ano? Pumasok dito. Ano ang kung ano ang karamihan ng mga tao ay pagpunta ang gagawin sa ganitong uri ng phone book? Bibigyan ka ng mga phone book. Ano ang gagawin mo? Ano iyon? Pumunta sa gitna. Kaya narinig ko pumunta sa gitna, at ako mahanap ang aking sarili halos sa seksyon ng M, kaya na magsalita. At ngayon kung ano ang gusto kong gawin? Magaling. Ano ang iyong pangalan? JAMES: James. David MALAN: James, ang lahat ng karapatan. Ano ang gagawin ko susunod? JAMES: Pumunta ka sa kalahati na may S. David MALAN: Lahat ng karapatan. Pupunta ako sa pumunta sa kalahati na may S sa ito dahil, muli, isang stipulation dito ay na bagay na ito ay pinagsunod-sunod. Ito ay isang pretty walang kaukulan 1,000 mga pahina kung Verizon ay hindi aktwal na pagbukud-bukurin ang mga bagay para sa amin A sa pamamagitan Z. Kaya kung alam ko Mike ay marahil sa sa huli kalahati ng phone book, Maaari ko ngayon. [LAUGHS] Tanggalin na ang problema sa kalahati. [Palakpakan] Salamat. Tanggalin na ang problema sa kalahati. Iyon ay tunay na real-- na pakikibaka. Kaya mapunit ang phone book sa kalahati, umaalis sa aking sarili sa panimula ang parehong problema. Ngunit siyempre, kalahati ng malaki. At kung sinunod ko James payo muli, at pumunta ako dito. sinasabi ko, oh ngayon ako sa seksyon T. At kaya siyempre, ako maaaring mapunit ang phone book sa kalahati nang isa pang beses, nag-iwan akin na may isang problema na ngayon ng isang isang-kapat ng ang laki. Kaya ko na nawala mula sa 1,000 sa 500 sa 250 na 125 at iba pa. Ito nararamdaman tulad ng ako pagkuha ng mas malaki kagat out ng mga problemang ito sa bawat pag-ulit, o sa bawat hakbang sa loob nito. At sa katunayan, ang oras ako pagpunta sa gastusin paghahanap ng Mike Smith sa halimbawang ito ay kaya lubhang mas mababa dahil sa huli ako pagpunta sa pagkayas ito pone libro down sa isa lamang lone page. At kung Mike ay sa pahinang iyon, ako pagpunta sa sige at magbigay sa kanya isang tawag pagkasumpong sa kaniya. Ngunit lamang kung magkano ang mas mahusay na ay na algorithm-- na maglakas-loob sabihin intuitive algorithm-- kaysa sa mga namin nagsimula na kung saan kami ay napaka linear-- kaliwa upang right-- sa isang bilis ng 1 o 2x? Well, sabihin i-plot na ito. Hindi namin kailangang mag-alala masyadong maraming tungkol sa matematika o numero sa kasong ito dito. Lang namin tumingin sa isang lagay ng lupa. Kaya sa x, o horizontal axis, ay ang laki ng mga problem-- kung gaano karaming mga pahina ay doon. Sa y, o ang vertical axis, ay kung magkano ang oras ito ay pagpunta sa dalhin ako upang malutas ito. At marahil na kung gaano karaming mga page liko, kung gaano karaming mga segundo, paano many-- ilang yunit ng mga panukala. At ko na inilabas ng isang red tuwid na linya dito dahil kung ang bawat karagdagang pahina ng phone book, hihingan ko ng sulit upang gumawa ng isang karagdagang hakbang. Kaya kung Verizon nagdadagdag ng isa higit pang page sa susunod na taon, Ay magkaroon ng sukat upang i-flip ng isa pang page upang mahanap ang isang tao tulad ng Mike Smith. Samantala, ang pangalawang algorithm, na kung saan Ako'y nagdaan sa tabi twos, ay ang parehong hugis. Ito ay pa rin very linear, very natitira upang right, pagkuha katumbas bytes sa bawat oras, ngunit ang slope ay isang maliit na mas mababa. Halimbawa, kung ang laki ng ang problema ay halos dito at ginamit ko ang aking unang algorithm, baka ako end up lahat ng mga paraan sa itaas ng na pulang linya. Ngunit kung ako sa halip ay gamitin upang twosies lapitan, ang dilaw na linya ay nagpapahiwatig dahil sa ito ay mas mababa, na ito ay pagpunta sa tumagal ako ng mas kaunting oras sa malutas. Ngunit kung ano ang hugis ng ikatlong algorithm-- muli, arguably ang pinaka-intuitive algorithm? Well, mukha itong isang maliit na isang bagay na tulad nito. Ito ay hindi tuwid, o logarithmic, sa hugis. At kahit na ito ay hindi kailanman uri ng flattens out, ito asymptotically inches up at up at up ngunit katakut-takot mabagal versus lahat ng iba pa. At kung ano ang mga mag-alis? Well, tinatawag namin itong mag-log n. Ngunit kung ano ang tunay na ibig sabihin? Well kung Verizon lambal ang bilang ng mga pahina sa aklat ng telepono sa susunod na taon mula sa 1,000 sa 2,000. Gaano karaming mga higit pang mga hakbang ay ang aking unang algorithm pagpunta sa tumagal? Ang aking unang algorithm. Siguro 1,000 karagdagang mga hakbang. Kung sila lambal ang phone book, pupuntahan ko na magkaroon upang i-flip sa pamamagitan ng ibang 1,000 mga pahina upang mahanap Mike. Of course, kung ang pangalawang algorithm, siguro 500 dahil ako pagpunta ng dalawang beses bilang mabilis. Ngunit kung Verizon doubles ang bilang ng mga pahina sa pagitan ng taong ito at susunod, sa aking ikatlong algorithm-- ang hatiin at lupigin na James iminungkahi, pagpunta sa kalahati at kalahati at half-- pa gaano karaming mga hakbang ay ito ay magdadala sa akin sa susunod na taon upang magkaroon ng isang libro ng telepono ng isang sukat 2,000? Isa lang. Sapagka't sa pamamagitan ng isang kagat, maaari ba akong kumuha, out ng problema na, kalahati ng mga pahina ang layo. At kung sa tingin mo tungkol sa isang maliit na crazily now-- kung ang phone book ay hindi may 1,000 o 2000 pahina, ngunit sabihin natin 4 billion pages-- ito ay isang malaking telepono book-- paano maraming beses o kung gaano karaming mga hakbang ito ay pagpunta sa tumagal sa akin upang mahanap Mike Smith sa aklat ng telepono na may 4 na bilyong mga pahina. Maaari mong uri ng simulan upang gawin ang matematika. Lahat tama. 4 billion hinati sa 2. Kaya na ang 2 bilyong hinahati sa pamamagitan ng 1. Iyan ay 1 bilyon. Pagkatapos kalahati ng isang bilyon. Pagkatapos 250-- gayon maaari mong gawin ito muli at muli ngunit hindi na maraming beses bago nakarating ka na sa isang pahina. At sa katunayan, kahit na ang telepono libro ay 4 billion haba ng mga pahina o ang database naghahanap ka ay 4 na bilyong rekord mahaba, ito ay pagpunta sa magdadala sa iyo bigyan o kumuha 32 hakbang lamang upang mahanap Mike Smith. At kung i-double mo ang phone book susunod taon mula 4 billion upang i-8 billion, 33 hakbang sa halip na lamang 32. At ito ay testamento sa isa sa mga ideya upang tayo'y yakapin sa computer agham mas pangkalahatang paraan, na kung saan ay ito computational iisip at na ang isang problema lantaran gamit ang mga tool mula sa iyong na pamilyar tool kit-- iyong tunay na mundo na may na kung saan ikaw ay pamilyar na, ngunit harnessing ang mga ideya upang aktwal na malutas ang problema. Ngunit kailangan namin upang gawing pormal ang aming mga solusyon sa mga problemang ito. At kaya hayaan mo akong ipakilala para sa isang sandali isang bagay na maaari naming tumawag pseudocode. Karamihan sa semester, kami gumastos gamit aktwal na code sa wika tulad ng C at PHP at JavaScript at SQL at iba pa. Ngunit para sa ngayon, sabihin lamang tumingin sa isang bagay na medyo madaling maunawaan tulad ng Ingles. baka ako magdistila na algorithm na kung saan May nakita akong Mike sa mga hakbang tulad nito. Pumili ng up ang telepono ng libro Open to gitna ng phone book Hanapin sa pangalan ni Kung Mike ay kabilang sa mga pangalan ni tumawag Mike Iba Pa kung Smith ay mas maaga sa aklat Buksan na ang gitna ng sa kaliwang kalahati ng aklat Else pumunta sa line 3 Iba Pa kung Smith ay mamaya sa aklat Buksan na ang gitna ng kanang kalahati ng libro Pumunta sa line tatlong iba Sumuko At mayroong ilang mga katangian ngayon sa ito na ay nagkakahalaga ng pagturo out. Kaya isa, lahat ng mga linya Ko na naka-highlight sa dilaw kami ay pagpunta sa simulan ang pagtawag pahayag o function o pamamaraan. Ang mga ito ay lamang pagkilos gawin ito, at mayroong hindi lahat na marami pabagu-bago sa mga ito. Susunod na hakbang dito bagaman, ay ang mga ito conditions-- kung, sino pa ang paririto, iba kung, iba. At ito ang tinatawag na mga kondisyon, o mga sanga, at ang mga ito ay desisyon puntos. At pinapayagan nila sa amin upang gawin isang bagay nang may pasubali. At sa katunayan, sabihin tumagal ng isang mabilis na tumingin sa marahil isang pamilyar face-- kami ay tumawag sa kanya Bill-- at kung ano mismo ang mga kondisyon, kung paano ito ay maaaring gamitin. BILL GATES: People gumawa desisyon araw-araw. Halimbawa, bago ka pumunta sa labas ka uri ng magkaroon ng isang kung pahayag na nagsasabing, kung ito ay umulan, at pagkatapos ko kailangan upang makakuha ng aking jacket. At computer ay amazing kapag nakalikha ka magpasya sa mga uri ng mga pahayag maaari silang mapagkakatiwalaan execute ang mga bagay sa mahirap na paniwalaan ang bilis. At sa gayon ang isang computer program talaga ay isang maliit na piraso ng matematika at ang ilang mga kung ang mga pahayag kung saan ang desisyon ay makakakuha ng ginawa. David MALAN: Kaya ngayon sabihin focus sa ilang iba't ibang lines-- mga ko na naka-highlight in yellow dito. At ito ay lumiliko out mayroong iba't ibang paraan ng pagpapahayag ng ideya na ito. Ngunit intuitively kung ano ang aming mga linya 8 at 11 na ko na naka-highlight dito na nagsasabi sa iyo gagawin? Oo, pumunta sa line 3, ngunit kung ano ang pag-uugali ay na talagang pampalaglag? Ito ay ilang mga uri ng loop o cycle, at maaari mong uri ng makita ito. Right? Kung on line 8, pumunta ka pabalik sa linya 3, at pagkatapos mong pindutin linya 8 muli, maaari mong bumalik sa line 3, pabalik sa linya 3, back sa line 3. May ganitong uri ng cycle o loop. At sa katunayan, na sapilitan sa line 11 potensyal na pati na rin. At ito ay isang basic programming bumuo pati na rin. Maaaring hindi mo nais na lamang gawin ang isang bagay na may isang pahayag o gawin ang isang bagay nang may pasubali na may isang kalagayan o branch. Baka gusto mong gawin ang isang bagay cyclically sa isang loop. At kami ay may ibang tao na kasama na maaari kang maging familiar-- kami ay tumawag sa kanya Mark-- ipaliwanag konseptong ito dito. Mark Zuckerberg: One bagay na mga computer ay talagang magandang sa ay paulit-ulit na mga utos. Bilang isang tao, gusto mo makakuha ng talagang bored kung ikaw ay nagkaroon na gawin ang mga parehong bagay maraming beses sa isang hilera, ngunit isang computer ay maaaring gawin ang parehong bagay milyon-milyong o kahit na bilyon-bilyong ng beses at hindi makapag nababato at ma upang madala na out talagang mahusay. Kaya halimbawa, kung ako nais na nais lahat ng tao sa Facebook ng isang maligayang kaarawan sa pamamagitan ng pagpapadala sa kanila ng isang email, maaari itong tumagal sa akin ang higit pa sa isang siglo upang aktwal na magsulat out ang lahat ng mga email na iyon sa lahat ng tao. Ngunit sa loob lamang ng ilang linya ng code, maaari ko magkaroon ng isang sistema magpadala ng email sa lahat ng tao sa Facebook nagnanais sila ng isang maligayang kaarawan. Kaya na kung ano loop ay at kung bakit ang mga ito ay mahalaga at isang bagay na ang mga computer ay maaaring gawin nang mahusay. David MALAN: Maraming salamat sa aming mga kaibigan sa code.org para sa mga dalawang films. At lamang noong nakaraang linggo, maaari kang magkaroon ng nakita na Mark Zuckerberg at Facebook nai-post ito anunsyo, na kung saan ay na sila lamang ay na ang nakalipas isang mahalagang milyahe para sa unang pagkakataon kailanman. 1 bilyong mga tao na ginamit Facebook sa isang solong araw, partikular noong Lunes. Ang isa sa pitong mga tao sa Earth tila naka-log in sa Facebook. Well, ito tila isang magandang pagkakataon upang tumingin pabalik sa kung saan nagsimula Facebook, at kami ay nangagdaan sa CS50 sariling archives dahil ito ay lumiliko out sa 2005, Mark ay nagbigay ng isang guest lecture sa CS50. Makikita mo na ang mga halaga ng produksyon ay hindi lubos ang parehong bumalik pagkatapos sa mga tuntunin ng teknolohiya magagamit, at makikita mo din tiyakin ang pagdalo ng guest lecture ay hindi kinakailangang isama ng loob ang interes ng mag-aaral katawan, ang iyong predecessors, gaya ito ay maaaring magkaroon ng lamang ng ilang mga taon mamaya. Kaya ipaalam sa tumagal ng isang pagtingin sa Science Center C. Tagapagsalita 2: Mangyaring sumali sa akin, at maligayang pagdating. [Palakpakan] Mark Zuckerberg: Yo. Lahat tama. Cool ito ay ang unang pagkakataon na ako kailanman ay nagkaroon upang i-hold ang isa sa mga bagay na ito. Kaya ako lamang ang pagpunta sa ilakip ito talagang mabilis. Lahat tama. Naririnig mo ba ito? Ito ba ay mabuti? Ay ito amplified sa lahat? Lahat tama. Sweet. Kaya, ito ay tulad ng isa sa mga unang beses Ko pa sa isang panayam sa Harvard, but-- David MALAN: Kaya sa huli ang Science Center ginawa mag-zoom in sa video, ngunit hindi bago kumuha ito excerpt kung saan ni Mark pakikipag-usap, na kung saan tinalakay niya ang kanyang kasama sa kuwarto, Dustin, na nais na bang ipahiram sa isang kamay na may ito site na tinatawag na ang Facebook.com at natanto na Mark ay malapit nang banggitin sa programming languages-- isa na tinatawag na Perl, isa tinatawag PHP-- bilang siya discusses ang mga pinagmulan ng ni Dustin contribution. Mark Zuckerberg: I nagsimula ang pagpapatakbo ng site at inilunsad ito sa Harvard noong Pebrero, 2004. Kaya ako hulaan halos dalawang taon na ang nakaraan ngayon. At sa loob ng ilang linggo, isang ilang libong mga tao ay naka-sign up, at hindi na namin na nagsimula sa pagkuha ng ilang mga email mula sa mga tao sa iba pang mga kolehiyo humihingi para sa amin upang ilunsad ito sa kanilang mga paaralan. At ako ay pagkuha ng 161 sa oras. Kaya hindi ko alam kung ikaw guys alam ang reputasyon ng mga kurso na iyon, ngunit ito ay uri ng mabigat. Ito ay isang tunay na masaya siyempre, ngunit hindi ito umalis sa akin ng maraming oras gumawa ng kahit ano sino pa ang paririto sa Facebook. Kaya ang aking mga kasama sa kuwarto Dustin, na ako hulaan Katatapos lang CS50, ay tulad ng, hey. Gusto kong tumulong. Gusto kong gawin ang pagpapalawak at tulungan mong malaman kung paano gawin ang mga bagay-bagay. Kaya ako ay tulad ng, na medyo cool, dude. Ngunit hindi mo talaga alam ang anumang PHP o anumang bagay tulad na. Kaya na weekend siya nagpunta sa bahay, bumili ng libro Perl for Dummies, dumating likod at ay tulad ng, ang lahat ng karapatan. Handa na akong pumunta. Ako ay tulad ng, dude, ang site ay nakasulat sa PHP hindi Perl, ngunit iyan ay cool. Kaya siya kinuha ang PHP sa paglipas ng tulad ng ilang araw dahil ako pangako na kung mayroon kang isang magandang background sa C, PHP ay isang napaka-simpleng bagay sa pick up. At siya lamang ang uri ng nagpunta sa trabaho. Bago namin kumuha ng isang pagtingin ngayon sa kung saan ang kurso ay pagpunta, payagan ako na mag-imbita lamang ang ilan ng mga kawani up ni SC50 sa stage. Ang ilan sa kanila ay shopping kanilang sariling mga kurso. Ngunit kung ang mga TFs at CAs at kurso ulo na dito ay maaaring dumating sa up at sumali sa akin para sa isang mabilis hello. Payagan ako sa kitang ipakilala sa partikular, Hanna, Maria, Daven, at Rob, kurso CS50 ulo dito sa Cambridge. [Palakpakan] David MALAN: Sa katunayan, testamento sa ang suporta istraktura na ang mga kurso ay may built out sa loob ng nakaraang maraming taon, CS50 kawani sa taong numero halos 100, at na ang dahilan dito sa Cambridge nag-iisa. Samantala, sa New Haven, ay may ilang mga 40 TFs at CAs at mga miyembro ng kawani doon upang patakbuhin ang kurso pati na rin. Payagan sa amin upang ipakilala ang una, Rob Bowden. Rob Bowden: Hi. Ako Rob. Ito ang aking ika-anim na taon TFing sa kurso. Kaya, ang lahat ng mga paraan pabalik sa aking freshman year, hindi ko tumagal CS50. Ang iyong freshman fall-- maaari kang maging pamilyar na maaari ka lamang kumuha ng apat na kurso at may mga kaya maraming mga kurso ngayon. Kaya ako gusto, eh. Ininom ko ang AP CS aking senior na taon ng high school ito ay kakila-kilabot. Kaya, ako tulad ng, eh. Computer science ay hindi para sa akin. Kaya nga siyang katiwala ng kurso ng aking freshman mahulog, na ako ay may isang kaibigan sa CS50, at Sa tingin ko nag-aral ako ng isa lecture sa kanya. Ito ay tulad ng, oh, ito ay uri ng mas mahusay na kaysa sa kung ano ako had sa high school. At sa kabuuan ng taon, ako ay nagkaroon ng aking sariling mga hanay ng problema sa mga kurso tunay na ako ay pagkuha. Datapuwa't aking nasumpungang tuwing ako nais na mang-abala sa mga, Gusto ko bumalik sa CS50 at tingnan ang ilan sa mga bagay-bagay na. So, yeah. Astig ako. Pagpapaliban ako sa coding. Kaya pagkatapos ito ay sa dulo ng pagkahulog na Napag-alaman kong, hey, computer science ay medyo cool. I end up pagkuha CS51. Sa susunod na semestre, I end up pagkuha CS61. At ang lahat mula doon ito, pagkatapos ko end up deklarasyon computer science, kung saan ako ay absolutely walang intensyon ng paggawa kapag ako ay dumating sa kolehiyo. At ngayon ako dito. Kaya ang course ay kung ano ang gumawa ka ng mga ito. Sana ay masiyahan ka ito. [Palakpakan] David MALAN: Salamat sa Rob. At ngayon Maria, ang aming magtungo course assistant. MARIA: Hey guys. Ang pangalan ko ay Maria. Ako isang sopomor sa Cabot House, na nanggagaling mula sa Bulgaria, at ako super excited na maging bahagi ng mga kawani sa taong ito. Ininom ko ang CS50 bilang isang primer anyo noong nakaraang taon, at ako ay hindi kailanman kahit iisip tungkol sa CS simula pa. Kaya ko talagang pag-ibig ang mga kurso, at ako Umaasa mo ang lahat pag-ibig ito ng mas maraming bilang ako did. At, oo. Maligayang pagdating sa CS50. David MALAN: Salamat sa Maria. [Palakpakan] Ngayon Hanna, aming ulo pagtuturo kapwa. HANNA: Hi, ako Hanna. Ako ay isang senior sa Cabot pag-aaral computer science. Ininom ko ang CS50 bilang isang primer anyo at nagkaroon naging TFing-- na ito makikita ang aking ikatlong taon. Kaya ako ay maligaya kasangkot sa CS50 para sa lahat ng apat na taon, at Naghahanap ako inaabangan ang panahon na nagtatrabaho sa iyo sa lahat. David MALAN: Salamat sa Hanna. [Palakpakan] At sa wakas, Daven, ang aming precepter. Daven: Hey guys. Ako ay utos sa paglipas ng sa computer science dito. Ito makikita ang aking ikaapat na taon ng pagtuturo. Ako din makatulong na pamahalaan ang kurso. Kaya ako sigurado makikita mo ako sa paligid, lalo na sa oras ng opisina. Ako ay palaging sa oras ng opisina. Kaya kung makita mo ako naglalakad sa paligid, tiyak na darating sabihin hi. Gustung-gusto ko upang matugunan ang lahat ng tao. Kung hindi man, magsaya, at kukunin ko na nakikita mo sa paligid. David MALAN: Salamat sa Daven pati na rin. Kaya makikita mo matugunan ang lahat ng mga kamag-anak bago ang haba. Ngunit nang walang karagdagang ado, kung ikaw guys gagawin nais na ipagpatuloy ang iyong upuan mula sa mas maaga. Payagan ako sa kitang ipakilala mula sa kalayuan ngayon ang ilan sa aming mga kaibigan mula sa New Haven, sa mga partikular na ang kurso na iyon ulo na bibigyan ay overseeing CS50 there-- Professor Brian Scassellati, Jason, at Andi, na just-- sa gayon ay hindi namin ginawa tuksuhin kapalaran sa anumang FaceTime o ang like-- Lamang Pinaparito kami minuto ago ang mga sumusunod na video kung saan sinasabi nila hello from silid para sa panayam at Yale, kung saan lecture ay naka-stream ngayon. Kaya ang aming mga kaibigan mula sa Yale. BRIAN SCASSELLATI: Hi, David. Hi, lahat ng tao sa Harvard. Kami ay kaya nasasabik na maging nagdadala CS50 sa Yale na ito semestre. Ang pangalan ko ay Brian Scassellati, ngunit lahat ng tao lamang tawag sa akin Scas. At ako dito ngayon upang ipakilala sa iyo ang CS50 kawani. [Pagpalakpak] At mas mahalaga, ako dito upang ipakilala ang pati na rin lahat ng mga estudyante sa Yale na bilang ng mga ito umaga ginawa ito ang pinaka-popular kurso sa Yale CS50 mga mag-aaral. [Pagpalakpak] Kaya kami ay napaka nasasabik na nakikita mo dito sa Biyernes at sa Sabado para Puzzle Day at magkaroon ng isang mahusay na panayam. Bye. [Palakpakan] David MALAN: Sa screen dito ay mga pangalan ng mga ilan sa 140 mga kawani miyembro na naghihintay sa iyo sa ibabaw ng kurso ng semester-- ilan sa mga ito dito sa Cambridge, ang ilang mga sa kanila dito sa New Haven. At sa katunayan magkakaroon ka ng isang pagkakataon ngayong Sabado, bilang Scas tala, upang dumalo CS50 Puzzle Day. Maaaring nakakita ka ng maliit na piraso puzzle slipped sa ilalim ng iyong doorways nakaraang araw. Mayroon kaming ilang mga extras dito sa susunod kapag umiiral sa iyo. Kung ipon ka lahat ng apat na puzzle piraso at sumanib sa pwersa sa mga kuwarto malapit sa iyo sa iyong bahay o dorm, makikita nila magtipon sa isang QR code-- o isang dalawang dimensional bar code, na isang beses na binuo at na-scan gamit ang iyong telepono ay hahantong sa iyo sa ilang mga hindi kapani-paniwala na premyo or-- ipagpalagay ko maaari mo lamang Kuha ito ngayon din. Ngunit mahanap ang mga piraso ng puzzle nonetheless upang manalo na hindi kapani-paniwala na premyo. At sa katunayan isa sa mga tradisyon in SC50-- ah, masyadong mabagal. Isa sa mga tradisyon sa CS50 ay upang maglingkod cake pagkatapos ng unang panayam. At kaya sa katunayan, sa isang ilang minuto mula ngayon, magkakaroon cake nagsilbi sa labas parehong dito at New Haven pati na rin. Ngunit first-- namin pinalamutian ang mga ito sa ating sarili. Ngunit first-- at sana may makikita sapat. Ngunit una, isang mabilis na pagtingin. Kaya lektura ay sa katunayan ay ginawa halos dito sa Cambridge. Ngunit sa bawat buwan, kami ay Hop pababa sa Yale may CS50 production team at stream kurso sa reverse direksyon pati na rin kaya bilang upang dalhin ang dalawang campus tunay na para sa unang pagkakataon sa kasaysayan mas malapit nang sama-sama hangga't maaari bilang isa sa parehong kurso. Sa mga tuntunin ng istraktura ng suporta na ay tumayo dito sa Cambridge pati tulad ng sa New Haven, ang mga seksyon. Sa katunayan, bilang ang ilan sa inyo ay maaaring alam, mayroon kaming iba't ibang mga track sa loob ng mga kurso para sa mga mas kumportable, mas kumportable, at sa isang lugar sa pagitan ng sa gayon ay isinasaalang-alang ng iyong naunang background, maaari mong huli magtagumpay sa klase. oras ng opisina samantala, ay isang pagkakataon tuwing Lunes at Martes at Huwebes gabi upang gumana sa parehong dito at sa New Haven sa aming kurso hanay ng problema na may dose-dosenang mga staff ng kurso na malapit sa iyo. Problem nagtatakda samantala, ay suportado ng mga bagay-bagay na tinatawag naming walkthroughs, na nakabatay sa video tutorials na tunay pagsagot FAQ ng kung saan magsisimula hamon sa isang linggo. At postmortems ituturo sa iyo sa pamamagitan ng mga posibleng solusyon upang ang mga dulo ng problema set masyadong, ikaw eksaktong alam kung ano ang maaaring nagawa mo na sa ibang paraan o sa kabuuan kung hindi man. Ang problema nagtatakda paririyan sa dalawang edisyon, isang standard edition na inaasahan namin at mag-imbita sa karamihan ng ang class-- mga 90% plus na do-- at isang tinatawag na Hacker edition kung saan ang bawat pahina ay emblazoned Hacker edition, Hacker edition, Hacker edition, kaya na ikaw ay may na karma kung ikaw ay, para sa diving sa mas advanced na bersyon ng mga hanay ng problema ang kurso na iyon nangagaalay para baga ang parehong materyal ngunit may isang mas sopistikadong diskarte at may karagdagang background minsan ipinakilala. Samantala, ang naroon siyam late araw na maaari mong ilapat sa problema ng kurso nagtatakda pati na rin ang pinakamababang score, na drop namin sa mga tuntunin ng pagtatapos. Ngunit kung ano ang naghihintay? Well, isang lasa ng problema nagtatakda sa kamay sa Biyernes at sa susunod na linggo kung saan kami magkawkaw para sa mga lamang ng ilang araw sa isang bagay tinatawag Scratch, isang graphical programming wika na binuo sa pamamagitan ng aming mga kaibigan sa MIT Media Lab na nagpapahintulot sa iyo sa programa alinman sa unang pagkakataon o sa isang bagong kapaligiran lahatan gamit ang isang i-drag and drop type kapaligiran. Sa pamamagitan din nito piraso puzzle lamang pagkawingin magkasama kung ito ay gumagawa ng lohikal na kahulugan na gawin ito. Samantala sa hanay ng problema dalawang nakaraang taon halimbawa, ay ipakilala namin sa klase sa mundo ng cryptography, ang sining ng pag-encrypt o scrambling impormasyon. Sa katunayan, ang text na ito dito kung decrypted, ay tunay na humantong sa inyo na ang ilang mga masasayang destination. At sa hanay ng problema, kung ano ang aming mga mag-aaral ay nagkaroon ng gawin ay ipatupad eksaktong mga uri ng mga bagay- isang algorithm, o hanay ng mga tagubilin para sa scrambling at scrambling impormasyon. At sa Hacker edisyon ng na parehong hanay problema, ay hamunin namin mag-aaral na kumuha ng isang encrypted file mula sa isang tipikal na computer system na may lots ng mga username at naka-encrypt password at upang i-crack ang mga passwords-- aktwal na malaman kung kung ano sila ay walang pag-alam ang anumang bagay walang pagsubok tungkol sa mga aktwal na mga password. Samantala, ang ginagawa namin transition sa problema nagtatakda upang pagkatapos ng pagtingin sa mundo ng graphics. At sa katunayan, maaari mong isipin ngayon na ito ay maaaring marahil ang pinakasimpleng paraan upang kumatawan isang itim at puti larawan. Ang isang puting pixel, o parisukat, bilang sa kanang tuktok doon, maaaring kinakatawan sa isang 1 at isang itim na parisukat maaaring katawanin sa isang 0. At sa pamamagitan lamang ng paggamit ng mas bits tulad namin iminungkahi mas maaga na may 72 at 73 at 33, maaari naming kumakatawan kulay pixels pati na rin. At ano ang ginagawa namin sa panahon ang problemang ito ay set karaniwang tumatagal ng isang mamasyal sa paligid campus na may isang digital camera, kumuha ng litrato ng tao, mga lugar, at mga bagay. Pagkatapos ay sa paanuman bawat semestre, tila namin upang sinasadyang tinanggal o sira ang memory card kung saan ang lahat ng mga larawang iyon ay, at kaya ikaw ay hinamon upang pagkatapos ay sumulat ng software na kung saan upang mabawi ang mga JPEG mula sa isang kopya ng card ng aming camera. Samantala, huwag ipasa namin sa iyo mamaya sa ang termino ng isang diksyunaryo ng mga salitang Ingles na mayroon 143,000 mga salita, at kailangan mo upang makabuo ng na may isang matalino na paraan ng loading ang mga ito sa memorya, o ang RAM kaya na magsalita, upang sagutin tanong ng form: ay ito ng isang salita, ito ay isang salita, pagpapatupad ng pinakamabilis spell checker na maaari mong, kahit pinning ang iyong sarili potensyal na laban classmates upang makita kung alin sa iyo ay gumagamit ng ang hindi bababa sa halaga ng oras kapag tumatakbo ang iyong code at kahit ang hindi bababa sa halaga ng memorya. Mamaya sa panahon gagawin mo talagang ipatupad ang iyong sariling web server. Kaya hindi lamang isang website sa isang wika na tinatawag na HTML at higit pa, ngunit isang web server na talagang nakikinig sa mga kahilingan sa internet at tumugon sa mga ito. At sa katunayan, ito ay kung paano namin tulay ating mundo ng C na kung saan makikita mo maging pamilyar sa susunod na linggo at PHP at HTML at JavaScript at CSS at iba pa. Dahil isa sa mga unang mga web based proyekto ang ginagawa namin sa ibang pagkakataon sa ang mga kataga ay kasaysayan CS50 Finance. Etrade.com style ng isang website na nagbibigay-daan sa iyo na bumili at magbenta ng stock halos habang din ng pagsusulat ng code upang makipag-usap sa Yahoo Finance pagkuha semi real time stock quote upang i-update iyong sariling portfolio. Ngunit sa wakas ng mga kurso, ay ang huling project-- isang pagkakataon na gawin ang karamihan ng anumang bagay na interes sa iyo upang malutas ang isang problema dito o lagpas ng interes sa ka na sa paanuman inspirasyon sa pamamagitan ng mga aralin natutunan sa klase. At ang klase, gaya ng maaaring alam mo na, culminates sa tinaguriang CS50 Hackathon at CS50 Fair at anumang bilang ng iba pang kultural na mga kaganapan sa buong semester na magpapahintulot sa inyo na umaakit sa bawat isa at staff ng kurso. Halimbawa, sa Sunog at Yelo sa Sitar sa taong ito, well, sa Biyernes hapon, inaanyayahan namin ang ilang mga 50 mga mag-aaral sa tanghalian, kahit sino nais na sumali sa amin, aking sarili, at tungkod, at ang aming mga kaibigan mula sa industriya at alums makipag-chat tungkol sa buhay sa tunay na mundo at sa hinaharap habang enjoying isang magandang tanghalian. Sa Hackathon habilin nakikita mo tulad ng mga imahe dahil ang mga ito, kabilang ang maraming candy-- at bilang ng 2014 para sa unang time-- gulay. [Palakpakan] Ngunit sa pamamagitan ng 5:00 AM, ang ginagawa ng scene karaniwang hitsura ng isang maliit na isang bagay na katulad nito. At pagkatapos lamang ng isang linggo o kaya mamaya, ay ang CS50 Fair na kung saan ang ilang 2000 plus mag-aaral at mga kawani at faculty mga kasapi mula sa buong campus at sa buong campus sa taong ito dumating upang makita at nangaaaliw sa mga kabutihan ng CS50 mga mag-aaral, na kung saan ay sa iyo ngayon. At sa katunayan, habang sa taong ito kami ay na nag-aanyaya at busing sinuman sa sa Yale na nais upang makabuo sa Cambridge ngayong Sabado para sa CS50 Puzzle Day, at gagawin namin ang eksaktong parehong bagay sa Disyembre para sa CS50 Hackathon upang ang Harvard at Yale aaral magkamukha nakikibahagi sa parehong ng mga kaganapang ito. Pananagutin din natin ang CS50 fairs sa Cambridge at sa New Haven sa taong ito upang ang mga mag-aaral sa parehong campus at mga kawani at faculty maaaring makita ang bawat kanya-kanyang accomplishment ni campus. At yaong mga kabutihan ay gumanyak tulad memory bilang na ito at ito at sa huli ito, kung saan ang lahat ng sa iyo lumabas sa klase may suot ng isang maliit na isang bagay na kung saan kayo ay sana masaya o mapagmataas upang sabihin na kinuha ko CS50. Ngunit bago iyon at bago kami ay maglilingkod sa cake, binuo namin together-- salamat sa CS50 ni production team at isang tiyak na self stick, ang isang pagkakataon na ginagamit namin mga bagay for-- nang suguin namin ito hindi lamang dito sa Cambridge kundi pati na rin sa New Haven upang lumikom ng ilang hellos mula sa kawani kurso at ang lahat ng mga folks ikaw ay matugunan ang parehong dito at sa Bagong Haven sa mga sumusunod na buwan. Payagan ako sa kitang ipakilala sa isang ilang higit pa sa staff ni CS50. Mark Zuckerberg: ba na gawin itong pumunta? Oh, ito ay pagpunta. Ito ay pagpunta. Ooh. Yarr! [MUSIC PLAYING Andy Grammer, "HONEY, I'M  GOOD "] MARY: Ito ay Caitlin. Iyon ang dahilan Jay, at ako si Maria. SATO: Hi, guys. Ako Sato. MICHAEL G .: Hi. Ang pangalan ko ay Michael, G. DOUG LLOYD: hindi ako. Hindi. Ako Doug Lloyd. I can not believe na ako na may hawak na ng selfie stick ngayon. SPEAKER 4: Hi. SPEAKER 5: Hi. SPEAKER 6: Hello. SPEAKER 7: Hi. SPEAKER 8: Hey. Kami ay pabitin out sa Yale. Kami ay talagang nagaganyak para ito semestre dahil ito ay sa unang pagkakataon ito ay darating sa Yale. Ito ay pagpunta sa maging kasindak-sindak! [MUSIC nagpe-play] JACOB SCHERBA: Ang pangalan ko ay Jacob Scherba. Nasasabik akong magturo CS50 dahil sa tingin ko ito ay magdadala sa computer science sa mga tao sa at mararating paraan. SPEAKER 9: Ako ay talagang excited na magturo CS50 dahil kinuha ko ang klase noong nakaraang taon, at ito ay isa sa mga pinakamahusay na mga klase. SPEAKER 10: Yeah. Ang aking payo ay na dapat mong gawin CS50. JACOB SCHERBA: Pinili ko CS dahil Sa tingin ko ito ay isang masaya at creative na paraan upang malutas ang problema sa isang analytical paraan. SPEAKER 11: Bumalik kapag ako ay isang maliit freshman at takot ng computer science at takot ng paggawa engineering at bagay-bagay, ito ay ang unang hard klase na kinuha ko, at ito ay din ang aking paboritong klase dati. DOUG LLOYD: This is my ikasiyam na taon ng pagtuturo CS50. Na gumagawa ako tunog kaya old! Mayroong palaging isang bagong bagay. Mayroong palaging isang bagay kapana-panabik. Mayroong palaging bagong hamon mukha sa pamamagitan ng bagong mag-aaral, at ito ay masaya upang matulungan ang mga ito at upang makaranas ng mga hamon sa kanila at tulungan sila na malutas ang kanilang mga problema. SPEAKER 12: Kapag ako unang natutunan kung paano gawin CS, ito ay tulad ng pag-aaral ng isang super kapangyarihan. At upang makita na sa ibang mga estudyante at upang matulungan ang mga ito sa pamamagitan ng prosesong iyon ay isa sa mga pinaka rewarding bagay na hindi ko na kailanman. SPEAKER 7: Pinili ko CS dahil sa simula, ako ay isang math concentrator at kinuha ko CS50 at ay nahulog sa pag-ibig dito. Nadama ko rin na may CS, kaya kong bumuo ng mga bagay. At iyon, naisip ko, ay isang talagang cool na aspeto. SPEAKER 13: Ang ilang mga payo para sa mga bagong mga mag-aaral ay pumunta sa mga oras ng opisina at mag-hang out kasama ang mga kahanga-hangang TFs. SPEAKER 14: Simulan ang iyong P-SET NG maaga, pumunta sa oras ng opisina, maging frends sa iyong tf. SPEAKER 15: Yeah. Everything kanyang sinabi. SPEAKER 16: Huwag maging matakot na humingi ng tulong. SPEAKER 17: Yeah. SPEAKER 18: Simulan ang iyong P-SET NG maaga. SPEAKER 19: Ito ay isang malaking panlipunan karanasan. Gumawa ng isang pulutong ng mga kaibigan sa ganitong paraan. SPEAKER 14: Pumunta sa seksyon Ito ay masaya. SPEAKER 11: Ibig kong sabihin, pumunta para dito. Ito ay talagang mahirap. Makakakuha ka ng out ng mga ito ano ang mailalagay mo sa mga ito, ngunit ito ay isang tunay na masaya klase lalo na kung ikaw handang ilagay ang oras sa ito, ngunit ito ay tumutulong sa kung ikaw ay ilagay ang iyong oras sa ito. Makakakuha ka ng isang pulutong ng higit pa sa labas ng ito sa susunod. Mike: ako Mike. CAMILLE: Ako Camille. Hanya Ako Hanya. MATT: Ako Matt. PETER: Ako Pedro. PHILLIP Ako Phillip. PATRICK: Ako Patrick. Rob Bowden: Ako Rob Bowden. BRIAN SCASSELLATI: My pangalan ko ay Scas, at this-- LAHAT: --is CS50. SPEAKER 20: Sa Yale. SPEAKER 21: Sa Yale. [Tumatawa] David MALAN: Iyon lang para sa CS50. Makikita natin sa iyo mula sa Yale sa Biyernes, palaisipan Day sa Sabado. Cake ay ngayon nagsilbi. Ito ay CS50. [MUSIC nagpe-play]