>> David: Mirë se vini, emri im është David Malan dhe kjo është CS50. Dhe, kjo nuk është tipike tuaja, të larta kompjuteri shkollë kurs shkencës. Ky kurs është një diçka pak të veçantë. Dhe kjo nuk është për shkak se unë jam duke ua mësuar. kjo është për shkak se kjo është një nga, ne si të mendojnë, kurse ato të rralla që në fakt squeezes trurin tuaj aq shumë dhe orarin tuaj aq shumë sa që deri në fund të semestrit e ju ndjeheni të vërtetë të zgjuar. Pra, kjo ishte mënyra e ndjeja, kur unë vetë e mori këtë kurs përsëri në 1996. Unë kam qenë një e madhe të qeverisë në atë kohë këtu jetojnë në Mather House. Dhe, I. [Brohorisnin] Siç janë të tjera, pesë të tjerët atje. Pra, unë isha një i madh të qeverisë në atë kohë. Dhe unë ishte një qeveri e madhe, sepse unë do të tërhequr gjithmonë historinë. I liked ligji kushtetues në shkollë të mesme. Dhe kështu, unë të dërgoj në këtë vit freshmen rrugë duke bërë atë që bëj unë më të mirë, duke bërë atë që dija unë i pëlqente. Dhe unë do të qenë gjithmonë pak e një geek, unë do të babbled gjithmonë me kompjuterë. Por, unë vetë, ndoshta për ironi në retrospektivë, unë do të shihet gjithmonë djem që ishin marrë kompjuterin e shkencës në shkollën time të lartë, miqtë e mi si geeks vërtetë. Dhe akoma, në fund e bëri, viti i paedukuar mjaft ta marr këtë kurs të vogël CS50 quajtur që në fakt e kishte frikësuar më larg vit mi fillestar. Dhe unë isha një asistent përdorues në atë kohë. Pra, unë kam qenë me siguri kualifikuar tashmë, të paktën, të jetë me ata, ata geeks që kam bërë e fun në shkollë të mesme. Por, unë isha i frikësuar. Nuk ka, ajo kishte këtë reputacion në atë kohë dhe ndoshta ende pjesërisht se kjo ishte një, ajo ishte një kurs të frikshme. Ajo ishte shumë punë. Ajo ishte e vështirë dhe ende, kjo është një nga ato gjëra ku, Perëndia im, të leh ishte më i rëndë sesa kafshimit të saj. Kam gjetur veten student i vitit të dytë të vitit, për herë të parë, në fakt gjetjen e fun detyrat e shtëpisë. Dhe unë nuk jam duke thënë se kjo vetëm për të katran këtë kurs për ju. kjo ishte një realizim të vërtetë për mua. Tani, unë mendoj se, në një pikë, kam bërë ndër të linjës për të geekdum vërtetë ku kam përdorur në fakt për të pres natën e premte sepse unë mund të rehatohem në frontin e MacBook tim të vogël dhe të punojnë në grupe CS50 e problemit. Pra, në këtë pikë, unë mendoj se kam pasur në mënyrë të qartë ndër linjë. Dhe, qëllimi ynë në këtë kurs nuk është që të kthehet të gjithë ju në atë person, por, vetëm të them se ka një diçka të vogël të veçantë në lidhje me këtë kurs, një shkencë diçka të vogël të veçantë në lidhje me kompjuter në përgjithësi, sidomos këto ditë. Dhe, më përshtaten me klimën ne kemi të gjitha mori në teknologji, lodra më shumë ne kryer rreth në xhepat tonë që janë vetë kompjuterat. Unë do të thotë, iPhone im është në fakt një kompjuter më të lartë kryerjes se laptopë ime ishte në kolegj. Ju mund të bëni shumë gjëra i zoti me këto gjëra. Dhe tani, shumica prej nesh në këtë dhomë, ndoshta vetëm përdorimi i softuerit të njerëzve të tjerë, mjete të njerëzve të tjerë, zgjidhjet e njerëzve të tjerë për problemet, sepse ne shkojmë në iTunes, ne shkarko disa app nga dyqani app dhe djalë që mund të bëjmë diçka të vërtetë i zoti. Por, deri në fund të këtij semestri, ju mund të jetë personi që ju ngacmon se zgjidhjen e problemeve. Ju mund të jetë personi zgjidhjen e disa problemeve, të ndërtimit që app, se pjesë e software, atë mjet që, ose, e vetëm amuses mua, amuses ju. për shembull, kontrollin, them, iTunes bibliotekën tuaj nga me apartamente tuaj në mënyrë të qartë app një që ekziston apo mund të gjeni oraret e anijes më të lehtë për shembull. Pra në fakt, një nga gjërat shumë të parë kam bërë pas marrjes së CS50 ishte përsëri, ai ishte ndoshta në këtë pikë netë e premte dhe e shtunë netë, nuk kishte këtë mundësi në kohën kur ishte duke e Harvardit autobusët ecejakeve. Dhe, në këtë ditë, ata ende kanë shtypur oraret. Por, nuk ishte me të vërtetë nuk do të thotë në internet për të gjetur se kur të anijes tjetër ishte. Tani, unë nuk ka kujdes, sepse edhe pse kam jetuar ne Mather unë nuk ishte midis atyre që në përgjithësi u anijes. Por, unë kam shumë miq në Pfoho për shembull. Dhe një nga ata më pyeti, unë mendoj se ne në një pikë. [Brohorisnin] Mirë Pfoho më mirë se Mather me sa duket. Pra, një nga miqtë e mi lloj i mori mua duke menduar ndoshta unë mund të shkruaj një program të vogël për llojin e ndihmuar miqtë e mi të kontrolloni oraret e anijes. Dhe kështu ka lindur djalë me emrin awkwardly anijes, kjo pjesë e leksik që ka qëndruar rreth e rrotull për disa numrin e viteve të paktën në mesin e disa nga upperclassmen. Në atë kohë, kjo ishte kjo pak command line program të ngjashëm në shpirt për Dos. Ajo ishte duke ecur në një mjedis UNIX. Pra, nuk ishte shumë sexy fare. Ju shtypen vetëm një çift komandat dhe ajo i tha ju kur anijet ishin. E pra, këto ditë kjo është pak më të sofistikuara. Dhe, është e përfaqësuar në fakt e pikërisht llojet e projekteve që studentët në këtë kurs fund duke e bërë nga kushtet në fund. Pra, ky është versioni katër, rreth 15 vjet më vonë, e Shuttleboy. Duket Google Maps është pak i ngadalshëm atje. Por, për ata që duhet të dal nga këtu dhe të shkojnë pas klasës, të themi, nga Memorial Hall dhe duhet të shkojnë deri në, thonë, Quad. E pra, ju mund ta lënë në dy minuta, nëse me, këtë të vërtetë nuk është duke punuar për ju ende vetëm, apo ju keni si shumë opsione të tjera si ju mund të pëlqen. Dhe, vijnë së shpejti, ne mund të katran këtë nga CS50, ajo do të jetë aftësia e njëjtë me SMS. Ju mund të tekstit Shuttleboy nëpërmjet telefonit. Ju thirrje Shuttleboy. numrin e telefonit CS50 këtë vit, edhe, amazingly kjo ishte në dispozicion, 617-bug-CS50. Pra, që do të debutimin së shpejti. Pra, nuk e quajti atë vetëm ende, sepse unë kam marrë qortoi për të, tani për tani është duke u shpartalluar në telefonin e sistemit tonë të mësimit në kokë shokun e tij celular. Pra, ju do të merrni vetëm atë nëse keni pyetje në lidhje me orarin e anijes tani. Por, që së shpejti do të zbatohen. Pra, të tjerash, në fakt, që ne vetë shpenzuar këtë verë në të vërtetë, në përgatitje për këtë semestër është një bandë e tërë e problemeve të tjera që ne të kërkuar për të zgjidhur. Për shembull, ka një të tërë shumë gjëra që shkon në këtë kampus në një ditë të dhënë. Dhe në fakt, të vënë një tjetër mënyrë, ka një të tërë shumë gjëra në vazhdim e sipër në këtë kampus se unë kurrë nuk sigurisht përfitonte nga. Dhe, edhe pse unë jam zhytur tani me sa gjëra që janë në vazhdim e sipër, në kampus, unë ende nuk duket për të gjetur kohën. Por, djalë, edhe atje, leksion CS50's. Kjo është ku është, kështu që kjo ishte një, ky ishte një program që ka shkruajtur për të agregat të gjitha ngjarjet në kampus. Dhe kjo ka qenë diçka që nxënësit e tjerë në këtë kurs të njëjtë kanë prekur të tyre. Dhe, ne kemi punuar me subjekte të tjera në kampus me të vërtetë të bërë këtë të ndodhë. Por pikë për të CS50 ky term është se të gjitha këto programe pak kemi qenë duke punuar në nëse ky apo nëse një për të përmbledhë të gjitha lajmet Harvardit në një vend, të gjithë Google News, të gjitha këto gjëra do të keni atë që janë quajtur API-së, interfaces programimit aplikimit. Dhe kjo është vetëm i sofistikuar flasin për aftësinë e lënë njerëzit e tjerë, njerëzit në këtë dhomë, vërtetë për ta bërë diçka me këtë dhenat te njejta. Pra, nga kushtet në fund, në qoftë se ju vendosni për zbatimin e projektit përfundimtar lidhur me lajme apo ngjarje apo harta, edhe ne, të paktën si një kurs, do të bëjë që të gjithë më të lehtë të këtij viti, duke siguruar ju me një ndërfaqe, një lloj funksion, në mënyrë që të flasin, softuer që mund të përdorni në projektet tuaja për të shkuar më lart dhe më gjerë, ku studentë, ndoshta, kanë shkuar në kohët e kaluara, sepse këtë kuadër, nuk ka qenë në vend për ta. Dhe përsëri, kjo filloi të gjithë, për mua të paktën, rreth 15 vjet më parë zbatimin e Shuttleboy. Unë pastaj emailed Ken mikun tim në Pfoho. I tha hej çfarë mendoni ju? A është kjo e dobishme? Ai i mbuluar me njolla atë në Pfoho lista të hapura dhe djalë, të gjitha këto vite më vonë unë jam me sa duket ende mjeljes këtë projekt. Dhe i zoti për këtë gjë, dhe ky është vendi ku edhe një kurs si kjo në inxhinieri dhe shkenca kompjuterike, unë mendoj, është pak e veçantë, është se, kur ju bëni shtëpinë tuaj punon dhe kur ju bëni projektet tuaja në këtë kurs, ju e di, shumë prej tyre, po, ju do të lënë mënjanë dhe nuk e përdorin me të vërtetë përsëri. Por, disa prej tij, ju do. Dhe nuk ka kjo gjë me të vërtetë të fuqishme, të paktën për mua, kjo gjë me të vërtetë emocionuese, kur ju bëni diçka dhe njerëz të tjerë në fakt kujdes, njerëz të tjerë nuk e vetëm buzëqeshje dhe përkëdhelje lloj tuaj në anën e pasme dhe pastaj të shkoni në lidhje me jetën e tyre. Ata në fakt përdorin atë që e keni bërë në jetën e tyre edhe nëse është për diçka si budalla ose si të thjeshtë që vetëm gjetjen e kur ata mund të dal nga këtu për të kapur të anijes tjetër për Quad. Pra, nga kushtet në fund, kjo është një nga qëllimet për këtë kurs, për të fuqizuar ju djema të vetëm të identifikuar disa probleme nëse kjo është në kampus ose shpresë përtej kampus, dhe në fakt të përdorni aftësitë tuaja, mendjen tuaj dhe të zgjidhë këtë problem në disa pjesë, teknologjikisht. Pra, kjo është gjithashtu një kurs si të themi në planin mësimor dhe në përshkrimin e kurseve zyrtare që ju mëson se si të mendojnë dhe kjo ju mëson se si të zgjidhin problemet në mënyrë më efikase. E pra, çka do të thotë kjo? E pra, kur ju keni marrë 600 megahertz në xhepin tuaj ose tre gigahertz në tavolinën tuaj në shtëpi, ju mund të zgjidhin shumë probleme të efektshme vetëm me forcë qethje shtazë. Por, ka shumë probleme në këtë botë, nëse është në kërkim, të themi, rrjeti Facebook ose në internet nëpërmjet Google, se kjo nuk ka rëndësi se sa shpejt kompjuterin tuaj të veçantë është, nuk ka asnjë mënyrë në ferr do të jeni të kërkuar miliarda faqet e shpejt nëse ju në të vërtetë këtë problem qasje inteligjente. Ju nuk vetëm kërkim, për shembull, një listë të madhe të të gjitha web faqet në tokë nga lart poshtë duke kërkuar për diçka në lidhje me kushtet e çfarëdo kërkimi që ju po kërkoni Google Google shpresë dhe me sa duket e Facebook dhe asnjë nga këto subjekte të mëdha kanë shumë njerëz të mençur duke menduar se si ata mund të gjeni të dhënat më shpejt, se si ata mund të procesit informacion në mënyrë më efikase, dhe, se si ata mund të kthehen vetëm në përgjithësi rezultate më shpejt në mënyrë që ju mund të bëni akoma, gjërat më interesante me këto pajisje. Dhe kështu, atë që nuk kemi të thotë, edhe pse, nga se si, mësim njerëzve se si të mendojnë më shumë kujdes, shumë algorithmically. E pra, kjo vizuale pak gjithmonë duket të shkojnë mirë. Dhe, kjo duket të jetë i paharrueshëm. Dhe unë u pyet edhe vetëm dje nga një ish student, oh po ju do të bëni gjë Phonebook përsëri. Dhe unë shumë e shumë të vendosur mirë në vend të sigurt ne do të ndërtojmë një gjë e librit telefonik. Dhe ai më pyeti se kur ju shqeu atë në gjysmën e drejtë, I was like yeah edhe teknikisht ne shqeu atë në gjysmë, por jo në mënyrë, në mënyrë shkenca kompjuterike do të jenë në gjendje të gris këtë gjë në gjysmë. Dhe kështu, këtu është problemi që kemi paraqitur për disa kohë. Pra, këtu e librit telefonik. Ajo e mori të paktën një mijë apo më shumë faqe. Dhe qëllimi i thjeshtë në dorë botë shumë e vërtetë është për të gjetur, të themi, një person në këtu. Pra, Mike Smith, emri i fundit duke filluar me S. Pra, unë jam një njeri tipik, unë të marr këtë libër telefon. Dhe të gjithë atje, çfarë do të, një person tipike, të bëjë për të filluar të gjetur Mike Smith, natyrisht duke mos ditur paraprakisht se çfarë faqen e ai është në të vërtetë në. Të drejtë, kështu që ju shkojnë afërsisht në mes, e drejtë. Dhe në këtë pikë në histori, unë jam ndoshta në N ose M-së, ju e dini, gati gjysma rrugën përmes librit telefonik. Rezulton, herën e fundit që e bëri këtë shembull unë disi gjetur veten në seksionin e përcjellje. Pra, është në fakt nuk i balancuar në mënyrë të barabartë në mes të një përmes M dhe N përmes Z. Por, sot, ne jemi, në fakt, në M, mirë kështu, tani jam ne M-së. Por ajo që e takeaway ime tani vetëm si një off normale të njeriut të rrugës? Ku mund të shkoni e ardhshme për Mike Smith. [Padëgjueshëm] Dhe kështu, vetëm ndoshta në këtë gjysmë, të drejtë, sepse S vjen pas M. Dhe kështu, këtu qëndron dramë vizuale. Kjo nuk është e vërtetë marramendës në gjysëm, e drejtë. Unë lloj mashtruar poshtë qendrës. Por, ne tani e dimë se Mike është të paktën jo në atë gjysmë. Ne mund të hedhin fjalë për fjalë gjysmën e problemit larg. Dhe unë jam la me problemin që është krejtësisht ende të njëjtën gjë, të gjejnë Mike Smith në një libër të vërtetë të madhe. Por, problemi është tani gjysmë më i madh. Sikur të ishte një mijë faqet e para, tani ai e mori 500. Ti e di çka, unë mund të bëjë të njëjtën gjë përsëri. Unë mund të lloj directory ose në mënyrë të përsëritur të bëjë të njëjtën gjë. Tani unë nuk jam fare në S. jam ne T. Dhe kështu, oh unë shkova pak shumë larg. Por, unë e di tani se Mike nuk është në të djathtë, nuk do të jetë një klasë një ditë ku unë nuk mund ta gris gjë e digave, Vë bast. Por tani, unë e di se ai nuk është në të djathtë. Pra, tani problemi është quartered. Pra, unë kam shkuar nga një mijë të 500-250 faqe. Dhe përsëri, në qoftë se ju vazhdoni e logjikës, të vazhdojë matematikë, unë jam i shëndoshë këtë problem në gjysmë, në gjysmë, në gjysmë deri në fund unë jam ose do të të mos gjetur ndonjë Smith në të gjitha, nuk ka gjasa, ose unë do të të të gjetur një Po kërkoj. Por, që, atëherë, ngre pyetjen, është kjo ndonjë të mirë se sa të thjeshtë e vetëm duke thënë, ju e dini, A jo,, B, nuk ka, duke filluar nga e majta në të djathtë do linear përmes librit? E pra, instinktivisht po. Ajo do të jetë shumë më të shpejtë. Por, sa më pak? E pra, nëse unë kam një mijë faqe libër telefoni apo le të themi 1024 për ato prej jush që si pushtetin e dy, sa kohë mund të më duhet të ndarë këtë problem në gjetjen e gjysmë para se Z. Smith? > Dhjetë>. >> David: Pra, dhjetë, e drejtë. Nëse ju keni 1024 faqe dhe ju ndarë ato në gjysmë, në gjysmë, në gjysmë, në gjysmë, unë bëj atë dhjetë herë që do të thotë se të shkoj nga 1000 faqet me personin që unë jam duke kërkuar për në faqet e vetëm dhjetë kthehet. Dhe kjo është lloj i zoti, por, ju e dini, nëse ju mendoni rreth saj ju keni qenë bërë këtë të gjithë jetën tuaj. Kjo nuk është se dramatike. Por tani, se librit telefonik nuk është vetëm për të Bostonit, është për të gjithë të SHBA apo të gjithë botën dhe kjo gjë ka miliarda faqe në të, kështu që të imagjinojmë një Phonebook me katër milliard faqe. Sa shumë kthen faqe jam unë do të duhet të bëjë maksimalisht për të gjetur Mike Smith në një Phonebook katër milliard faqe? >> Bazë Log dy. >> David: Pra vërtet, nëse ju jeni lloj i një lloji të math kjo është log bazë dy. Por, në qoftë se ju mendoni se 4-2000000000 to one miliard dollarë, kështu që një gjysmë miliard. Unë do të thotë, që në fakt shkon whittles vetë poshtë pretty mallkuar të shpejtë. Në fakt me 32 halvings e librit telefonik edhe nga katër miliarda, unë do të shkoj poshtë në një faqe. Dhe kjo është kur këtë stuff merr fuqishme, unë mendoj. Kjo është kur këto ide të merrni bindëse kur ju mund të keni një problem katër milliard faqe dhe në 32 hapa ju mund të gjeni personin që ju po kërkoni. Dhe kështu, kjo është ajo që ne do të thotë kur themi se ju do të mësoni se si të mendojnë më shumë me kujdes, më algorithmically, më inteligjente për zgjidhjen e problemeve. Dhe e kthimit janë të mëdha, kur në fakt mund të bëni këtë, dhe përsëri, në këtë pikë e Googles e botës Facebooks të cilët kanë luksin e të pasurit datasets madh. Ju keni marrë për qasje këto probleme në këtë mënyrë ndryshe ajo thjesht nuk do të punojë. E pra, çfarë është ajo që e bëri të studentëve në fakt risjell? I, ne si të bëni gjëra që janë pak budalla ndonjëherë për lloj të marrë buzë off të asaj që është ndryshe shumë materiale të reja. Dhe kështu, ai në fakt, ky ish student i dërguar këtë lidhje që unë shkova përpara, vetëm për të nis dhe i vjen keq pastaj atë në fund, u tërhoq deri në uTube këtu. Pra, unë mendova se do të ndajnë atë që një shkencëtar jo-kompjuter do të thotë kur një lot Phonebook në gjysmë. ] [Qeshur ] [Heshtja [] I padëgjueshëm >> Ti e di mbi 200 faqe, linjë e bukur të pastër, legjitime loti. ] [Qeshur >> David: po, unë mendoj, rrugën e tij punon shumë. Pra, çfarë kam marrë jashtë të këtij kursi të gjithë ata vjet më parë është po, Shuttleboy, dhe pastaj po një diplomë në shkenca kompjuterike, dhe pastaj po një PhD në shkenca kompjuterike. Dhe kjo nuk është ajo që ne jemi duke u përpjekur për ta kthyer shumica e studentëve në këtë kurs në. Shumica prej jush në këtë kurs nuk do të shkojnë në një të madhe në shkenca kompjuterike. Disa nga ju mund të vogla, por për disa nga ju kjo do të jetë një kurs terminal. Dhe kjo është e përkryer gjobë, sepse ky kurs është, në fakt, të strukturuara në një mënyrë ku edhe në qoftë se ju vetëm të paguajnë kuotat e juaj për disa muaj dhe ju me të vërtetë të përqëndrohet në të vërtetë dhe ju marrin si nga shumica e këtyre sigurisht që keni mundësi, ju do të, në fakt, të jetë e pajisur mirë të kthehem në botën tuaj të ekonomisë, biologji, psikologji, aplikuar matematikë, dhe në fakt e bëjnë përdorimin e asaj që është në fund të fundit si interesante nje kurs si ne shpresojmë që të konceptualisht si është krejtësisht praktike. Dhe se gjithashtu, është diçka që ndoshta pak të rralla për të gjetur. Mendova se do të ndajnë disa komente se studentët nga rënia e fundit vënë në këtë udhëzues kaluar vite sugjerim kur u pyet për atë që do të dëshironit të them studentëve të ardhmen. E pra, nëse nuk e keni shikuar tashmë në këto komente, një student tha se ky kurs do të marrë një sasi mjaftë e kohës tuaj. por, në qoftë se ju vendosni në punën tuaj në një botë krejt të re, një e tërë, nëse ju vendosni të punës, nëse ju vendosni të punës në, mirë, kështu që kjo është e ciklit të lartë të tij nuk e minave, kështu që nëse ju vendosni, vënë në punë, në një botë krejt të re do të hapë deri te ju. Amazing sa kam mësuar në vetëm 12 javë. Një tjetër student ka shkruajtur, ju më mirë marrë këtë ose ju jeni do të zhgenjeheni. Një tjetër shkroi, pak më troç, kjo do të fillojë ass tuaj dhe të largohet nga ju ndjenjë e madhe. Dhe pastaj në fund, kjo është ndoshta diçka që unë mund të tregojnë vetëm me shkrim, por, të dytë nga fundi këtu. [Qeshur] Pra, unë nuk jam i sigurt nëse ju keni shumë miq që e mori këtë kurs, por ne lloj e bënë shumë të dëmtimit të studentëve të vitit të kaluar. Ne futur, në fillim, disa leksione, nje kuize disa, nja dy probleme përcakton, ky nocion të lolcats. Ju nuk mund të shohin atë që unë mund të shoh këtu, por në një moment ju do të shihni një djalë të ri, të quajtur mace lumtur i cili është udhëheqës i lolcat ashtu quajtur. Kjo është një nga më të përcjell internetit idiotike që unë mendoj sinqerisht the ndarje në dy pjesë midis këtyre dy zotërinjve këtu dhe atë që ne tani e kemi në ekran është ndoshta. [Qeshur] Një nga përdorimet më të papërshtatshme të këtij teatri deri më sot. Dhe, pse nuk kemi bërë pak më të vërtetë pak më shumë personale këtë nocion të vërtetë zgjidhjen e një problemi më efikase. Një problem i thjeshtë në një ditë të çdo shkollë është të ulen apo të ngrihen në këmbë dhe të fillojnë numërimin e studentëve, e quajnë të drejtë roll në terezi. E pra, qasja më naive, por megjithatë, shumë të saktë që një mësues mund të marrë është një, dy, tre, katër, pesë, gjashtë, shtatë, dhe ne do të jetë këtu mjaft disa kohë. Pra, çfarë është një përmirësim margjinal në këtë edhe që ju mund të keni bërë si një fëmijë? Si mendoni ju numërimin e njerëzve më të shpejtë? Dhe, mos filloni të lexoni udhëzimet jashtë mi? Çfarë do të keni bërë si një fëmijë? twos Fillimi numërimit, të drejtë, si kështu që unë jam mjaft të mirë në të dy, katër, gjashtë, tetë, dhjetë, 12. Pra, kjo është diçka e drejtë interesante. Pra, sa i përmirësimit është se atje? Pra, kjo është padyshim një faktor të dy. Ajo merr mua gjysmën e sa më shumë kohë. Por, ju e dini se çfarë, pasi ne do të gjeni gjithë këtë semestër, punë e madhe, si përshpejtimin e drejtimin tuaj kohë vetëm nga një faktor të dy nuk është e gjitha që interesante për shkak se analog këtu në botë kompjuter është se unë jam një CPU Unë jam një kompjuter, edhe dreq, në qoftë se unë vetëm të presim 12 muaj, 18 muaj, unë kompjuter do të jetë në gjendje vetëm nga natyra, nga numri i gigahertz kam në mua që të jetë në gjendje të mbështetet populli në këtë dhomë të shpejtë. Pra, këto lloj, këto lloj speedups lineare si faktor i dy faktor të tre, madje edhe faktor i dhjetë, i cili mendon? E drejta, ne mund të hedhin në këtë problem hardware. Ne mund të presim gjëra jashtë. Ne mund të zhvillojnë makina të shpejtë. Por, intelektualisht, vërtet kjo është lloj i zgjuar, por nuk ka të vërtetë krejtësisht të ndryshuar këtë problem. Unë jam ende duke shkuar nga e majta në të djathtë, për të mbështetur para. Është me të vërtetë të njëjtën algorithm. Por, unë ofrojnë që ne mund të bëjmë më mirë. Ne mund të bëjmë më të zgjuar se këtë dhe të bëjë në thelb një zbatim më të shpejtë. Por, për të demonstruar këtë, ne kemi nevojë për ju për të humorit ne për një çast një. Dhe është në këtë pikë ku ajo do të jetë më flasin më pak dhe ju duke folur më shumë. Por unë kam nevojë për ju për të ekzekutuar një hap më së bashku, e cila është në qoftë se ju do të na humor, ju lutem ngrihem. Drejtimet këtu në bord, ju e dini po, në rregull, disa nga ju keni të ulen. Ata prej jush në të kthyer, nuk shkojmë mirë, dakord. Ju faleminderit. Pra, programi këtu është para teje. Ju jeni tani kompjutera ekzekutimin e këtij programi. Është mjaft e vetë shpjegues në këtë pikë. Po, ju duhet të jetë një numër. Get it? E drejta, shumë prej jush ndoshta janë duke menduar kjo tashmë gjithsesi, vitin e parë fillestar. Pra, mendoj për veten, ju jeni një numër. Kështu pra, hap tre here, gjej grua me dikë në këmbë, shtoni dy numrat tuaj së bashku dhe për të miratuar që shuma si numrin tuaj të re dhe ne do të bëjmë një kontroll mendje e shëndoshë. [Zhurmave nga] turmë A e dini sa kemi? >>] [I padëgjueshëm >> Nuk ka] [i padëgjueshëm. >> Ne duhet të kemi një përgjigje. ] [Heshtja > Yeah>. [Zhurmave nga] turmë >> David: Në këtë pikë duhet të jetë algorithm dredha-dredha poshtë. [Zhurmave nga] turmë Ndoshta ne duhet të kemi shkuar me qasje time pasi të gjithë. >> 43. >> 163. >> David: aritmetike Ooh para 300 persona plus. [Qeshur] Çfarë është grup ynë përfundimtar do të jetë? >> 180. ] [Qeshur >> 1200. >> 386. >> David: 386, dhe a jeni të fundit një këmbë? Është se të gjithë? A ju e dini përgjigjen? >> Cfare? >> David: A e dini se çfarë përgjigje është? Ne nuk e sjellë një përgjigje me ne kështu, 386 në fakt është pikërisht përgjigje të drejtë për herë të parë. [Brohorisnin] ] [Duartrokitje Kjo është në rregull. [Duartrokitje] Shumë, shumë e bukur bërë. Pra, ajo që ishte takeaway sepse mendonin se patjetër pak më të ngadalshme se qasja ime shumë e thjeshtë, por megjithatë shumë të saktë të vetëm do onesies dhe twosies dhe vetëm duke u bërë me atë nga e majta në të djathtë. Por, çfarë bëri me të vërtetë vetëm të bëjë atje? E pra, nëse ka qenë afërsisht, le të themi, 400 prej jush qëndron në një pikë, dhe pastaj gjysma prej jush, shumë shpejt, nga ajo që unë mund të them, i kërkuar për t'u ulur poshtë. Pra, gjysma e ju u ul, shkuam 400-200 pastaj në 100 e pastaj në 50 e pastaj në 25. Kështu përsëri, nuk ka se ndajnë të njëjtën dhe të pushtuar me ide ne kishim librit telefonik. Përsëri, me çdo përsëritje ne përgjysmuar nga madhësia e problemit, ne kemi përgjysmuar atë, ne e përgjysmuar atë. Pra, në teori, algorithm juaj duhet të kam qenë shumë më shpejt se qasja ime lineare, sepse qasja ime do të kemi marrë thonë se 400 hapa, ose ndoshta në qoftë se unë jam pak i zgjuar 200 hapa. Por, juaji do të kemi marrë shumë më pak, të drejtën 400-200, 100, 50, 25, 13, gjashtë, pra më pak se dhjetë hapa në fund e mia kundrejt 200 ose 400. Dhe nuk është embrion i një ide me të vërtetë interesante. Dhe po, matematikisht se çfarë ju bëri vetëm ishte diçka që është pak logaritmike në natyrë me bazë të kyçeni dy, kemi ndarë në dy dhe dy përsëri. Dhe ne do të rishqyrtojnë këtë më vonë në këtë semestër. Por aty qëndron përsëri një zbatim shumë të zgjuar. Dhe, ne jemi vetëm gërvishtje sipërfaqen e shumë i mençur i afrohet shumë të zgjuar, të efektshme për problemet që ne mund të zgjidhim në fund të fundit. Pra, cilët janë njerëzit që vetëm bisedoi me të, nëse një kohë të shkurtër? Një shqetësim të përbashkët në një kurs si kjo është që të gjithë në të majtë të ju dhe të gjithë të drejtën të ju duhet të qartë se më shumë se ju. E pra, kjo është absolutisht jo e rastit. Dhe në fakt, në vitet e fundit, ky kurs ka bërë një përpjekje të bashkërenduar për të arritur deri te ato më pak komode, në mënyrë që të flasin. Dhe nga që, ne nuk do të thotë njerëz të cilët kurrë nuk kam prekur një kompjuter më parë për shkak se e vërtetë e vështirë për të gjetur rreth këtu këto ditë, por folks që përdorin e-mail, përdorin Facebook, ndoshta edhe tani, por jo domosdoshmërisht janë mjaft të sigurt se çfarë duhet të bëni kur diçka shkon keq, ose kur janë pyetur për ndonjë gjë teknologjike, ju e dini, në duar të shkojnë lart ose ata lloj shtytje hardware për një mik që është ndoshta më i ditur në atë se ata. E pra, këto janë disa statistikave të semestrit të vitit të kaluar. Pra, kur kërkohet, kur ne kemi kërkuar 400 tonë kështu që studentët e vitit të kaluar, ju e dini, se çfarë është niveli juaj e rehati që vijnë në këtë klasë, edhe 34% ka shkruajtur vetë poshtë, si në mesin e atyre më pak të rehatshme. Pra, nëse ju keni ardhur në këtë dhomë dhe janë ende duke menduar tani, se, ju e dini çfarë, ky term më pak komode përshkruan mua, e di që ju jeni në kompani shumë të mira. Por, e kuptojnë shumë se, në qoftë se ju jeni që vijnë në këtë kurs me një sfond në shkenca kompjuterike dhe keni qenë me të vërtetë se geek në shkollë të mesme dhe të shkollës së mesme i cili ishte shkruar kodin dhe veten tuaj mësim gjuhë, edhe kjo është në rregull edhe sepse nuk ka patjetër një jo trivialë audiencë sized me atë sfond, si edhe, rreth 13%, afatin e fundit. Dhe pastaj, nuk ka të gjithë të tjerët, lloj dikush që nuk mendoj se ata janë më pak të rehatshme, ata patjetër që nuk mendoj se ata janë më të rehatshme, por ata janë vetëm në një kurs për të marrë diçka nga ajo. Pra, të kuptojë këtë kurs ka barazim mjaft të spektrit të studentëve. Dhe, për të vënë këtë në kuptimin më konkret, 71% e nxënësve, të vitit të kaluar, kishte zero kurse pas tyre. Pra, nëse jeni duke hyrë në këtë kurs të menduarit oh të gjithë ata që merr CS50 ishte shkenca kompjuterike kampion në shkollë të mesme, nuk është e rastit. Shumica e njerëzve janë me sa duket vetëm të interesuar në të. Dhe disa, po, absolutisht kanë marrë disa kurse, disa, ose të paktën një person vitin e kaluar e kishte marrë pesë kurse më parë. Pra, ne patjetër duhet disa outliers, por përsëri e mishit të kurbë është në ato vlera të ulëta krejt. Dhe një tjetër statistikë interesante ne përbashkët gjatë dy viteve të fundit është raporti gjinor. Pra, historikisht, të paktën në shkenca kompjuterike, ka pak të anuar mashkull femër. Kam nja dy vjet më parë ishte shumë më e shënuar se vitin e kaluar. Pra, ne jemi gati tani në nivelin 40%. Dhe në qoftë se unë mund të hedhin poshtë një provë vetëm për hir të ketë një tabelë të tretë byrek vitit të ardhshëm, që është edhe më e barabartë. Unë do të nxjerr në pah se nuk ka absolutisht asnjë arsye nga perspektiva e kurseve që meshkujt dhe femrat nuk duhet të regjistrohen në këtë lloj kursi. Në numër relativisht të barabartë dhe të kuptojë për 38 për qind, 48 për qind, ne jemi në fakt të kënaqur mjaft për të parë se ne jemi gati në atë, të paktën, vlerë statistikisht edhe prej 50%. Pra, nëse ju jeni, në fakt, femra, nuk sigurojë pjesën tjetër shumë se kjo nuk është, në fakt, një klasë mashkull dominuar. E pra, kjo pikërisht kështu ndodh të jetë ditëlindjen e 20 CS50's. Unë, edhe ju falenderoj. [Brohorisnin] ] [Duartrokitje Kjo është shumë i mirë për ju, sepse ne e solli tortë për ju në të vërtetë. Dhe kështu, kur të dalë sot këtu më vonë, ju do të merrni një shans të vërtetë për të përmbushur shumë prej kurseve të mësimdhënies miqtë të cilët do të jenë të vazhdueshme në korridor. Dhe po ajo do të jetë një lloj i mënyrës së bukur incentivized të takimit miqtë mësimdhënies. Por, ne do të marrë një udhëtim deri në një furrë të vogël dhe përsëri në përputhje me kursin është natyra e gjallë ndërsa megjithatë është pritur shumë jo trivialë e punës, ndërsa ne jemi duke se fun. Por, ne kemi një nga këto ëmbëlsira për ju. [Qeshur] Pra, nëse ju jeni duke qeshur se e vërtetë e mirë, sepse edhe në qoftë se ju jeni në mesin e një nga ata më pak të rehatshëm së paku ju jeni në dijeni të tij. Ata prej jush në 14 për qind mund të preferojnë këtë aromë. [Qeshur] Dhe pastaj, në qoftë se ju nuk e dini se çfarë dreqin po ndodh tani, ne gjithashtu kemi këtë për pjesën tjetër nga ju. [Brohorisnin] ] [Duartrokitje Pra, ata janë duke u copëtuar deri në copa jashtë si ne flasim. Pra, përsëri, le të marrin gjërat një nivel dhe të paktën të futur disa qiramarrës themelore që ne pastaj do të marrë për të dhënë në të mbetura të këtë semestër. Pra, ne të gjithë ndoshta e di se kompjuterat valoj në fund të fundit disi me zero dhe ato, këto gjëra quhet bit. Çfarë do të thotë kjo? E pra ju mund të mendoni se sinqerisht si një llambë dritë, pak dritë është një llambë që është ose më ose është jashtë. Kjo është një kaloni, është ose mbi ose është jashtë. Tani, shkencëtarët kompjuter në përgjithësi mendojnë jashtë si numrin zero në mënyrë arbitrare dhe të, dhe nocionin e në si një të tillë. Pra, nëse ju kaloni hedhin një dritë mbi të cilat është një kthejnë atë se është një zero. Ose, ekuivalente, nga ana e kjo është dritë mbi vlerën e kthyer vërtetë atë që është vlera e të rreme. Pra, këto janë vetëm sinonimet. Në fund të ditës, po, të gjithë e llogaritjes, të gjitha gjëra që shkon në nën kapuç në një kompjuter ka në fund të fundit të valoj deri në zero dhe ato. Dhe, kur ju të ndaluar për të menduar për këtë, kjo është goxha e digë të shquar se çfarë në botë ka bere me keto blloqet themelore të ndërtimit, duke përfshirë disa nga pajisjet e ju jeni që mbajnë në dorën tuaj. E pra, pse janë zero dhe ato të dobishme? Perëndia im, madje edhe në botën e vërtetë që ne të paktën të ketë dhjetë shifra, me nëntë zero. Pse aq e kufizuar? E pra në kushtet e "hardware" është shumë e lehtë. Është shumë më e lehtë për të përfaqësuar të dy shtetet, të drejtë. Nëse kompjuterat janë mbyllën në mur, zakonisht, ju e keni këtë burim të lehtë të natyrës binare. Është ose ose çaktivizuar. Energjia elektrike është rrjedhin apo nuk është. Pra, kjo është lloj i një nga arsyet fillestare që bota shkoi me vetëm zero dhe ato në kompjuter. Por, ju mund të përdorni ato si ndërtimin e blloqeve. Pra, kjo në fakt është pak e vogël në ekran këtu, por ne mund të llogarisë në binar ose ne mund të përfaqësojnë ndonjë gjë që ne duam në binar ashtu si ne mund, të themi, pas presjes dhjetore, ashtu si ne mund, edhe në fakt, me letra alfabetik. Dhe kështu, këtu e sistemit të shpejtë. Në vetëm dy minuta kohë ju do të tani e dini se si për të numëruar, si të shkruash, se si të flas binar ashtu si laptop tuaj. E pra, ju keni, në botën e lloj binare, e ashtu si shtylla klasë shkollë ose vlerat. Pra, në klasën e shkollës ne mësojmë kjo është nga ato kolona kjo është kolona e dhjetra, qindra kolona dhe kështu me radhë. Me fjalë të tjera, pse është numri ne e dimë si 123 numrin 123? Well, mësuesi im më mësoi kjo është nga ato kolona, kjo ishte dhjetëra, ky ishte qindra. E pra ajo që e bëri të thotë kjo? E pra, të kuptoj se çfarë vlera e përgjithshme është e ajo që është ndryshe vargun e shifra, vetëm hash shënon në bord. E pra, ne kemi një 100, kështu që është 1 herë 100 dhe pastaj plus atë që të dy 10-së në mënyrë që ato 2 herë 10 plus tre, kështu që është 3 herë 1, rregull, kështu që duket se kanë marrë mbrapa aty ku fillova. Por, ky proces shumë e thjeshtë e vetëm shumëzuar shifra nga vlera e kolonë është pikërisht ajo binare është mbi të gjitha. Por, në binar ju përdorni kompetencat e dy pushteteve nuk e dhjetë. Pra, këtu është një seri prej tetë llamba. shkencëtarët Computer si për të përdorur vlerat si dy dhe të tetë dhe të 16 dhe 24 dhe 32, sepse ata janë të gjitha vlerat në përgjithësi i përshtatshëm për t'u përdorur. Pra, kur flasim për vlerat e tetë në rend kjo është si të quajtur bajt. Dhe këto ditë ne flasim rrallë në bytes vetëm, ne flasim megabajt gigabajtë dhe terabytes këto ditë. Por kjo është e gjitha në fund të fundit të njëjtën gjë. Ja tetë centë AKA një bajt, thjesht zhargon të thjeshtë. Pra, të gjitha këto llamba janë off. Pra, matematikë është në të vërtetë me të vërtetë e lehtë. Pra, ka të drejtë, edhe pse është e vogël për të parë, është një shtylle të, twos, katër këmbët, tetë, 16s, 32s, 64s, 128s. Mirë, ndoshta është e vështirë për të mësuar përmendësh në fillim, por është shumëzuar vetëm nga dy nga e djathta në të majtë. Pra, ju gjithmonë mund të krijoni këtë. E pra, ata janë të gjithë jashtë në mënyrë që të 0 herë placeholder, 0 herë placeholder. Pra, ky është numri 0 përfaqësuar në binar. Me fjalë të tjera, si mund të shkruani numrin ne e dimë si të 0 në binar? E pra, një, dy, tre, katër, pesë, gjashtë, shtatë, tetë, dhe teknikisht ashtu si në dhjetore, të gjitha këto zero kryesorë, ata nuk shtoni ndonjë gjë për të formulës ata janë vetëm atje, sepse ne kemi vendosur në mënyrë arbitrare ne doni tetë nga këto gjëra me radhë, e drejtë. Nëse ata janë objekte fizike, ne kemi tetë në mënyrë që ata kanë marrë të gjithë të jenë të. Pra, ne mund të kemi marrë vetëm larg me një zero. Pra si mund të përfaqësojnë një numër? E pra, instinktivisht do të jeni për të hedhur një nga të ndizet. Ju jeni do të kthehet në një llambë. Pra, ka një numër, sepse ne tani vënë një, një llambë dritë që është më, në pozicionin e vet. Si do të shkojmë për të përfaqësuar të dy? E pra, ne jemi në fakt do të hedh dy çelsin e tani te pakten kundrejt këtë shtet, ne duhet të kthehet në dy kolona për të fikur ato kolona dhe tani ne kemi vlerën e një në kolonën twos. Pra, kjo është vlera e përgjithshme e dy. Tani, një ushtrim të shpejtë mendor, çfarë do të ndodhë me rend e ardhshme? Si mund të paraqesin numrin tre? E pra, kam nevojë për një nga kolona twos, një nga kolona e threes dhe ha ah. Pra, tani unë e kam incremented se një. Dhe tani, ky model përsërit të njëjtën bazë. Sa është numri katër? E pra, le të shohim, unë vetëm nevojë për një në kolonën e katër këmbët dhe pastaj zero në twos dhe ato. Prandaj, ai vazhdon në këtë mënyrë. Dhe, kjo është vetëm kjo sekuencë e hapave. Dhe në idenë e binare nuk është me të vërtetë të gjitha që e komplikuar. Në krye nuk kemi tetë zero. Më poshtë që ne kemi shtatë zero dhe një. Më poshtë që ne kemi gjashtë zero, një, dhe një zero dhe kjo është binar. 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. ] [Qeshur >> 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. ] [Duartrokitje ==== Transcribed by Automatic Sync Technologies ====