>> David: Velkominn, nafn mitt er David Malan og þetta er CS50. Og þetta er ekki dæmigert menntaskóla tölvunni vísindi námskeiði. Þetta námskeið er lítill eitthvað sérstakt. Og það er ekki vegna þess að ég er að kenna það. það er vegna þess að þetta er einn af, við eins og til hugsa, þá koma fyrir námskeið sem í raun kreistir heilann svo mikið og tímaáætlun svo mikið að við lok misseris 'þú telur raunverulega betri. Svo það var eins og ég fann þegar ég sjálfur tók þennan áfanga aftur árið 1996. Ég var í ríkisstjórn stórt á þeim tíma hér heima í Mather House. Og, I. [Uppörvandi] Eins eru aðrir, fimm aðrir þarna. Svo var ég í ríkisstjórn stórt á þeim tíma. Og ég var í ríkisstjórn mikil vegna þess að ég vil alltaf viljað sögu. Mér líkaði stjórnarskrá lögum í menntaskóla. Og svo setti ég slökkt á þessari leið nýnema ár að gera það sem ég best að gera það sem ég vissi að ég vildi. Og ég vil alltaf verið hluti af gáfuð, myndi ég babbled alltaf með tölvum. En, ég sjálfan mig, ef til vill kaldhæðni á að hyggja, ég vil alltaf litið á strákana sem voru að taka tölvunarfræði í menntaskóla mínum, vinum mínum eins og the raunverulegur geeks. Og enn, að lokum did, sophomore ári ég taki þetta smá námskeið sem kallast CS50 sem í raun hafði hræddur mig af stað eigin freshman ári. Og ég var notandi aðstoðarmaður á þeim tíma. Svo var ég svo sannarlega þegar viðurkennt, að minnsta kosti að vera á meðal þeirra, þá geeks sem ég gerði grín að í menntaskóla. En, ég var hræddur. Það er, það hafði þessi orð á sínum tíma og kannski enn að hluta til að það var, það var skelfilegt að sjálfsögðu. Það var mikið verk. Það var erfitt og samt er það einn af þeim hlutum sem Guð minn, gelta var miklu verra en bit hennar. Mér fannst ég sjálfur sophomore ári, í fyrsta sinn, í raun að finna heimavinna gaman. Og ég ætla ekki að segja þetta bara til að kasta þessu námskeiði við þig. þetta var raunveruleg framkvæmd fyrir mig. Nú, ég held, á einum stað, gerði ég yfir línuna til að sanna geekdum þar sem ég nota í raun til að hlakka til föstudags kvöldið því að ég gæti krulla upp fyrir framan litla MacBook mín og vinna setur vandamál CS50's. Þannig að, að benda, ég held að ég hafði greinilega yfir línuna. Og markmið okkar á þessu námskeiði er ekki að snúa ykkur inn í þessi manneskja, en bara að segja að það er lítill eitthvað sérstakt við þetta námskeið, a lítill eitthvað sérstakt við tölvunarfræði í almennum sérstaklega þessa dagana. Og því meira sem acclimated við höfum öll fengið inn tæknilegur, the fleiri leikföng við að bera í kring í vasa okkar sem eru sjálfir tölvur. Ég meina, iPhone mitt er í raun betri árangri tölva en laptop minn var í framhaldsskóla. Þú geta gera a einhver fjöldi af snyrtilegur hlutur með þetta. Og nú, af okkur í þessu herbergi, sennilega bara að nota hugbúnað annarra, verkfæri annarra, lausnir annarra við vandamál vegna þess að við förum til iTunes, sækja okkur nokkrar app frá the App Birgðir og Walla við getum gert eitthvað virkilega snyrtilegur. En í lok þessa önn, þú geta vera sá að gera að leysa vandamál. Þú getur verið sá að leysa sum vandamál, bygging sem app, sem stykki af hugbúnaður, þessi tól sem, annaðhvort ein amuses bara ég, amuses þér. til dæmis að stjórna td iTunes safnið frá með íbúðir þinn greinilega app sem er þegar til eða þú getur fundið skutla báta fleiri auðveldlega til dæmis. Svo í raun einn af the mjög fyrstur hlutur ÉG did eftir að CS50 var aftur, það var líklega á þessu stigi Föstudagur nætur og laugardagur nætur, það var þetta tækifæri á þeim tíma þar sem Harvard var hlaupandi skutla rútum. Og á þennan dag, enn þeir hafa prentað tímaáætlun. En, það var í raun þýðir ekkert á netinu til að finna út hvenær næsta skutla var. Nú, gerði ég ekki sama, því jafnvel þótt ég bjó í Mather ég var ekki meðal þeirra sem yfirleitt tók skutla. En, ÉG had a einhver fjöldi af vinum í Pfoho til dæmis. Og einn af þeim í mig, held ég í á einum stað. [Uppörvandi] Jæja Pfoho er betra en Mather virðist. Svo, einn af vinum konar mín fékk mig að hugsa ef ég get skrifað lítið forrit til konar hjálpa vinum mínum að sjá skutla tímaáætlun. Og þannig var fæddur awkwardly hét skutla drengur, þetta stykki af Lexicon, sem hefur dvalið í kring um nokkurt árabil að minnsta kosti hjá sumum af upperclassmen. Á þeim tíma var þetta litla stjórn lína forrit svipað í anda að Dos. Það var í gangi í UNIX umhverfi. Svo var það ekki mjög kynþokkafullur yfirleitt. Þú slóst alveg núna skipanir og það sagði þér þegar shuttles voru. Jæja, þessa dagana það er lítið flóknari. Og það er fulltrúi í raun of nákvæmlega hvaða tegundir af verkefnum sem nemendur á þessu námskeiði enda á því að gera við skilmála þess. Svo þetta er útgáfa fjögurra um 15 árum síðar, á Shuttleboy. Virðast Google Maps er tilvera a hluti hægur þar. En fyrir þá sem þurfa að komast út af hér eftir tegund og fara, segja frá Memorial Hall og þurfa að fara upp til, segja, the Quad. Jæja, getur þú annað hvort fara í tvær mínútur ef við, þetta virkilega er ekki að virka fyrir þig bara enn, eða þú ert eins og margir aðrir valkostir eins og þú vildir. Og, kemur bráðum, við getum kasta þessu frá CS50, það vilja vera the sami hæfileiki með SMS. Þú getur texta Shuttleboy gegnum síma. Þér kallið Shuttleboy. Símanúmer CS50 á þessu ári, ja, ótrúlega var þetta í boði, 617-Bug-CS50. Svo, sem mun Frumraun fljótlega. Svo gera kalla það ekki bara enn af því að ég hef fengið reprimanded fyrir, núna það er að vera flutt til klefi sími kerfi okkar höfði kennslu náungi er. Svo þarftu bara að fá hann ef þú hefur einhverjar spurningar um skutla áætlun nú. En, sem mun brátt verða hrint í framkvæmd. Svo annars, reyndar, að við okkur var í sumar á raunverulega í undirbúningi fyrir þessa önn var í heild búnt af annar vandamál sem við vildum að leysa. Fyrir dæmi, there 'a heild einhver fjöldi af efni sem gengur á í þessu háskólasvæði á ákveðnum degi. Og í raun, setja annan hátt, there 'a heild einhver fjöldi af efni fara á á þessu háskólasvæði sem ég vissulega aldrei að nýta. Og jafnvel þótt ég nú óvart með hversu margir hlutir sem eru að fara á, á háskólasvæðinu, ég virðist samt aldrei að finna tíma. En, Walla, jafnvel þar, fyrirlestur CS50's. Það er þar sem þú er, þannig að þetta var, þetta var forrit við sömdum til samanlagður alla viðburði á háskólasvæðið. Og þetta hefur verið eitthvað sem öðrum nemendum á þessu sama námskeiði hafa tekist á eigin spýtur. Og höfum við að vinna með öðrum aðilum á háskólasvæðinu að virkilega gera þetta gerast. En benda til CS50 þessum tíma er að öllum þessum litlu verkefnum sem við höfum verið að vinna að því hvort þetta einn eða hvort einn fyrir samtals allt að frétta Harvard á einum stað, allt á Google News, öll þessi atriði eru að fara að hafa það eru kallaðir API's, umsókn forritun tengi. Og þetta er bara fínt að tala um getu að láta annað fólk, fólk í þessu herbergi, gera í raun eitthvað með þessi sömu gögn. Svo, eftir skilmálum enda, ef þú ákveður að innleiða lokaverkefni sem tengjast fréttir eða atvik eða kort, vel við, að minnsta kosti sem að sjálfsögðu verður að gera það því fremur auðvelt á þessu ári með því að veita þér með tengi; konar virka, ef svo má segja, hugbúnaður sem hægt er að nota í eigin verkefnum til að fara yfir og fyrir handan þar sem nemendur, ef til vill hafa farið á tímum fyrri vegna þess að þessi rammi hefur ekki verið til staðar fyrir þá. Og aftur, þetta hófst allt fyrir mig að minnsta kosti, um 15 árum síðan framkvæmd Shuttleboy. Ég send síðan vinur Ken minn í Pfoho. Ég sagði hæ hvað finnst þér? Er þetta að gagni? Hann sendur er út á Pfoho opna lista og Walla, öll þessi ár seinna ég er víst enn mjólka þetta verkefni. Og snyrtilegur hlutur óður í það, og þetta er þar líka námskeið eins og þetta í verkfræði og tölvunarfræði, ég hugsa, er svolítið sérstakt, er að þegar þú heimilið þitt verk og þegar þú verkefni þitt á þessu námskeiði, þú Veistu, margir af þeim, já, munt þú leggja til hliðar og ekki raunverulega nota aftur. En, sumir af það, mun yður. Og það er þetta virkilega öflugur hlutur, amk fyrir mig, þetta virkilega spennandi hlutur, þegar þú gerir eitthvað og annað fólk í raun sama, gera öðru fólki ekki bara brosa og klappa tegund þinn á bak og þá á að ganga um eigin lífi. Þeir nota raunverulega hvað þú gerðir í eigin lífi sínu jafnvel ef það er til eitthvað eins kjánalegt eða eins einfalt og bara að finna þegar þeir geta fengið út úr hér til að ná næstu skutla til Quad. Svo, eftir skilmálum enda, það er eitt af markmiðum fyrir þetta námskeið, til að styrkja ykkur bara að þekkja nokkur vandamál hvort sem það er á háskólasvæðinu eða vonandi vel út fyrir háskólasvæðið, og í raun notað eigin færni þína eigin skoðun og leysa þessi vandamál í sumum hluti, tæknilega. Svo er þetta líka námskeið eins og við segjum í kennsluáætlun og námskeið opinbera lýsing sem kennir þér hvernig á að hugsa og það kennir þér hvernig á að leysa vandamál á skilvirkari hátt. Jæja, hvað þýðir það? Jæja, þegar þú hefur fengið 600 megahertz í vasa eða þremur gigahertz undir skrifborðið heima, getur þú leyst a einhver fjöldi af vandamál duglegur bara með því að klippa skepna afl. En, there 'a einhver fjöldi af vandamál í þessum heimi, hvort sem það er að leita að segja, net Facebook eða netið í gegnum Google, að það skiptir ekki máli hversu hratt sérstakur tölva yðar er, það er engin leið í helvíti þú ert að fara að leita milljörðum vefsíðna fljótt nema þú nálgast raunverulega vandamálið greindur. Þú ert ekki bara að leita, til dæmis, a gríðarstór listi af öllum vefsíðum á jörðinni frá toppur til botn útlit fyrir eitthvað tengt hvað sem leita hugtökin sem þú ert að leita að vonandi Google og væntanlega Google og Facebook og allir þessir stóru aðilar hafa a einhver fjöldi af sviði fólk að hugsa um hvernig þeir geta fundið gögn hraðar, hvernig þeir geta vinna úr upplýsingum á skilvirkari hátt, og hvernig þeir geta bara almennt niðurstöður hraðar svo að þú getur gert enn meira áhugavert við þessi tæki. Og svo, hvað er átt við, þó með því hvernig kennsla fólki hvernig á að hugsa meira og vandlega, meira algorithmically. Ja, þetta litla sjón virðast alltaf að fara yfir vel. Og virðist það vera eftirminnilegt. Og ég var meira að segja spurði bara í gær við fyrrverandi nemendur, ó þú ert að fara að gera í símaskránni hlutur aftur. Og ég ansi mikið á staðnum ákvað allt í lagi viss um að við munum byggja upp símaskránni hlutur. Og hann spurði mig þegar þú reif það í tvennt rétt, ég var eins vel já tæknilega við reif það í tvennt, en ekki í leiðinni, í tölvunarfræði vegur ÉG vilja vera fær að rífa þetta í tvennt. Og svo er hér var vandamálið sem við fram um nokkurt skeið. Svo, hér er í símaskránni. Það fékk amk þúsund eða svo síður. Og einfalt markmið í hönd mjög raunverulegur veröld er að finna, segja, a manneskja hérna. Svo, Mike Smith, síðastur nafn sem byrjar á S. Svo er ég dæmigerður manna, sæki ég upp þessa símaskrá. Og einhver þarna úti, hvað myndir þú, sem er dæmigerður einstaklingur, að gera til að byrja að finna Mike Smith, vitanlega ekki að vita fyrirfram hvaða síðu hann er raunverulega á. Einmitt, svo þú fara um það bil í miðjunni til hægri. Og á þessum tímapunkti í sögunni, ég er sennilega í N eða M er, þú veist, það bil helmingur vegur í gegnum the símaskránni. Skrúfjárn út, í síðasta skipti sem ég gerði þetta dæmi sem ég fann einhvern veginn mig í sólríku kafla. Svo, það er í raun ekki jafn rólegur milli A fer í gegnum M-og N gegnum Z. En, í dag, við erum í raun í M, allt í lagi svo núna er ég á M. En hvað er takeaway minn nú bara eins og venjulegt manna burt af götunni? Hvar á ég að fara á næsta fyrir Mike Smith. [Inaudible] Og svo er bara líklegast á þessum hluta, hægri, þar sem S kemur eftir M. Og svo er hér liggur sjón leiklist. Það er í raun ekki ofsafenginn það í tvennt, rétt. Ég svona svikari niður miðjunni. En vitum við nú að Mike er að minnsta kosti ekki í þeim helmingi. Við getum bókstaflega kasta helmingur af the vandamál í burtu. Og ég fór með vandamál sem er í grundvallaratriðum enn það sama, finna Mike Smith í raun stór bók. En vandamálið er nú helmingur eins stór. Ef það var þúsund síðum áður, nú þess 'got 500. Þú veist hvað ég get gert það sama aftur. Ég get konar endurkvæmur eða ítrekað gera það sama. Nú er ég ekki alveg í S. Ég er á T. Og svo, ó ég fór aðeins of langt. En, ég veit nú að Mike er ekki rétt, það er að fara til vera sumir tegund einhvern tíma þar sem ég get bara ekki rífa stífluna hlutur, ÉG veðmál. En nú, ég veit að hann er ekki hér til hægri. Svo nú er vandamálið hefur verið quartered. Svo hef ég farið frá þúsund til 500-250 síður. Og aftur, ef þú heldur áfram að rökfræði, að halda áfram að stærðfræði, ég er chopping þetta vandamál í tvennt, í tvennt, í tvennt til að lokum ég er annað hvort að fara til ekki fundið neitt Smith yfirleitt, ólíklegt, eða ég ætla að finna það sem ég er að leita að. En þessi, þá bidur, spurningin er að þetta sé einhver betri en einföld nálgun bara að segja, þú veist, A, nei, B, nei, byrjar frá vinstri til hægri fara línulega í gegnum bókina? Jæja, dragast já. Þess 'að fara til vera a einhver fjöldi hraðar. En hversu mikið minni? Jæja, ef ég hef þúsund síðu símaskránni eða segjum 1.024 fyrir þá sem vilja veldi af tveimur, hversu mörg skipti gæti ég þurft að kljúfa þetta vandamál í tvennt áður en niðurstaða Mr Smith? >> Tíu. >> David: Svo, tíu, rétt. Ef þú hefur 1.024 síður og þú hættu þá í tvennt, í tvennt, í tvennt, í tvennt, ég að tíu sinnum sem þýðir að ég kemst frá 1.000 síður til þess sem ég er að leita að í einungis tíu síður beygjunni. Og það er eins konar snyrtilegur, en, þú veist, ef þér finnst um það að þú hefur verið að gera þetta í lífi þínu. Það er ekki það að stórkostlegar. En nú, að í símaskránni er ekki bara til Boston, það er fyrir öllu BNA eða allan heiminn og þetta hefur milljörðum síðna á því, svo ímynda sér símaskrá með fjögurra milljarða síðna. Hversu margir síðu snýr er ég að fara að þurfa að gera hámarks að finna Mike Smith í fjögurra milljarða síðu símaskránni? >> Skráðu þig stöð tvö. >> David: Svo já, ef þú ert góður í stærðfræði tegund þetta er tengja stöð tvö. En ef þér finnst 4-2000000000 to one milljarðar svo hálfan milljarð. Ég meina, sem í raun fer whittles sig niður laglegur fjári hratt. Í raun með 32 halvings í símaskránni jafnvel frá fjórum milljörðum, þá fæ ég niður eina síðu. Og það er þegar þetta efni kemur öflugur, held ég. Þessi 'hvenær þessar hugmyndir fá sannfærandi þegar þú getur haft fjögurra milljarða síðu vandamál og í 32 skrefum getur þú fundið manneskju sem þú ert að leita að. Og svo, það er það sem er átt við þegar við segjum að þú munt læra hvernig á að hugsa meira og vandlega, meira algorithmically, fleiri greindur um að leysa vandamál. Og aftur er gríðarstór þegar þú getur raunverulega gert, og aftur, að þetta lið á Googles heimsins á Facebooks sem hafa the lúxus af því að hafa mikla datasets. Þú hefur got til að nálgast þessi vandamál á þann hátt að öðru leyti er það einfaldlega ekki að fara að vinna. Jæja, hvað er það sem gerði nemandi í raun muna? Ég, eins og við að gera hluti sem eru svolítið kjánalegt stundum að svoleiðis taka á brún af því hvað er annars mikið nýtt efni. Og svo, reyndar er hann, þessi fyrrum nemandi sendi mér þennan tengil sem ég fór á undan, bara til að ánægja og þá sást það á endanum dregið upp á utube hér. Svo hélt ég myndi deila því a non-tölva vísindamaður þýðir þegar hann rífur upp símaskrá í tvennt. [Laughter] [Þögn] [Inaudible] >> Þú veist yfir 200 síður, ágætur hreinsa línu, rífa lögmætur. [Laughter] >> David: svo ég geri ráð fyrir, hvernig hann vinnur líka. Svo, það sem ég fékk út úr þessu námskeiði öllum þeim árum er já, Shuttleboy, og þá já gráðu í tölvunarfræði, og þá já með doktorspróf í tölvunarfræði. Og það er ekki það sem við erum að reyna að snúa flesta nemendur á þessu námskeiði í. Flestir af þér í þessu námskeiði er ekki að fara að fara á helstu í tölvunarfræði. Sumir af þú might minniháttar, en sumir af ykkur þetta verður flugstöðinni námskeiði. Og það er fullkomlega í lagi vegna þess að þetta námskeið er í raun byggð upp á þann hátt sem jafnvel ef þú greiðir aðeins gjöld fyrir nokkrum mánuðum og beita þér í raun og taka í raun eins mikið út úr þessu námskeiði sem þú getur, færðu í Reyndar, vera vel í stakk búnar til að fara aftur í heim þinn í hagfræði, líffræði, sálfræði, beitt stærðfræði, og í raun að nýta sér það sem er á endanum eins og áhugavert námskeið sem við vonumst til að conceptually eins og það er í grundvallaratriðum hagnýtur. Og það er líka eitthvað sem er kannski svolítið sjaldgæft að finna. Ég hélt ég myndi deila nokkrum athugasemdum sem nemendur frá síðasta haust settu í þessari síðustu árum hvíta fylgja þegar hún var spurð um hvað viltu segja framtíð nemenda. Jæja, ef þú ert ekki þegar horft á þessar athugasemdir, einn nemandi sagði þetta auðvitað verður að taka með sanngjörnum tíma upp. en ef þú setur vinnu þinni í heild nýr heimur, allt, ef þú setur vinna, ef þú setur vinna í, allt í lagi, þannig að þetta er málfræði hans ekki mín, þannig að ef þú setur, setja í starfi, a heild Nýi heimurinn opnast þér. Ótrúlegt hversu mikið ég lærði aðeins í 12 vikur. Annar nemandi skrifaði taka betur eða þú ert að fara að sjá eftir því. Annar skrifaði lítið meira hispurslaust, það verður spark rass og yfirgefa þig tilfinning mikill. Og svo að lokum, þetta er kannski eitthvað sem ég get aðeins í ritun, en annað af botni hér. [Laughter] Svo er ég ekki viss um að ef þú átt marga vini sem tók þennan áfanga en við hvers konar did a einhver fjöldi af skemmdum á nemendur á síðasta ári. Við kynnt í byrjun, fjölda fyrirlestra, nokkrar Skyndipróf, núna vandamál setur þetta hugmyndin um lolcats. Þú getur ekki sjá hvað ég get séð hér en í augnablik þú vilja sjá ungan mann að nafni hamingjusamur köttur sem er leiðtogi hins svokallaða lolcat. Þetta er einn af þeim heimskulegt áfram internetið sem mér finnst hreinskilnislega the dichotomy milli þessara tveggja frúr hér og það sem við höfum nú á skjánum er ef til vill. [Laughter] Eitt af því sem mest óviðeigandi notar þessa leikhús að dagsetningu. Og, hví ekki við að gera smá meira alvöru svolítið meira persónulegur this hugdetta af raunverulega leysa vandamál á skilvirkari hátt. Einföld vandamál á fyrsta degi hvers skóla er að setjast niður eða standa upp og byrjar að telja nemendur rétt rúlla kalla nokkurs konar. Jæja, mest barnaleg en engu að síður, mjög rétta nálgun sem kennari gæti tekið er einn, tveir, þrír, fjórir, fimm, sex, sjö, og við myndum vera hér alveg í nokkurn tíma. Svo, hvaða 'a lélegur framför á þessu jafnvel að þú gætir hafa gert sem krakki? Hvernig telja að fólk festa? Og ekki byrja að lesa af eigin leiðbeiningar minn? Hvað vilt þú hefur gert sem krakki? Byrja að telja twos, hægri, eins og svo er ég nokkuð góður á tveimur, fjórum, sex, átta, tíu, 12. Svo, það er eitthvað áhugavert til hægri. Svo, hve miklu framfarir er þessi there? Svo er það augljóslega þáttur af tveimur. Það tekur mig hálft eins miklum tíma. En, vitið þið hvað, eins og við munum finna allt á þessari önn, stór samningur, eins og hraðakstur upp hlaupandi þinn tíma bara þáttur af tveimur er ekki allt sem áhugavert vegna þess að byggður á hliðstæðum er hér í tölvunni heimi er að ég er með CPU Ég er tölva, vel Heck, ef ég að bíða aðeins 12 mánuðum, 18 mánuðum, the tölva mun ég bara geta í eðli sínu, með fjölda af gigahertz ég hef í mér til að vera fær um að telja fólki í þessum herbergi hraðar. Svo þessar tegundir hafa þessar tegundir af línulega speedups eins og þáttur af tveimur þáttur af þremur, jafnvel þáttur af tíu, sem er ekki sama? Einmitt, við getum kastað vélbúnaði við vandann. Við getum beðið eftir hlutum. Við getum þróað festa vélum. En, intellectually, já þessi var góður af snjall en það gerði í raun ekki í grundvallaratriðum breyta vandamál. Ég er enn að fara frá vinstri til hægri, framan til baka. Það er í raun sama reiknirit. En að bjóða mér að við getum gert betur. Við getum gert betri en þetta og gera grundvallaratriðum a festa framkvæmdina. En til þess að sýna fram á þetta, verðum við að húmor okkur bara í smá stund. Og það er á þessum tímapunkti þar sem það verður mér að tala minna og þú talar meira. En ég þarf að framkvæma skref einn saman, sem er ef þú myndir húmor okkur, vinsamlegast standa upp. Leiðbeiningunum hér á borð, veit að þú ert, allt í lagi, a par af sem þú þarft að setjast niður. Þau ykkar í bakið, þar sem við komum, allt í lagi. Þakka þér fyrir. Svo, the program er hér fyrir þig. Þú ert nú tölvur framkvæmd þessarar áætlunar. Það er nokkuð sjálf útskýringar á þessum tímapunkti. Já, ættir þú að vera númer eitt. Fá það? Réttur eru margir af þú líklega að hugsa þetta þegar engu að síður, fyrst freshman ári. Svo held að sjálfur ert þú númer eitt. Svo Skref þrjú hér, para saman standa einhvern, bæta við tvær tölur saman og samþykkja þessi fjárhæð sem nýtt númer og við munum gera andleg heilbrigði stöðva. [Hávaði frá] mannfjöldi Veistu hve margir sem við höfum? >> [Inaudible] >> Nei [inaudible]. >> Við þurfum að hafa svör takkann. [Þögn] >> Já. [Hávaði frá] mannfjöldi >> David: Í beina algrím skal vinda ofan. [Hávaði frá] mannfjöldi Kannski við ættum að hafa farið með aðferðum mínum eftir allt. >> 43. >> 163. >> David: Ooh tölur í andlit af 300 auk fólks. [Laughter] What's endanlega stemma okkar að fara að vera? >> 180. [Laughter] >> 1.200. >> 386. >> David: 386, og þú ert the síðastur einn standandi? Er það öllum? Veistu svarið? >> Hvað? >> David: Veistu hvað svarið er? Við vildum ekki koma með svar lykill með okkur svo 386 er í raun nákvæmlega rétta svarið í fyrsta skipti. [Uppörvandi] [Lófaklapp] Það er allt í lagi. [Lófaklapp] Mjög, mjög fallega gert. Svo, hver var takeaway því að ákveðið fannst svolítið hægar en mjög einföld en samt mjög rétt nálgun mín bara að fara onesies og twosies og réttlátur getting það gert með frá vinstri til hægri. En, hvað gerði við virkilega bara gera þarna? Jæja, ef það væri illa við skulum segja 400 en þú stendur á einum stað, og þá hluta af þér, mjög fljótt, en ég gæti sagt, vildi að setjast niður. Svo, helmingur þú settist niður, þá fórum við 400-200 þá 100 þá til 50 síðan 25. Svo aftur, þá er það sama gjá og sigra hugmynd sem við höfðum með í símaskránni. Á ný, með öllum endurtekning við helminga the stærð af the vandamál, við helminga það, helminga við það. Svo, í orði, reiknirit þín ætti hef verið miklu hraðar en línulega nálgun mína þar sem aðkoma mín væri búin að taka segja 400 stíga eða kannski ef ég er örlítið snjall 200 skrefum. En mundu þínir höfum tekið mun færri, rétt 400-200, 100, 50, 25, 13, sex, svo færri en tíu skref í lok móti mér 200 eða 400. Og það er sýkill af mjög áhugavert hugmynd. Og já, stærðfræðilega hvað þú gerðir var bara eitthvað þessi 'a lítill Logarythmiskur í eðli sínu með því að byggja þig inn tvær, skipt við í tveimur og tveimur aftur. Og við munum endurskoðun þessa síðar í þessari önn. En þar liggur enn mjög greindur framkvæmd. Og við erum bara klóra á yfirborði mjög snjall mjög greindur duglegur nálgun á vandamálum sem við gætum endanlega leyst. Svo, hver eru það fólk sem þú töluðum aðeins við ef snöggt? Sameiginlegt áhyggjuefni í námskeiði eins og þetta er að allir vinstra megin við þig og alla til að rétta af þú verður greinilega vita meira en þú. Jæja, það er alls ekki raunin. Og í raun undanfarin ár, þetta hefur að sjálfsögðu gert samstillt átak til að ná til þeirra minna þægilegur, svo að segja. Og með því að meina okkur ekki fólk sem hefur aldrei snert tölvu áður vegna þess að það er mjög erfitt að finna hér um þessa dagana, en fólkinu sem nota tölvupóst, nota Facebook, kannski jafnvel núna en eru ekki endilega alveg viss um hvað ég á að gera þegar eitthvað fer úrskeiðis, eða þegar þeir eru spurðir um hvað tæknilegu, þú veist, fara höndum upp eða þeir konar ýta vélbúnaður til a vinur hver er ef til vill fleiri versed í það en þeir. Jæja, þessir ert sumir tölfræði frá önn á síðasta ári. Svo þegar spurði, þegar við beðin 400 okkar svo nemendur á síðasta ári, þú veist, hvað er færnistig þitt þægindi koma inn í þennan flokk, og 34% skrifuðu sig niður eins og hjá þeim sem minna þægilegt. Svo ef þú ert kominn inn í þetta herbergi og eru enn að hugsa nú, að, þú veist hvað þetta orð minna þægilegt lýsir mér, ég veit að þú ert í mjög góðum félagsskap. En, við gerum of að ef þú ætlar að koma á þessu námskeiði með bakgrunn í tölvunarfræði og þú varst virkilega að geek í miðju skólans og menntaskóla, sem var að skrifa kóðann og kennslu sjálfir tungumál og vel það er fínn líka því að það er ákveðið a nontrivial stór áhorfenda með því að bakgrunnur eins vel, um 13%, síðasta kjörtímabili. Og þá, there's allir aðrir, svoleiðis einhver sem ekki held að þeir séu minna þægilegt, þeir ákveðið held ekki þeir eru öruggari en þeir eru bara á námskeið til að fá eitthvað út úr því. Svo, við gerum þetta auðvitað ekki draga alveg litróf nemenda. Og til að setja þetta á fleiri áþreifanlegum hugtök, 71% nemenda á síðasta ári, hafði engin námskeið á bak við þær. Svo, ef þú ætlar að slá þessu námskeiði að hugsa ó allir sem tekur CS50 var tölvunarfræði whiz í menntaskóla, það er ekki raunin. Flestir eru væntanlega bara áhuga á því. Og fáir, já, endilega hafa tekið nokkur námskeið, sumir, eða að minnsta kosti einn einstaklingur á síðasta ári hafði tekið fimm námskeið áður. Svo höfum við ákveðið nokkur outliers en aftur kjöt af bugða er á þeim lægra gildi að öllu leyti. Og annað áhugavert tala við deildum á undanförnum tveimur árum er kynjahlutfall. Svo, sögu, að minnsta kosti í tölvunarfræði, er a hluti af a karlmaður kvenmaður Skekkja. Ég nokkrum árum síðan var mikið meira merkt en á síðasta ári. Svo erum við næstum nú á% 40 stig. Og ef ég get kastað niður svipugöng bara fyrir sakir þess að hafa þriðja skífurit næsta ári, sem er jafnvel meira jafnræði. Ég vildi benda á að það er engin ástæða af námskeiðum sjónarhorni að karlar og konur ættu ekki að vera hefja í þessari tegund af námskeiðinu. Í tiltölulega jöfnum númerum og átta sig á að 38 prósent, 48 prósent, að við erum í raun alveg ánægð að sjá að við erum næstum á það, að minnsta kosti, tölfræðilega jafnvel gildi 50%. Svo ef þú ert í raun kvenmaður, ekki að tryggja hvíldar of að þetta er ekki í raun karlmaður ríkjandi tegund. Jæja, þetta er svo gerist að 20 ára afmæli CS50's. Ég vel þakka þér. [Uppörvandi] [Lófaklapp] Það er mjög fallegt af þér vegna þess að við komu kaka fyrir þig í raun og veru. Og svo, þegar þú hættir hér síðar í dag, munt þú í raun að fá tækifæri til að kynnast mörgum af námskeiðum kennslu félagar sem verður langvarandi í Útgengt inn. Og já það verður gott konar incentivized leiðin til þess að fullnægja kennslu félagar. En við gerum taka ferð upp að litlu bakarí og aftur í samræmi við það námskeið er fjörugur náttúran en engu að síður er von á nontrivial magn af vinna á meðan við erum að hafa gaman. En, við höfum einn af þessum kökum fyrir þig. [Laughter] Þannig að ef þú ert að hlæja það er reyndar gott því jafnvel ef þú ert meðal einn af þeim sem minna þægilegt að minnsta kosti að þú ert meðvituð um það. Þau ykkar í 14 prósent gætu vilja this bragðefni. [Laughter] Og svo, ef þú veist ekki hvað í fjandanum er í gangi núna, höfum við einnig þetta fyrir afganginn af þér. [Uppörvandi] [] Lófaklapp Svo eru þeir sem hakkað upp í sundur fyrir utan og við höfum talað. Svo aftur, við skulum taka það upp hak og að minnsta kosti kynna grunnupplýsingar leigjandi að við munum þá taka sem sjálfsögðum hlut í eftir af þessari önn. Svo, við öll sennilega vitum að tölvur endanum sjóða niður einhvern veginn að núllum og sjálfur, þetta kallast bits. Hvað þýðir það? Vel hægt er að hugsa um það hreinskilnislega sem ljósapera, a hluti er a ljósapera sem er annaðhvort eða það er slökkt. Það er kveikt, það er annaðhvort eða það er slökkt. Nú, ég held tölvunarfræðinga yfirleitt burt eins og the tala núll eftir geðþótta og, og hugmyndin um á eins og einn. Þannig að ef þú kastar ljós að kveikja á því er eitt að slökkva á henni sem er núll. Eða equivalently, kveikja á ljósi á það er virði satt að slökkva á henni sem er verðmæti falskur. Svo er þetta aðeins samheiti. Í lok dagsins, já, allur útreikningur, allt efni sem fer um undir hetta í tölvunni er að lokum sjóða niður núll og sjálfur. Og þegar þú hættir að hugsa um það, er það nokkuð Dam merkilegt hvað heimurinn hefur gert með þessum grunn kubbar þ.mt sum þeirra sem þú ætlar að halda í hönd þína. Ja, hvers vegna eru núll og þær að gagni? Guð minn, jafnvel í hinum raunverulega heimi sem við höfum að minnsta kosti tíu tölustafir, núll í gegnum níu. Hvers vegna svo takmarkað? Jæja hvað varðar vélbúnaðinn það er mjög auðvelt. Það er miklu auðveldara að tákna tvö ríki, ekki satt. Ef tölvur eru tengd inn í vegginn, venjulega hefur þú þetta auðvelt uppspretta af tvöfaldur náttúrunni. Það er annaðhvort að kveikja eða slökkva. Rafmagn er flýtur eða það er ekki. Svo, það er góður af einum af upphaflega ástæða þess að heimurinn fór með bara núll og sjálfur í tölvunni. En er hægt að nota þá eins og að byggja blokkir. Svo er þetta í raun svolítið lítill á skjánum hér en við getum treyst í tvöfaldur eða við getum táknað eitthvað sem við viljum í tvöfaldur eins og við getum, segja, aukastaf, alveg eins og við getum, jafnvel í raun með stafrófsröð bréfum. Og svo er hér er fljótur kerfi. Á aðeins nokkrar mínútur þegar þú munt nú vita hvernig á að telja, hvernig á að skrifa, hvernig á að tala tvöfaldur mikið eins og eigin fartölvu. Jæja, þú, í heimi tvöfaldur, eins konar rétt eins og einkunn dálka skóla eða gildum. Svo, í grunnskóla lærum við að þetta sé sjálfur dálki þetta er spenntur dálki hundruðum dálkinum og svo framvegis. Með öðrum orðum, hvers vegna er fjöldi sem við vitum sem 123 númer 123? Jæja, kennari minn kenndi mér að þetta sé sjálfur dálki þetta var spenntur þetta var hundruðum. Jæja hvað gerði það þýtt? Jæja, til að finna út hvaða heildarvirði er um hvað er að öðru leyti band af tölustöfum, bara kjötkássa skytta á borð. Jæja, höfum við eitt 100, svo sem 1 sinnum 100 og þá plús það tvo 10 'svo það er 2 sinnum 10 plús þrír sjálfur, þannig að þessi 3 sinnum 1, allt í lagi, þannig að ég virðist hafa fengið til baka þar sem ég hóf. En þetta mjög einfalt ferli bara að margfalda tölur um verðmæti dálkur er einmitt það sem tvöfaldur er allur óður í. En í tvöfaldur að nota veldi af tveimur ekki valdi tíu. Svo, hér er röð af átta ljósaperur. Computer vísindamenn eins og til nota gildi eins og tveir og átta og 16 og 24 og 32 vegna þess að þeir eru allir almennt þægilegt gildi til notkunar. Svo, þegar við tölum um átta gildi í röð þetta er eins og kallað bæti. Og þessa dagana við tölum sjaldan bara bæti, tala við megabæti gígabæta og terabytes þessa dagana. En það er allt á endanum sama. Hér er átta bita aka eitt bæti bara einfaldur hrognamál. Svo eru allar þessar ljósaperur burt. Semsagt, stærðfræði er reyndar mjög auðvelt. Þannig að það á rétt á því, þó það lítið að sjá, er dálkurinn sá er, þeim twos, the fours, the eights, the 16s, 32s, 64s, 128s. Einmitt, kannski er það erfitt að leggja á minnið í fyrstu en það er bara margfaldað með tveimur frá hægri til vinstri. Svo getur þú alltaf endurskapa þessa. Jæja, þá eru þeir allir burt svo það er 0 sinnum staðgenglinum, 0 sinnum staðgenglinum. Svo er þetta númer 0 fulltrúa í tvöfaldur. Með öðrum orðum, hvernig skrifa þér númerið sem við vitum sem 0 í tvöfaldur? Jæja, einn, tveir, þrír, fjórir, fimm, sex, sjö, átta, og tæknilega rétt eins og í aukastöfum, öll þessi leiðandi núll, gera þeir bæta ekki neitt við formúlu sem þeir bara þarna því við ákváðum geðþótta við viljum átta af þessum hlutum í röð, ekki satt. Ef þær eru líkamlega hluti, höfum við átta svo þeir 'got til vera öll burt. Svo gætum við höfum bara fengið á brott með eitt núll. Jæja hvernig þú ert í forsvari númer eitt? Jæja, dragast þú ert að fara að kasta einn af the rofi. Þú ert að fara að kveikja á peru á. Svo, það er númer eitt af því sem við setja nú einn, a ljósapera sem er á, í stöðu manns. Hvernig ætlum við að koma fram fyrir hönd tveggja? Jæja, við erum í raun að fara að kasta tveggja skiptir nú að minnsta kosti á móti því ástandi verðum við að kveikja á súlunni tvö er að slökkva á sjálfur dálki og nú höfum við í gildi eitt í twos dálki. Svo, það er heildarverðmæti tvö. Nú, a fljótur andlegu hreyfingu, hvað er að fara að gerast í næsta röð? Hvernig nútíminn ég tala þrjú? Jæja, þarf ég einn frá twos dálki, einn frá threes dálki og ah ha. Svo nú er ég búin að incremented sem einn. Og nú, þessa sömu undirstöðu endurtekur mynstur. Hver er númer fjögur? Jæja við skulum sjá, þarf ég bara eitt í fours dálkinum og þá núll í twos og sjálfur. Svo, það halda áfram þannig. Og það er bara þessi röð af skrefum. Og hugmyndin um tvöfaldur er í raun ekki allt sem flókinn. Efst þar sem við höfum átta núllum. Hér að neðan að við höfum sjö núll og einn. Hér að neðan að við höfum sex núllum, sem er einn, og núll og það er tvöfaldur. 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. [Laughter] >> 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. [Lófaklapp] ==== Transcribed by Automatic Sync Technologies ====