>> David: Sveiki, mans vārds ir David Malan un tas ir CS50. Un šī nav jūsu tipiskā vidusskolā datorzinību kursu. Šis kurss ir mazliet kaut kas īpašs. Un tas nav tāpēc, ka es esmu mācību to. tas tāpēc, ka šis ir viens, mēs vēlētos domāt, tie reti kursi, kas faktiski izspiež jūsu smadzenes tik daudz un jūsu grafiks tik daudz, ka līdz pusgadam's beigām jūs patiesi jūtaties gudrākas. Tātad, tas bija veids, kā es jutos, kad es sevi bija šā kursa atpakaļ 1996. Es biju valdība lielu brīdī šeit dzīvo Mather House. Un, I. [Uzmundrinošas] Kā ir citiem, pieci citi tur. Tātad, es biju valdības galvenais laikā. Un es biju valdības galvenais, jo man vienmēr patika vēsture. Man patika konstitucionālās tiesības vidusskolā. Un tā, es off uz šo ceļu freshmen gadu darīt to, ko man darīt vislabāk, darīt to, ko es zināju, ka man patika. Un man vienmēr ir mazliet geek, es vienmēr babbled ar datoriem. Bet, es pats, varbūt ironiski retrospektīvi, es vienmēr apskatīts puiši, kuri lietoja datorzinātnes manā vidusskolā, mani draugi kā reālu geeks. Un tomēr, visbeidzot, sophomore gadu, es šo mazo kursu sauc CS50, kas faktiski bija nobijies mani prom manu pirmkursnieks gadu. Un es biju lietotāju asistents laikā. Tātad, es noteikti bija jau kvalificēts, vismaz, kas ir starp tiem, tie geeks kas es fun in vidusskolā. Bet, man bija bail. Ir, bija šī brīdī reputāciju un varbūt vēl daļa, tas bija, tas bija atbaidošs kurss. Tā bija daudz darba. Tas bija grūti, un tomēr, tas ir viens no šīm lietām, ja mans Dievs, mizas bija daudz sliktāka nekā tā kodums. Es atklāju sevi sophomore gadu, pirmo reizi, faktiski atrast mājas jautri. Un es nesaku šo tikai piķis šo kursu jums. tas bija patiess realizācija par mani. Tagad, es domāju, ir viens punkts, I did šķērsot līniju, kas patiesi geekdum kur es faktiski izmantoti, lai ceram piektdienas vakarā, jo es varētu čokurošanās up priekšā mana mazā MacBook un CS50 problēmu kopas darbu. Tātad, šajā brīdī, es domāju, ka man bija skaidri pāri līnijai. Un mūsu mērķis šajā laikā nav savukārt jums visiem uz šīs personas, bet tikai teikt, ka tur ir mazliet kaut kas īpašs par šo, protams, mazliet kaut kas īpašs par datorzinību vispār, jo īpaši šajās dienās. Un, jo vairāk aklimatizē mēs esam visi got vērā tehnoloģiju, vairāk rotaļlietas, mēs pārvadāt ap mūsu kabatās, kas paši datori. Es domāju, mans IPHONE ir faktiski lielāks veic dators, nekā mans klēpjdators bija koledžā. To var izdarīt daudz veikls lietām ar šīm lietām. Un tagad, lielākā daļa no mums šajā telpā, iespējams, tikai izmantot citu cilvēku programmatūra, citu cilvēku līdzekļus, citu cilvēku problēmu risinājumus, jo mēs ejam uz iTunes, mēs lejupielādēt dažus app no app uzglabāt un Walla mēs varam darīt kaut ko patiešām glīts. Bet, līdz šī semestra, jūs varat būt personas, kas veic šo problēmu risināšanā. Jūs varat būt persona risināt dažas problēmas, celtniecība ka app, ka gabals programmatūras, ka līdzeklis, kas, nu, viens tikko amuses man, amuses jums. Piemēram, kontrolē, teiksim, jūsu iTunes bibliotēku ar jūsu dzīvokļi ir skaidri app, kas jau pastāv vai arī jūs varat atrast turp un atpakaļ grafiki daudz vieglāk, piemēram,. Tātad faktiski viena no pirmajām lietām, es darīju, ņemot CS50 atkal, tas bija iespējams, šajā brīdī piektdienas vakaros un sestdienu vakaros, bija šo iespēju brīdī, kad Hārvardas skrēja piepilsētas autobusi. , Un šajā dienā, par tām vēl ir iespiests grafikus. Bet, tur bija tiešām nekādā veidā internetā atrast, kad nākamo atspole bija. Tagad, man nav aprūpi, jo kaut arī es dzīvoju Mather es nebiju starp tiem, kas parasti bija atspole. Bet, man bija daudz draugu Pfoho piemēram. Un viens no tiem man jautāja, es domāju, ka vienā punktā. [Uzmundrinošas] Labi Pfoho ir labāk nekā Mather acīmredzot. Tātad, viens no maniem draugiem veida got mani domāšana varbūt es varētu uzrakstīt nelielu programmu, lai veida palīdzību maniem draugiem pārbauda atspole grafikus. Un tādējādi ir dzimis neveikli nosaukta atspole zēns, šis gabals leksikons, kas ir saglabājies ap dažiem gadu skaitu vismaz starp dažiem upperclassmen. Tajā laikā tas bija tas maz komandrindas programma līdzīga garu Dos. Tas bija darbojas UNIX vidē. Tātad, tas nav ļoti seksīgi vispār. Jums tikai drukātas pāris komandas un tas tev teicu, kad vilcieniem bija. Nu, šīs dienas tas ir nedaudz sarežģītākus. Un tas tiešām bija precīzi projektu, ka studenti šajā laikā galu galā pieņemšanas nosacījumiem beigām veidiem. Tātad, šī ir versija četri, aptuveni 15 gadus vēlāk, no Shuttleboy. Šķiet Google Maps tiek mazliet lēni tur. Bet, tiem no jums, kas ir izkļūt no šeit pēc klases un iet, teiksim, no Memorial Hall un nepieciešamību iet līdz, teiksim, Quad. Nu, jūs varat vai nu atstāt divās minūtēs, ja pēc, tas tiešām nedarbojas, jums vienkārši vēl, vai jums ir tik daudz citas iespējas, kā jūs vēlētos. Un drīzumā, mēs varam piķis šo no CS50, tā būs tāda pati spēja ar SMS palīdzību. Jūs varat tekstu Shuttleboy pa tālruni. Zvanāt Shuttleboy. CS50 tālruņa numuru šogad, labi, pārsteidzoši tas bija pieejams, 617-BUG-CS50. Tātad, kas būs debija drīz. Tā nav zvanu tā tikai vēl tāpēc, ka es esmu gotten reprimanded par, tagad tas tiek novirzīts, lai mūsu sistēma galvas mācību puisis's mobilajā telefonā. Tātad, jūs vienkārši iegūt viņu, ja Jums ir jautājumi par sistemātisku turp un atpakaļ grafika tagad. Bet, ka drīz tiks īstenota. Tātad, cita starpā, patiesībā, ka mēs paši pavadīts šajā vasarā par tiešām, gatavojoties šai semestrī bija visai ķekars citu problēmu, ka mēs vēlējāmies, lai atrisinātu. Piemēram, tur ir visai daudz sīkumi, kas iet uz šajā universitātes pilsētiņā noteiktā dienā. Un faktiski, citiem vārdiem sakot, tur ir visai daudz stuff notiek šajā universitātes pilsētiņā, ka es noteikti nekad izmantot. Un, kaut arī es esmu tagad overwhelmed ar cik daudzām lietām, kas notiek, uz universitātes pilsētiņā, es vēl joprojām šķiet, nekad, lai atrastu laiku. Bet, Walla, pat tur, CS50 ir lekcija. Tas ir, ja jums ir, tā tas bija, tas bija programma, mēs wrote apkopot visu uz Campus notikumiem. Un tas ir kaut kas, ka citi studenti šajā pašā laikā ir risināti paši. Un mēs esam sadarbojoties ar citām organizācijām, kas universitātes pilsētiņā, lai patiesi padara šo notikt. Taču norāda uz CS50 šis termins ir tas, ka visas šīs maz programmu, mēs esam strādājuši par to, vai šo vienu, vai vienu summējot visu Harvard ziņas vienuviet, visi Google News, visas šīs lietas notiek, ir kāds sauc par API's, lietojumprogrammu programmēšanas interfeisus. Un tas ir tikai iedomāts izteikties spējas izīrēšanas citiem cilvēkiem, cilvēki šajā telpā, ir faktiski dara kaut ko ar tiem pašiem datiem. Tātad, ar noteikumu beigās, ja jūs nolemjat, lai īstenotu galīgo projektu, kas saistīti ar ziņu vai notikumu, vai kartes, arī mēs, vismaz, protams, dos, ka visi vēl viegli šogad, nodrošinot jūs ar saskarni, sava veida funkcija, tā sakot, programmatūru, ko varat izmantot savā projektos iet augstāk un tālāk, kur studentiem, iespējams, ir aizgājusi laikā pagātnē, jo šī sistēma nav darbojusies tiem. Un atkal tas viss sākās, man vismaz, apmēram 15 gadus atpakaļ īstenošanas Shuttleboy. Tad es pa e-pastu mans draugs Ken, kas Pfoho. Es teicu, hey ko jūs domājat? Tas ir lietderīgi? Viņš pastu it out uz Pfoho atvērtu sarakstu un Walla, visus šos gadus vēlāk es esmu acīmredzot joprojām slaukšanas šo projektu. Un veikls lieta par to, kā tas ir, ja pārāk patīk šis kurss inženierzinātnes un datorzinātnes, manuprāt, ir nedaudz īpašs, ir tas, ka, ja jums jūsu mājas darbus un, ja jūs savus projektus šajā laikā, jūs zinu, daudzi no tiem, jā, jūs atlikti, un nav īsti lietot atkārtoti. Bet, daži no tā, jums būs. Un tur tas tiešām spēcīgs lieta, vismaz man, tas tiešām aizraujoša lieta, kad jūs veicat kaut ko un citiem cilvēkiem faktiski aprūpi, citiem cilvēkiem, ne tikai smaidu un pat savu uz muguras, un tad sava veida iet par savu dzīvi. Viņi faktiski izmantot to, ko jūs, kas savā dzīvē, pat ja tas ir kaut kā muļķīgi vai vienkārši, kā tikai atrast, kad viņi var saņemt no šeit, lai nozvejas nākamo atspole uz Quad. Tātad, ar noteikumu beigās, tas ir viens no šī kursa mērķiem, lai dotu jums puiši, lai tikai noteiktu kāda problēma, vai tas ir par Campus un, cerams, arī ārpus universitātes pilsētiņā, un faktiski izmantot savas prasmes, savas domas un atrisināt šo problēmu dažos daļa, tehnoloģiski. Tātad, tas ir arī kursu, kā mēs sakām mācību un kursi oficiālais apraksts, kas māca jums, kā domāt, un tā māca jums, kā risināt problēmas daudz efektīvāk. Nu, ko tas nozīmē? Nu, ja tev 600 megahercu kabatā vai trīs gigahercu zem jūsu rakstāmgalda mājās, jūs varat atrisināt daudz problēmu efektīvi, vienkārši nobīdes brutālu spēku. Bet, tur ir problēmas šajā pasaulē daudz, vai tas ir meklēšanā, piemēram, Facebook tīkla vai caur Google interneta, ka tas nav svarīgi, cik ātri jūsu īpaši dators ir, nav kā ellē jūs gatavojas meklēt miljardiem tīmekļa lapu ātri, ja vien jūs tiešām pieeja šo problēmu saprātīgi. Jūs ne tikai meklēt, piemēram, milzīgs visu interneta lapas uz zemes, no augšas uz leju sarakstā meklē kaut ko, kas saistīti ar jebkāda meklēšanas terminu jūs meklējat, cerams, Google, un, iespējams, Google un Facebook, un jebkuru no šīm lielajām organizācijām ir daudz gudru cilvēku domā par to, kā viņi var atrast datus daudz ātrāk, kā viņi var apstrādāt informāciju efektīvāk, un, kā viņi var vienkārši parasti atgriezties rezultātus ātrāk, lai jūs varētu darīt vēl vairāk interesantas lietas ar šīm ierīcēm. Un tā, ko mēs domājam, lai gan, pa cik, mācību cilvēki, kā domāt rūpīgāk, vairāk algoritmiski. Nu, tas maz vizuālo vienmēr šķiet, iet pa labi. Un, šķiet, ir neaizmirstams. Un es biju pat lūdza tikai vakar ar bijušā studenta, ak jūs plānojat darīt, tālruņu grāmata lieta vēlreiz. Un es diezgan daudz uz vietas, nolēma alright pārliecināts, mēs būvēt tālruņu lieta. Un viņš man jautāja, kad Tore to pusi labi, man bija tāpat arī yeah tehniski mēs Tore to pusi, bet ne veidā, datorzinātņu, kā es varētu asaru šī lieta pusē. Un tā, šeit ir problēma, ka mēs iepazīstināja ar jau kādu laiku. Tātad, šeit ir tālruņu grāmata. Tas ir ieguvuši vismaz tūkstoš vai tā lapas. Un vienkāršu mērķi pie rokas ļoti reāla pasaule, lai atrastu, piemēram, persona šeit. Tātad, Mike Smith, uzvārds sākas ar S. Tātad, es esmu tipisks cilvēku, es uzņemt šo tālruni grāmatu. Un ikviens, kas tur, ko jūs, tipisks persona, jādara, lai sāktu atrast Mike Smith, acīmredzot nezinādams iepriekš kādā lapā viņš faktiski par. Labi, lai jūs iet apmēram pa vidu, pa labi. Un šajā brīdī ir stāsts, es esmu iespējams, N's vai M's, jūs zināt, apmēram līdz pusei, izmantojot tālruņu grāmatu. Izrādās, pēdējo reizi I did šo piemēru es kaut kā atrast sevi eskorts sadaļā. Tātad, tas tiešām nav vienlīdz līdzsvarotu starp caur M un N caur Z. Bet šodien mums ir, faktiski, jo M's, alright jā, tagad es esmu pie M's. Bet kāda ir mana takeaway tagad tāpat kā normālu cilvēku nost no ielas? Kur es varu aiziet nākamās Mike Smith. [Nedzirdamas] Un tā, vienkārši iespējams šo pusi, pa labi, jo S nāk pēc tam, kad M. Un tā, šeit slēpjas vizuālo drāma. Tas nav īsti pārplēst to pusi, pa labi. I veida cheated nosaka centra. Bet mēs tagad zinām, ka Mike ir vismaz nav šajā pusē. Mēs varam burtiski mest puse problēmas prom. Un es esmu pa kreisi ar problēmu, ka ir būtiski joprojām tas pats, atrast Mike Smith ļoti liels grāmatu. Bet, problēma tagad pusi tik liels. Ja tas būtu tūkstošiem lappušu pirms, tagad tas ir got 500. Jūs zināt, ko es varētu darīt to pašu vēlreiz. Es varu veida rekursīvi vai atkārtoti darīt to pašu. Tagad es neesmu gluži pie S. es esmu pie T. Un tā, ak es devos mazliet pārāk tālu. Bet, es zinu tagad, ka Mike nav labi, tur ir būs dažas klases someday, kur es vienkārši nevar saplēst aizsprostam lieta, es bet. Bet tagad, es zinu, viņš nav labi. Tātad, tagad problēma ir quartered. Tātad, es esmu gājusi no tūkstoš līdz 500-250 lappuses. Un atkal, ja jūs turpināt loģika turpināt matemātikas, es esmu kapāšanas šo problēmu pusi, uz pusi, uz pusi līdz beidzot es esmu vai nu gatavojas atrast jebkādu Smita vispār, diez vai es esmu dodas uz atrast vienu es esmu meklē. Bet, ka tad, Rodas jautājums, tas nekādu labāku nekā vienkārša pieeja vienkārši sakot, jūs zināt,, nē, B, nē, sākot no kreisās uz labo pusi iet lineāri cauri grāmatu? Nu, instinktīvi jā. Tas būs daudz ātrāk. Bet, cik daudz mazāk? Nu, ja man ir tūkstoš lapas tàlruñu katalogà vai let's say 1024 tiem no jums, kam patīk pilnvaras uz diviem, cik daudz laika varētu man sadalīt šo problēmu pusē pirms atrast Mr Smith? >> Desmit. >> David: Tātad, desmit, labi. Ja jums ir 1024 lappuses, un jūs sadalīt to uz pusēm, uz pusēm, pusi, uz pusi, man, ka desmit reizes, kas nozīmē, es dodos no 1000 lapām, lai persona Es meklēju tikai desmit lapas griežas. Un tas ir veida veikls, bet, jūs zināt, ja jūs domājat par to jūs esat darot visu savu dzīvi. Tas nav, ka dramatiskas. Bet tagad, ka tālruņu grāmata ir ne tikai Bostonu, tā ir visai ASV vai visu pasauli, un šī lieta ir miljardiem lappušu, tāpēc iedomāties tālruņu ar četrus miljardus lappusēm. Cik lapa kļūst man nāksies darīt maksimāli atrast Mike Smith četrus miljardus lapu grāmatas? >> Žurnāla bāzes divas. >> David: Tātad yeah, ja jūs veida math tipa tas log bāzi divi. Bet, ja jūs domājat 4-2000000000 to viena miljarda, lai pusmiljardu. Es domāju, ka faktiski iet whittles pati nosaka diezgan darn ātri. Patiesībā ar 32 halvings no tālruņu kataloga pat no četriem miljardiem, I'll get uz leju, lai vienu lapu. Un tas ir tad, kad šis stuff izpaužas spēcīgs, es domāju. Tas ir, ja šīs idejas iegūt pārliecinošu, kad var būt četrus miljardus lapu problēma un 32 soļus jūs varat atrast personu, jūs meklējat. Un tā, ka tas, ko mēs domājam, kad mēs teikt, ka jūs uzzinātu, kā domāt rūpīgāk, vairāk algoritmiski, vairāk inteliģenti par problēmu risināšana. Un atgriež ir milzīgs, kad jūs faktiski var darīt, un atkal, lai šo jautājumu par pasaules Facebooks kuri greznību ar milzīgu datu kopu Googles. Jūs esat got pieeja šo problēmu tādā veidā citādi tas vienkārši nav dodas uz darbu. Nu, kas ir tas, kas bija students tiešām atgādināt? Es, mums patīk darīt lietas, kas ir mazliet dumjš dažkārt veida veikt mala off, kas ir citādi daudz jaunu materiālu. Un jā, viņš tiešām, šis bijušais students nosūtīja mani šo saiti ko es devos uz priekšu, tikai kicks, un pēc tam nožēloja to beigās, velk līdzi utube šeit. Tātad, es domāju, es daļa to, kas nav datoru zinātnieks nozīmē, kad viņš asarām tālruņu pusē. [Smiekli] [Klusums] [Gandrīz nedzirdama] >> Jūs zināt vairāk nekā 200 lapām, nice tīras līnijas, likumīgu asaru. [Smiekli] >> David: jā, es domāju, viņa ceļu darbi too. Tātad, ko es saņēmu no šī kursa visus šos gadus atpakaļ, ir "jā", Shuttleboy, un tad jā datorzinātnēs pakāpi, un tad jā datorzinātnēs PHD. Un tas nav tas, ko mēs cenšamies pārvērst lielākā daļa studentu šajā laikā spēkā. Lielākā daļa no jums šajā laikā nav gatavojas doties uz galveno datorzinātnēs. Daži no jums varētu nelielas, bet daži no jums tas būs gala protams. Un tas ir pilnīgi naudas sodu, jo šis kurss ir, faktiski, strukturēti tādā veidā, kurā, pat ja jūs vienkārši samaksāt savu nodevu par vairākiem mēnešiem, un Jums tiešām koncentrēties un jūs patiešām ņem tik daudz no šo kursu, kā jūs varat, jums, kas Patiesībā ir labi aprīkota, lai dotos atpakaļ uz savu ekonomikas pasaulē, bioloģija, psiholoģija, lietišķo matemātiku, un faktiski izmantot to, kas galu galā kā interesants kurss, kā mēs ceram, ka konceptuāli, jo tas ir būtiski praktiski. Un tas arī ir kaut kas ir varbūt mazliet reti atrast. Es domāju, I'd daļa pāris komentārus, ka studenti no pagājušajā rudenī īstenot šo pagājušo gadu bižele guide, kad tiek jautāts par to, ko jūs vēlētos pateikt nākotnes studentiem. Nu, ja jūs neesat jau paskatījos šos apsvērumus, viens students teica, šis kurss tiks godīgu summu no jūsu laiks. bet, ja jūs nodot savu darbu uz pilnīgi jaunu pasauli, viss, ja jūs likts strādāt, ja jūs likts strādāt vērā, alright, tāpēc šis ir viņa gramatika nav mīnu, tādēļ, ja jūs nodot, nodot darba, pilnīgi jauna pasaule pavērs jums. Pārsteidzošs, cik daudz es uzzināju tikai 12 nedēļas. Vēl viens students rakstīja, jūs labāk veikt šo vai jūs gatavojas nožēlot to. Vēl viens rakstīja, nedaudz skarbi, tas kick jūsu ass un atstāj jūs sajūta lieliska. Un tad beidzot, šī ir varbūt kaut kas es varu tikai parādīt rakstiski, bet otrais no apakšas šeit. [Smiekli] Tātad, es neesmu pārliecināts, ja jums ir daudz draugu, kuri izvēlējās šo kursu, bet mēs veida bija daudz bojājumu pagājušā gada studentiem. Mēs ieviesa sākumā, vairākas lekcijas, dažas viktorīnas, pāris problēmas komplekti, šis jēdziens lolcats. Jūs nevarat redzēt, ko es redzu šeit, bet kad jūs redzēsiet jaunu vīrieti nosaukts laimīgs kaķis, kurš ir līderis ts lolcat. Šis ir viens no stulba internetā uz priekšu, ka es domāju, ka atklāti dihotomiju starp šiem diviem kungiem šeit un ko mēs tagad ir uz ekrāna, iespējams, ir. [Smiekli] Viens no nepareizu pielietojumu šī teātra līdz šim. Un kāpēc nav mēs nedaudz vairāk reālu nedaudz vairāk personīgo šis jēdziens faktiski atrisināt problēmu efektīvāk. Vienkārša problēma dienā viens no jebkuras skolas ir apsēsties vai piecelties un sākt skaitīšanas studenti, tiesības saraksta veidu. Nu, visvairāk naivs, bet tomēr, ļoti pareiza pieeja, ka skolotājs varētu būt viens, divi, trīs, četras, piecas, sešas, septiņas, un mēs gribētu būt šeit jau ilgu laiku. Tātad, kas ir minimāla uzlabojums šajā pat, ka Jums varētu būt darīts kā mazulis? Kā jūs skaits cilvēku ātrāk? Un, neuzsāciet nolasot savu instrukcijām? Ko Jūs darījis kā mazulis? Sākt skaitīšanas veica šo divu reģistru, pa labi, piemēram, tāpēc es esmu diezgan labi divas, četras, sešas, astoņas, desmit, 12. Tātad, tas ir kaut kas interesants tiesības. Tātad, cik daudz uzlabojumu ir tas, ka? Tātad, tas ir acīmredzami divu faktoru. Tā pieņem mani pusi tik daudz laika. Bet, jūs zināt, ko, kā mēs atrast visā šajā semestrī, liels darījumu, kā paātrināt sava darba laika, tikai koeficientu divi nav tik interesanti, jo analog šeit dators pasaulē ir tas, ka es esmu CPU Es esmu datoru, labi heck, ja es tikai jāgaida 12 mēneši, 18 mēneši, es dators būs vienkārši var pēc savas būtības, pēc skaita gigahercu man ir mani var paļauties cilvēkus šajā telpā ātrāk. Tātad, šāda veida, šāda veida lineāru speedups kā koeficientu divi koeficientu trīs, pat desmit reizes, kurš rūpējas? Labi, mēs varam mest hardware pie problēmu. Mēs varam gaidīt lietas. Mēs varam attīstīties straujāk mašīnas. Bet, intelektuāli, yeah tas bija veida gudrs, bet tas nav īsti būtiski mainīt šo problēmu. Es joprojām iet no kreisās uz labo, priekšas uz atpakaļ. Tas ir patiešām to pašu algoritmu. Bet, es varu piedāvāt, ka mēs varam darīt labāk. Mēs varam izdarīt gudrāku par šo un to pamatā ātrāku īstenošanu. Bet, lai to pierādītu, mums ir nepieciešams, lai jūs humora mums tikai brīdi. Un tas ir šajā brīdī, kad tas būs mani runā mazāk, un jūs runāt vairāk. Bet man ir nepieciešams, lai jūs veikt soli vienu kopā, kas ir, ja jūs humors mums, lūdzu, piecelieties. Virzieni šeit klāja, jūs zināt, ir, labi, pāris no jums ir sēdēt. Tie no jums atpakaļ, tur mums iet, alright. Paldies. Tātad, programma šeit ir pirms jums. Jūs tagad datori izpildes šo programmu. Tas ir diezgan pašsaprotami šajā brīdī. Jā, Jums ir numurs vienu. Get it? Labi, daudzi no jums, iespējams, domājot, ka tādējādi jau anyway, vispirms pirmkursnieks gadu. Tātad, domāju, lai sevi, jūs numuru vienu. Tātad, soli trīs šeit, pāris off ar kādu stāvokli, pievienojiet jūsu divi skaitļi kopā un pieņemt šo summu, kā savu jauno numuru un mēs do veselība pārbaudi. [Trokšņi no pūļa] Vai tu zini, cik daudz mēs esam? >> [Gandrīz nedzirdama] >> Nē [gandrīz nedzirdama]. >> Mums ir atbildes atslēga. [Klusums] >> Jā. [Trokšņi no pūļa] >> David: Šajā brīdī algoritms ir tinumu uz leju. [Trokšņi no pūļa] Varbūt mums būtu devusies kopā ar savu pieeju, galu galā. >> 43. >> 163. >> David: Ooh aritmētiskā priekšā 300 plus cilvēku. [Smiekli] Kāda ir mūsu gala sakrīt būs? >> 180. [Smiekli] >> 1200. >> 386. >> David: 386, un jūs pēdējais stāvoklis? Vai tas ikvienam? Vai tu zini atbildi? >> Kas? >> David: Vai jūs zināt, kādi atbilde ir? Mēs neiesniedza atbildi atslēga ar mums tā, tad 386 ir faktiski precīzi pareizo atbildi pirmo reizi. [Uzmundrinošas] [Applause] Tas ir labi. [Applause] Ļoti, ļoti labi darīts. Tā, kādi bija takeaway jo tas noteikti jutās mazliet lēnāks nekā mans ļoti vienkāršs, bet tomēr ļoti pareiza pieeja tikai gatavojas onesies un twosies un vienkārši panākt, lai to izdarīt ar no kreisās uz labo. Bet, ko mēs tiešām tikai darīt tur? Labi, ja būtu rupji, teiksim, 400 no jums pastāvīgu kādā brīdī, un tad puse no jums, ļoti ātri, no tā, ko es varētu pateikt, gribēja sēdēt. Tātad, puse no jums apsēdās, mēs devāmies 400-200 tad 100 tad 50 tad līdz 25. Tātad vēlreiz, tur tajā pašā skaldi un valdi ideja mums bija ar tālruņu grāmatu. Atkal, ar katru atkārtojuma mēs uz pusi izmērs problēmu, mēs uz pusi, mēs uz pusi to. Tātad, teorētiski, jūsu algoritms būtu esam bijis daudz ātrāks nekā mans lineāro pieeju, jo mans pieeja esam veikuši teikt 400 pasākumus, vai varbūt, ja es esmu mazliet gudrs 200 soļus. Bet, jums varētu esam veikuši daudz mazāk, tiesības 400-200, 100, 50, 25, 13, sešus, tāpēc ir mazāk nekā desmit soļus beigās, salīdzinot ar savu 200 vai 400. Un tur ir dīgļi tiešām interesanta ideja. Un jā, matemātiski, ko jūs tikko bija bija kaut kas, kas ir nedaudz logaritmisko dabā ar log bāzi divi, mēs sadalīta divās un divi vēlreiz. Un mēs pārskatīt šo vēlāk šajā semestrī. Bet tur ir atkal ļoti saprātīgu īstenošanu. Un mēs esam tikai nesaskrāpē virsmas ļoti gudrs ļoti saprātīgas efektīvas pieejas problēmas, mēs varētu galu galā atrisināt. Tātad, kas ir cilvēki, jūs tikko tērzēja ar vai īsi? Kopīgas bažas laikā, piemēram, tas, ka visi pa kreisi no jums, un ikvienam ir tiesības no jums ir skaidri jāzina vairāk, nekā jūs. Labi, ka ir absolūti nav. Un patiesībā, jo pēdējos gados, šis kurss ir veikusi saskaņotas pūles, lai panāktu, lai šie mazāk ērts, lai runāt. Un līdz ar to, mēs domājam ne cilvēki, kuri nekad neesmu pieskāries datoram līdz, jo tas ir tiešām grūti atrast šeit tuvumā šajās dienās, bet ļaudīm, kas lieto e-pastu, izmantot Facebook, varbūt pat labi tagad, bet ne vienmēr ir pilnīgi pārliecināts, ko darīt, ja kaut kas noiet greizi, vai ja tie ir uzdoti jautājumi par kaut tehnoloģiju, jūs zināt, rokas iet uz augšu, vai viņi veida push aparatūras draugam, kurš varbūt vairāk lietpratīgs tajā nekā viņi. Nu, šie ir daži no pagājušā gada pusgadā statistika. Tātad, kad jautāja, kad mēs lūdzām mūsu 400, lai studenti pagājušajā gadā, jūs zināt, kāda ir jūsu komforta līmeni stāšanās šajā klasē, arī 34% wrote sevi uz leju, jo tiem ir mazāk ērti. Tātad, ja esat ieradies šajā telpā, un joprojām domā tagad, ka jūs zināt, ko šis termins ir mazāk ērti raksturo mani, zina, ka Jums ir ļoti laba kompānija. Bet, saprotam arī, ka, ja jūs ierodas šajā laikā ar fona datorzinātnēs un jūs patiešām, ka geek vidū skolā un vidusskolā, kas bija rakstīšanas kods un mācību sevi valodā, un arī tas ir jauki pārāk, jo tur noteikti sarežģītākus vidējo auditoriju ar šo fonu, kā arī, aptuveni 13% pēdējā laikā. Un tad, tur ir visi citi, kārtot un kādu, kas nav domāju, ka viņi tik komfortabli, viņi noteikti nedomāju, ka viņi ir ērtāk, bet viņi tikai kursu, lai iegūtu kaut ko no tā. Tātad, realizēt šajā kursā paredz izdarīt diezgan spektru studentiem. Un, lai šo vairāk konkrēti, 71% skolēnu, pagājušajā gadā bija nulle kursi aiz tiem. Tātad, ja jūs ieiet šajā laikā domāšana oh ikvienam, kas uzskata CS50 bija datorzinību sīkšana vidusskolā, tas nav šajā gadījumā. Lielākā daļa cilvēku ir iespējams tikai ieinteresēti tajā. Un dažas, jā, pilnīgi ir veikušas dažus kursus, daži, vai vismaz viena persona pagājušajā gadā bija ieņēmuši piecus kursus iepriekš. Tātad, mums noteikti ir dažas galējos bet atkal gaļa līknes Šādos mazākas vērtības kopā. Un vēl interesanti statistikas mēs dalītu pēdējo pāris gadu laikā ir dzimumu attiecība. Tātad, vēsturiski, vismaz datorzinātnes, ir mazliet vīriešu sieviešu šķībs. Es pāris gadus atpakaļ tas bija daudz izteiktāks nekā pagājušajā gadā. Tātad, mēs esam gandrīz tagad% 40 līmeņa. Un, ja es varētu mest uz leju Gauntlet tikai dēļ ar trešo sektoru diagrammu nākamajā gadā, tas ir vēl vienlīdzīgāku. Es atgādinu, ka tur nekādu no kursiem viedokļa, ka vīriešiem un sievietēm nevajadzētu mācās šāda veida protams iemesla dēļ. Relatīvi vienāds skaits un realizēt līdz 38 procentiem, 48 procenti, mēs patiesībā diezgan priecīgi redzēt, ka mēs esam gandrīz tajā vismaz statistiski pat vērtību 50%. Tātad, ja Jums ir faktiski, sieviešu, do pārējo nodrošina arī, ka tas nav, patiesībā, vīrieši klasē. Nu, tas tikai tā notiek, ir CS50's 20. Dzimšanas dienu. Es, labi paldies. [Uzmundrinošas] [Applause] Tas ir ļoti jauki no jums, jo mēs, kas celta kūka jums tiešām. Un tā, kad izejat šeit vēlāk šodien, jūs faktiski nokļūt iespēja satikt daudzus kursus mācību puiši, kas būs svārstījies ir priekšnams. Un jā tas būs jauka veida iedrošināti veids, kā sasniegt mācību puiši. Bet, mēs veikt braucienu līdz nedaudz maizes un atkal atbilst kurss ir jautrs veids, bet tomēr ir gaida sarežģītākus darba apjoms, kamēr mēs esam, kam ka jautri. Bet, mums ir viens no šiem jums kūkas. [Smiekli] Tātad, ja jūs smejošs, ka patiesībā labi, jo, pat ja jūs esat vidū viens no tiem ir mazāk ērts vismaz esat informēts par to. Tiem, no jums, kas 14 procentos vēlētos šo aromāts. [Smiekli] Un tad, ja jūs nezināt, kas ellē notiek tieši tagad, mums ir arī šo par pārējo jums. [Uzmundrinošas] [Applause] Tātad, tie tiek sasmalcinātas up gabalos ārpuses, kā mēs runājam. Tātad vēlreiz, let's pieņemt lietas izveido robs un vismaz ieviest dažus pamata īrnieks, ka mēs tad par pašsaprotamu pārējās šajā semestrī. Tātad, mēs visi droši vien zināt, ka datori galu galā vārīties uz leju kaut līdz nullēm, un tiem, šīs lietas sauc bitiem. Ko tas nozīmē? Nu jūs varat domāt par to atklāti kā spuldze, mazliet ir spuldze, kas ir vai nu, vai tas ir izslēgts. Tas slēdzis, tas ir vai nu, vai tas ir izslēgts. Tagad, datorzinātnieku parasti domā pie kā skaita nulles patvaļīgi, un jēdziens par vienu. Tātad, ja jums mest gaismas slēdzi, kas ir viens izslēgt to, ka ir nulle. Vai līdzvērtīgi, savukārt apgaismojumu, kas ir vērtība patieso izslēgt to, ka ir vērtība nepatiesa. Tātad, tie ir tikai sinonīmi. Beigās, dienā, jā, visi aprēķināšana, visi sīkumi, kas iet uz zem pārsega, kas datorā nav galu galā vārīties uz leju, lai nulles un ones. Un, ja Jūs pārtraucat domāt par to, tas ir diezgan dambja ievērojams, ko pasaule ir darījusi ar šiem pamatelementiem, tostarp dažas no ierīcēm jūs saimniecībā rokā. Nu, kāpēc nullēm un tiem ir noderīga? Mans Dievs, pat reālo pasauli mums vismaz ir desmit cipari, nulle ar deviņi. Kāpēc tik ierobežots? Nu aparatūras ziņā tas ir ļoti viegli. Tas ir daudz vieglāk pārstāvēt divas valstis, tiesības. Ja datori ir savienots ar barošanas bloku sienas, parasti, jums ir šī viegli avots divkāršo dabu. Tas ir vai nu ieslēgt vai izslēgt. Elektrība ir plūstošs, vai tā nav. Tātad, tas ir veids viens no sākotnējiem iemesliem, ka pasaule gāja tikai ar nullēm un tiem, kas datoros. Bet, jūs varat tos izmantot kā celtniecības bloki. Tātad, tas patiesībā ir mazs mazs uz ekrāna šeit, bet mēs varam rēķināties ar bināro vai mēs varam pārstāvēt kaut ko mēs vēlamies bināro tāpat kā mēs varam, teiksim, decimālo, tāpat kā mēs varam, pat faktiski, ar alfabēta burtiem. Un tā, šeit ir ātri sistēmā. Tikai pāris minūšu laikā jūs tagad zināt, kā skaita, kā rakstīt, kā runāt bināro daudz, piemēram, savu klēpjdatoru. Nu, jums ir, jo pasaulē bināro, kārtot un tāpat kā pakāpes skolas kolonnas vai vērtības. Tātad, pakāpē skolā mēs mācāmies tas ir tiem, kolonna tas ir desmitiem kolonna, simtiem kolonnu un tā tālāk. Citiem vārdiem sakot, kāpēc numuru mēs zinām kā 123 numuru 123? Nu, mans skolotājs māca mani, tas ir tiem, kolonna, tas ir desmitiem, tas bija simtiem. Nu kāds bija tas nozīmē? Nu, lai skaitlis, ko kopējā vērtība ir to, kas ir citādi virkni cipari, vienkārši hash zīmes uz kuģa. Nu, mēs esam viens 100, lai ir 1 reizi 100 un tad plus kādi divi 10 ir tā, ka ir 2 reizes 10 plus trīs piedāvājumi, kas ir 3 reizes 1, labi, tāpēc es, šķiet, ir gotten atpakaļ, kad es sāku. Bet šis ir ļoti vienkāršs process vienkārši reizinot cipari ar vērtību kolonnā ir tieši tas, binārs ir visu par. Bet, binārā jūs izmantojat pilnvaras, divas nav pilnvaru desmit. Tātad, šeit ir par astoņiem spuldžu sērija. Datorzinātnieku vēlaties izmantot vērtību, piemēram, diviem un astoņiem un 16 un 24 un 32, jo viņi visi parasti ērtu vērtības izmantošanu. Tātad, ja mēs runājam par astoņiem vērtības secībā šis ir kā sauc baits. Un šajās dienās mēs reti runājam tikai baitos, mēs runājam megabaitu gigabaitiem un terabaitiem šajās dienās. Bet tas viss galu galā pats. Lūk, astoņi biti AKA vienu baitu, tikai vienkāršs žargons. Tātad, visas šīs spuldzes ir off. Tātad, matemātika tiešām ir ļoti viegli. Tātad attiecībā uz tiesībām, lai gan tas ir neliels, lai redzētu, ir viens's kolonnas, veica šo divu reģistru, četri, eights, 16S, 32S, 64.S, 128s. Alright, varbūt tas ir grūti iegaumēt sākumā, bet tas ir tikai reizināts ar divi no labās uz kreiso. Tātad, jūs vienmēr varat atjaunot to. Nu, viņi visi pie tā, ka ir 0 reizes viettura, 0 reizes vietturis. Tātad, tas ir skaitlis 0 pārstāvēto bināro. Citiem vārdiem sakot, kā jūs rakstīt numuru mēs zinām kā 0 bināro? Nu, viens, divi, trīs, četras, piecas, sešas, septiņas, astoņas, un tehniski tāpat kā decimālgrādos, visi šie vadošo nullēm, tie nedrīkst pievienot neko formulu, viņi vienkārši ir tāpēc, ka mēs patvaļīgi nolēma mums vēlas, astoņi no šīs lietas pēc kārtas, tiesības. Ja viņi fiziski objekti, mums ir astoņi, lai viņi esam ieguvuši visiem jābūt izslēgtām. Tātad, mēs varētu tikko gotten prom ar nulli vienu. Nu, kā jūs ir numurs viens? Nu, instinktīvi jūs gatavojas mest vienu no slēdžiem. Jūs gatavojas vērsties spuldze ar. Tātad, ir numur viens, jo mēs tagad varētu vienu, spuldze, kas ir par, jo savu nostāju. Kā mēs gatavojamies ir divi? Nu, mēs tiešām gatavojamies mest diviem slēdžiem tagad vismaz pret šo valsti, mums ir ieslēgt abas's kolonnu izslēdziet tiem, kolonnas un tagad mēs esam vērtību viena veica šo divu reģistru kolonnā. Tātad, tā ir kopējā vērtība ir divi. Tagad, ātri garīgās izmantot; to, kas notiks ar nākamo kārtas? Kā es varu iesniegt numuru trīs? Nu, man ir nepieciešams viens no veica šo divu reģistru kolonnu, viens no trijiem kolonnas un ah ha. Tātad, tagad es esmu pieaudzis, ka viens. Un tagad tas pats bāzes modelis atkārto. Kāds ir numurs četri? Nu redzēsim, es vienkārši nepieciešams, jo četri kolonnā vienu un tad nullītes, kas veica šo divu reģistru un uzņēmumiem. Tātad, tā turpina šo ceļu. Un tas ir tikai šī posmu secība. Un jēdzienu bināro ir patiešām nav tik sarežģīta. Augšā tur esam astoņi nulles. Zemāk ka mums ir septiņi nulles un vienu. Zemāk ka mēs esam seši nulles, vienu, un nulles, un tas ir bināro. 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. [Smiekli] >> 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. [Mūzika] >> 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. [Applause] ==== Transcribed by Automatic Sync Technologies ====