>> Davidas: Sveiki, mano vardas yra Dovydas Malan ir tai CS50. Ir tai ne jūsų tipiškų vidurinės mokyklos informatikos kurso. Šis kursas yra mažai kažko ypatingo. Ir ne todėl, kad aš mokyti jo. it's, nes tai yra viena, mums patinka galvoti, tų retų kursai faktiškai išspaudžia savo smegenis tiek ir jūsų tvarkaraštis tiek daug, kad semestro pabaigoje jūs tikrai manote, protingesni. Taigi, tai buvo taip aš jaučiausi, kai aš paėmė šį kursą atgal 1996 metais. Buvau vyriausybės pagrindinių tuo metu čia gyvena Mather Namai. Ir, I. [Atvykeliu pasveikinimas] kaip ir kitos, kitos penkios yra. Taigi, buvau vyriausybės pagrindinių tuo metu. Ir man buvo valdžios pagrindiniai nes aš visada patiko istorija. Man patiko konstitucinės teisės vidurinėje mokykloje. Ir taip, aš užskaityti šiame kelyje pirmakursiams metų daryti tai, ką aš geriausiai, daryti tai, ką aš žinojau, man patiko. Ir aš visada buvo šiek tiek Geek, aš visada babbled su kompiuteriais. Tačiau aš, galbūt ironiškai retrospektyviai, aš visada žiūrima vaikinai, kurie vartojo informatikos mano vidurinės mokyklos, mano draugai, nes tikras Geeks. Ir dar, pagaliau padariau, antrakursis metus aš tai mažai žinoma, vadinama CS50, kurios faktiškai buvo išsigandęs mane savo pirmakursis metus. Ir aš apie padėjėju tuo metu. Taigi, aš, žinoma, buvo jau kvalifikuota mažiausiai turi būti tarp tų, tų Geeks, kurie man padarė įdomus vidurinėje mokykloje. Tačiau, aš bijau. Yra, ji šiuo metu reputaciją ir galbūt dar dalis, kad ji buvo baisi metu. Tai buvo daug darbo. Tai buvo sunkus ir dar, tai vienas iš tų dalykų, kur, mano Dieve, žievė buvo daug blogesni nei jos įkandimas. Radau sau antrakursis metus, pirmą kartą, iš tikrųjų rasti namų darbas įdomus. Ir aš nesakau, tai tik žingsnis Šis kursas jums. Tai buvo tikra realizavimą man. Dabar, manau, ne vienas taškas, aš liniją true geekdum, kur aš iš tikrųjų naudojami, kad nekantriai laukia penktadienį vakare, nes aš susirangyti priešais mano mažai MacBook ir darbo CS50 problema rinkinių. Taigi, šioje vietoje, manau, buvo aiškiai per liniją. Ir mūsų tikslas šiame kurse nėra ruožtu visus jus į tą žmogų, bet, tiesiog pasakyti, kad yra šiek tiek kažką ypatingą apie šį kursą, šiek tiek kažką ypatingą apie kompiuterių mokslą apskritai, ypač šių dienų. Ir daugiau acclimated mes visi pateko į technologijas, tuo labiau žaislų mes nešiotis mūsų kišenes, kad patys kompiuteriai. Aš turiu galvoje, mano iPhone yra tikrai aukštesnio produktyvumo kompiuteris kaip mano nešiojamas buvo kolegijoje. Tai galite padaryti gryno dalykų su šių dalykų. O dabar, daugelis iš mūsų šiame kambaryje, tikriausiai tiesiog kitų žmonių programinės įrangos, kitų žmonių įrankių, kitų žmonių problemų, nes mes einame į iTunes, mes atsisiųsti iš App Store ir Walla mes galime padaryti kažką tikrai tvarkingas app. Tačiau iki šio pusmečio pabaigos, jums gali būti asmenys, dirbantys, kad problemų sprendimas. Galite būti asmuo išspręsti kai problema, pastatas, APP, kad programinės įrangos vienetas, kad priemonė, kuri, nors, tik vienas amuses man amuses jums. pavyzdžiui, kontrolės, tarkim, iTunes biblioteką iš savo butų aiškiai app kuri jau egzistuoja arba jūs galite rasti vėžėjas tvarkaraščiai lengviau pavyzdžiui. Taigi iš tikrųjų, vienas iš pirmųjų dalykų aš išgėrus CS50 vėl, jis tikriausiai šiuo metu penktadienio vakarais ir šeštadienio vakarais, ten buvo toks tuo metu, kai Harvardo bėgo vėžėjas autobusai galimybė. Ir iki šios dienos, jie vis dar spausdinami grafikai. Bet ten tikrai buvo ne tai internete rasti, kada kito vėžėjas buvo. Dabar, aš ne priežiūros, nes nors aš gyvenau Mather Aš ne iš tų, kurie paprastai užima uostą. Tačiau, aš turėjau daug draugų, Pfoho pavyzdžiui. Ir vienas iš jų paprašė manęs, manau, kad ne vienas taškas. [Atvykeliu pasveikinimas] Gerai Pfoho geriau nei Mather matyt. Taigi, vienas iš mano draugų rūšies gavo mane galvoja gal aš galiu parašyti šiek tiek programos rūšis padėti savo draugų patikrinti vėžėjas grafikus. Ir taip gimė keblioje pavadintas vėžėjas berniukas, šis žodynas kad liko apie kai keletą metų bent jau tarp kai kurių upperclassmen gabalas. Tuo metu tai buvo šis mažas komandinės eilutės programa panaši dvasia DOS. Buvo veikia UNIX aplinkoje. Taigi, jis nebuvo labai seksualus ne visiems. Jūs ką tik įvedėte pora komandos ir jis pasakė jums, kai Kėlimai buvo. Na, šių dienų jis yra šiek tiek sudėtingesni. Ir jis iš tikrųjų atstovauja tiksliai projektų, kad studentai šio kurso pabaigos iki priėmimo sąlygos pabaigos rūšys. Taigi, tai yra versija keturi, apie 15 metų, iš Shuttleboy. Atrodo, "Google Maps" yra šiek tiek lėtai ten. Tačiau tiems, kurie turi iš čia dingti po klases ir eiti, sakykime, nuo Memorial Hall ir reikia eiti į, tarkime, Quad. Na, galite palikti dvi minutes, jei pagal tai tikrai nėra dirba jums tiesiog dar, ar turite tiek daug kitų galimybių, kaip norėtumėte. Ir netrukus, mes galime žingsnis šios nuo CS50, bus priskirti tie patys pajėgumai per SMS. Galite tekstą Shuttleboy telefonu. Jūs vadinate Shuttleboy. CS50 telefono numeris šiais metais, gerai, nuostabiai tai buvo prieinama, 617-bug-CS50. Taigi, kad bus debiutas greičiau. Taigi nekyla tai tiesiog dar, nes aš Dotarłeś papeikimą už, dabar jis yra nukreiptas į mūsų sistemą galva mokymo kolegos's mobilųjį telefoną. Taigi, jūs ką tik gauti jį, jei turite klausimų apie vėžėjas tvarkaraščio. Bet, kad greitai bus įgyvendinta. Taigi, kitų dalykų, iš tikrųjų, kad mes patys išleista šią vasarą dėl tikrai rengiantis šį semestrą buvo visa krūva kitų problemų, kad mes norime išspręsti. Pavyzdžiui, ten visai daug dalykų, kas vyksta šiame mieste ir tam tikrą dieną. Ir iš tikrųjų, Kitaip tariant, ten visai daug dalykų vyksta ne tuo kampusie, kad aš tikrai niekada pasinaudoti. Ir, nors aš dabar dirba su kiek daug dalykų, kurie vyksta, miesteliu, aš vis dar atrodo, niekada rasti laiko. Bet Walla, net ten, CS50's paskaita. Štai kur yra, todėl tai buvo, tai buvo programa rašėme sujungti visus apie įvykius universitete. Ir tai buvo kažkas, kad kiti studentai tame pačiame žinoma, spręsti savarankiškai. Ir mes dirbti su kitų subjektų veikla universitete tikrai, kad tai įvyktų. Bet punkte CS50 šis terminas yra tas, kad visų šių mažai programų mes dirbame dėl to, ar tai vienas ar viena sudedant visus Harvardo naujienos vienoje vietoje, visi Google News, visi šie dalykai vyksta, kad kas vadinami API, taikomųjų programų sąsajos. Ir tai tik išgalvotas kalbėti nuomos kitų žmonių gebėjimus, žmonės šioje salėje, iš tikrųjų ką nors su tuo pačiu duomenų. Taigi, iki terminų, jei jums nuspręsti taikyti galutines projektų, susijusių su naujienos ar įvykiai arba žemėlapius, gerai mes, bent jau, žinoma, bus, kad visi daugiau paprasta šiemet suteikti jums sąsaja; tarsi funkciją, taip sakant, programinės įrangos, kad galite naudoti savo projektuose į nepaminėtų, kur studentai, galbūt, nuėjo kadaise, nes šios sistemos nebuvo įdiegtos jų. Ir vėl, tai viskas prasidėjo, man bent jau, kai prieš 15 metų įgyvendinimo Shuttleboy. Tada aš išsiųstas mano draugas Kenas į Pfoho. Sakiau hey what do you think? Ar tai naudinga? Jis išsiųstas jį ant Pfoho atidaryti sąrašą ir Walla, visus šiuos metus vėliau aš matyt dar melžimo šį projektą. Ir tvarkingas dalykas, apie tai, ir tai, kai per daug patiko šį kursą inžinerija ir kompiuterių mokslas, manau, yra šiek tiek ypatingas, kad, kai jūs savo namų darbų ir kai jūs savo projektus šiame kurse, jūs žinau, daugelis iš jų, taip, jūs atidėti ir tikrai ne naudoti dar kartą. Tačiau, kai ji, jums bus. Ir ten tai tikrai galingas dalykas, bent jau man, tai tikrai įdomus dalykas, kai jūs darote kažką, o kiti žmonės faktiškai priežiūros, kitų žmonių ne tik šypsena ir paglostyti savo pusėje ir tada tarsi vaikščioti savo gyvenimą. Jie iš tikrųjų panaudoti tai, ką jūs padarėte savo gyvenime net jei jis ko nors, kaip kvailas ar taip paprasta, kaip tik rasti, kai jie gali gauti iš čia pagauti kitą vėžėjas su Quad. Taigi, iki terminų, kad vienas iš šio kurso tikslus; suteikti jums vaikinai tik nustatyti ir tam tikrą problemą, ar tai dėl universiteto arba tikiuosi daugiau nei universitetų, ir iš tikrųjų panaudoti savo gebėjimus, savo paties proto ir išspręsti šią problemą kai kuriose dalis, technologiškai. Taigi, tai yra taip pat žinoma kaip mes kalbame programą ir kursai oficialų aprašą, kad moko jus, kaip manau, ir jis moko jus, kaip spręsti problemas efektyviau. Na, ką tai reiškia? Na, kai you've got 600 megahercų kišenėje arba trijų gigahercų pagal jūsų stalo namuose, galite išspręsti daug problemų efektyviai, tiesiog šlyties brutalia jėga. Bet, čia problemų šiame pasaulyje daug, ar jis ieško, pavyzdžiui, "Facebook" tinkle arba naudojant "Google" internete, kad nesvarbu, kaip greitai jūsų kompiuteriui yra, nėra į pragarą, kaip jūs ketinate paieška milijardai interneto puslapių greitai, nebent jūs iš tikrųjų požiūris šią problemą protingai. You don't just paiešką, pavyzdžiui, milžinišką sąrašą visų tinklalapių žemėje nuo viršaus iki apačios ieškote ko nors, susijusių su bet kokia paieškos žodžius ieškote tikiuosi "Google" ir Turbūt "Google" ir "Facebook" ir bet kurios šių didelių organizacijų turėti protingų žmonių mąstymas apie tai, kaip jie gali rasti duomenis greičiau aikštelė, kaip jie gali apdoroti informaciją efektyviau ir, kaip jie gali tiesiog paprastai grįžta rezultatų greičiau, kad būtų galima padaryti dar daugiau įdomių dalykų su šių įrenginių. Ir taip, kas tai, nors, pagal tai, kaip, mokant žmones mąstyti atidžiau, daugiau algorithmically. Na, tai šiek tiek vizualiai visada atrodo, kad eiti per gerai. Ir, atrodo, bus įsimintina. Ir aš net paprašė tik vakar buvęs studentas, oh jūs ketinate daryti adresinės dalykas dar kartą. Ir aš beveik iš karto nusprendė gerai sure we'll sukurti adresinės dalykas. Ir jis manęs paklausė, kada sugriauti per pusę teisė, aš, kaip gerai yeah techniškai mes sugriauti per pusę, bet ne taip, kaip, kad informatikos būdu galėsiu Nutraukti šį pusmetį dalykas. Ir taip, čia buvo problema, kad mes pristatė laiką. Taigi, čia yra telefonų knygoje. It's got bent tūkstantis, arba tiek puslapių. Ir paprastą tikslą po ranka labai realus pasaulis surasti, ty, jei žmogus čia. Taigi, Mike Smith, pavardė pradedant S. Taigi, I'm tipiškas žmonių, galiu pasiimti šio telefono knyga. Ir kas nors ten, kas jums būdinga asmenims, kurie pradėti ieškant Mike Smith, akivaizdžiai nežinant iš anksto, kokį puslapį, jis iš tikrųjų yra. Teisė, taigi tu maždaug per vidurį, dešinėje. Ir tai istorija punkte, aš tikriausiai N's arba M, jūs žinote, kuriuos reikėjo atlikti įpusėjus knygutės. Pasirodo, paskutinį kartą aš Šiame pavyzdyje aš kažkaip atsidūriau palyda skyriuje. Taigi, tai tikrai ne tiek pat subalansuotas tarp per M ir N iki Z. Bet šiandien mes esame, iš tiesų, M, gerai taip, dabar aš ne M. Bet kas mano Takeaway dabar tiesiog kaip normalus žmogaus off gatvėje? Kur eiti toliau už Mike Smith. [Tylus] Ir tokiu būdu, tik tikriausiai šis pusės, dešinėje, nes S ateina po M. ir taip, čia yra vizualiai dramos. Tai nėra tikrai ašarojimas jį į pusę, teisė. I rūšies apgauti per vidurį. Tačiau dabar mes žinome, kad Mike yra bent ne toje pusėje. Mes galime tiesiog mesti pusę nuo problemos. Ir aš kairėje su problema, kad yra iš esmės vis dar tas pats, rasti Mike Smith tikrai didelis knyga. Bet problema dabar yra pusė didelės. Jei ji tūkst puslapius, dabar turiu 500. Žinai ką, aš galiu daryti tą patį dar kartą. Galiu rūšies rekursyviai ar nuolat daryti tą patį. Dabar esu ne visai ne S. I'm at T. Ir taip, oh Aš šiek tiek per toli. Bet aš žinau, kad dabar Mike nėra į dešinę, ten bus kai klasės kada nors, kai aš negaliu ašarų užtvankos dalykas, aš deposits. Bet dabar aš žinau, jis neturi teisės. Taigi, dabar problema buvo tilpti. Taigi, aš atvyko iš tūkstančių iki 500-250 lapų. Ir dar, jei ir toliau logika, toliau matematika, aš kapojimo šią problemą per pusę per pusę per pusę, kol galiausiai aš arba ketina rasti jokių Smith ne visi, vargu, ar aš norėčiau rasti vieną I'm looking for. Bet, kad tada, kyla klausimas, ar tai geriau nei paprastas požiūris tiesiog pasakyti, žinote,, NE, B, Ne, pradedant iš kairės į dešinę vyksta tiesiškai per knyga? Na, instinktyviai taip. Tai bus žymiai greičiau. Tačiau, kiek mažiau? Na, jei aš tūkstantį puslapio telefonų knygoje arba tarkim 1024 Tiems iš jūsų, kurie mėgsta įgaliojimai du, kiek laiko galėtų aš turiu padalinti šią problemą per pusę prieš nuspręsdama, p. Smitas? >> Ten. > David: Taigi, dešimt, teisė. Jei turite 1024 puslapių, ir jūs juos padalinti per pusę per pusę per pusę per pusę, aš padaryti, kad dešimt kartų, o tai reiškia aš einu iš 1000 puslapių su asmeniu, I'm looking for vos dešimt puslapių posūkiais. Ir tai rūšies tvarkingas, bet, žinote, jei jūs manote apie tai jūs veikėte šį visą savo gyvenimą. Tai nereiškia, kad dramatiška. Bet dabar, kad knygutės yra ne tik Bostono, tai visai JAV ar visame pasaulyje ir tai, ką turi milijardus puslapių, taigi įsivaizduoti keturių milijardų puslapių knygutę. Kiek puslapį apsukimus I am going to turi padaryti maksimaliai rasti Mike Smith keturis milijardus puslapis telefonų knyga? >> Prisijungti bazės du. >> Davidas: Taip Taip, jei esate pobūdžio matematikos tipo tai Prisijungti bazės du. Tačiau, jei manote, 4-2000000000 to one mlrd todėl pusė milijardo. Aš turiu galvoje, kad faktiškai vyksta whittles pati žemyn pretty darn greitai. Iš tiesų su 32 halvings iš adresinės net iš keturių milijardų, aš gausiu iki vieno puslapio. Ir tai, kai ši medžiaga tampa galinga, manau. Štai kai šias idėjas gauti įtikinamų kai jūs galite turėti keturis milijardus puslapis problema ir 32 veiksmų, kuriuos galite rasti asmenį, ko ieškote. Ir taip, tai ką reiškia, kai sakome, kad jums išmokti mąstyti atidžiau, daugiau algorithmically, racionaliau apie problemų sprendimo būdus. Ir grįžta didžiuliai, kai jūs iš tikrųjų galite tai padaryti ir vėl, kad šis pasaulio Facebooks kurie turėti didžiulį duomenų rinkinių prabanga Googles punktas. You've got to požiūrio šių tokiu būdu problemų kitaip jis tiesiog negali išeiti į darbą. Na, kas ką studentas faktiškai priminti? Aš, mes, kaip daryti dalykus, kurie yra šiek tiek kvailas kartais tarsi imasi Wymknąć, kas yra kitaip naujų daug medžiagos. Ir taip, jis iš tikrųjų, šis buvęs studentas atsiuntė man šį saitą kuris nuėjau į priekį, tik prasideda tada apgailestavo, kad pabaigoje, ištrauktas ant utube čia. Taigi, aš maniau aš pasidalinti ką ne kompiuterio mokslininkas reiškia, kai jis ašaros adresinės per pusę. [Juokas] [Tyla] [Tylus] >> Žinai daugiau kaip 200 puslapių, gražus švarus linija, teisėtų ašarų. [Juokas] > David: taip, manau, jo taip dirba per. Taigi, ką aš gavau iš šio kurso visus metus yra teigiamas, Shuttleboy, tada taip kompiuterių mokslo laipsnį, ir tada taip PhD in Computer Science. Ir tai ne tai, ką mes bandome kreiptis dauguma studentų į šį kursą į. Daugelis iš mūsų į šį kursą ne Išvykstate pagrindinių kompiuterių mokslo. Kai kurie iš jūsų gal kelis, bet kai kurie iš jūsų, tai bus galutinis kursą. Ir tai visiškai gerai, nes šį kursą, iš tiesų, taip suformuotos, kai net jei jūs tiesiog sumokėti savo mokesčių už kelis mėnesius ir tikrai dėmesio ir tikrai ima, kiek iš šį kursą, kaip jūs galite, jūs, visų Tiesą sakant, būti gerai pasirengęs grįžti į savo pasaulį, ekonomika, biologija, psichologija, taikomosios matematikos, ir iš tikrųjų panaudoti tai, kas galiausiai kaip įdomų kursą, mes tikimės, kad konceptualiai, nes iš esmės įmanoma. Ir tai taip pat yra kažkas, kas galbūt šiek tiek retai galima rasti. I thought I'd share keletą pastabų, kad studentai iš praeitą rudenį įdėti į šį pastaruosius metus trunkančius vadovas paklaustas apie tai, ką norėtumėte pasakyti būsimiems studentams. Na, jei jūs dar pažvelgė į šias pastabas, vienas studentas atsakė šis kursas bus nemažos laiko iki. tačiau, jei jūs įtraukėte savo darbą į visiškai naują pasaulį, visa, jei jūs įtraukėte darbą, jei jūs įtraukėte darbą paversti, gerai, kad tai jo gramatika ne mano, taigi, jei jūs įtraukėte, įdėti į darbą, visiškai naują pasaulį atvers jums. Amazing, kiek supratau, tik 12 savaičių. Kitas studentas parašė, tai geriau į tai ar jūs ketinate gailėtis. Kitas rašė, šiek tiek daugiau Atvirai kalbant, ji bus ateityje savo subinę ir palikti jums jausmas puikus. Ir pagaliau, ši yra galbūt aš galiu rodyti tik raštu, tačiau, antra nuo apačios čia. [Juokas] Taigi, I'm not sure, jei turite daug draugų, kurie buvo šio kurso, bet mes tipo padarė žalos praėjusių metų studentų daug. Mes pristatėme, pradžioje kelios paskaitos, kelias viktorinas, pora problemų rinkinius, šis lolcats sąvoka. Jūs negalite matyti, ką matau čia, o tada pamatysite jaunas žmogus vadinamas laimingu katinu, kuris yra vadinamas lolcat lyderis. Tai yra vienas kvailas interneto priekį, kad manau, atvirai tarp šių dviejų ponai dichotomija čia ir ką dabar turime ekrane turbūt. [Juokas] Vienas iš netinkamo vartojimo, šio teatro dienos. Ir kodėl ne mes šiek tiek daugiau realaus šiek tiek daugiau asmens tai realiai išspręsti problemą efektyviau sąvoka. Paprasta problema dieną vienas bet mokyklos yra susėsti ar atsistoti ir pradėti skaičiuoti studentams, teisė vardiniu rūšių. Na, dauguma naivus, bet vis tiek, labai teisingas požiūris, kad dėstytojas galėtų imtis yra viena, dvi, trys, keturi, penki, šeši, septyni, ir mes čia gana ilgą laiką. Taigi, kas šiek tiek pagerės apie tai net, kad jums gali tekti padaryti, kaip vaikas? Kaip suskaičiuoti žmones greičiau? Ir nepradėkite rodmuo savo instrukcijomis? Ką padariau, kaip vaikas? Pradėti skaičiuoti po du, tiesa, kaip kad aš labai gerai dviejų, keturių, šešių, aštuonių, dešimt, 12. Taigi, tai ką nors įdomaus teisė. Taigi, kiek tobulinimas yra ta, kad? Taigi, tai akivaizdžiai du kartus. Ji mano, man pusei metu. Bet, žinote, kas, kaip mes rasime visą šį semestrą, baisi, kaip pagreitinti jūsų važiavimo laikas, tiesiog du faktorius yra ne visi, kad įdomus, nes analogas čia kompiuterių pasaulyje, kad aš CPU Aš kompiuterį, bei gi, jei aš tiesiog laukti 12 mėnesių, 18 mėnesių, aš kompiuteris tiesiog, kad galėtų pagal savo pobūdį, pagal gigahercų skaičius turiu man galėtų tikėtis žmonės šioje salėje greičiau. Taigi, šių rūšių, šių linijų speedups kaip veiksnys du faktorius trijų rūšių, net faktorius dešimt, who cares? Teisė, mes galime mesti aparatūros ne problema. Mes galime palaukti bylą. Mes galime sukurti greičiau mašinos. Bet intelektualiai, yeah, kad buvo tipo protingas, bet jis iš tikrųjų iš esmės pakeisti problema. Aš vis dar vyksta iš kairės į dešinę, priekyje atgal. Tai tikrai tas pats algoritmas. Bet galiu pasiūlyti, kad mes galime padaryti geriau. Galime protingesni nei tai ir padaryti iš esmės greičiau įgyvendinti. Bet tai įrodyti, mes turime jums humor mums tiesiog metu. Ir tai šiuo metu, kai jis bus man kalbėti mažiau ir jūs kalbate daugiau. Bet man reikia jums vykdyti žingsnis viena drauge, kuri, jei galėtumėte humoras, prašome atsistoti. Kryptimis čia ant lentos, jūs žinote, yra gerai, jus pora, turi atsisėsti. Tie iš jūsų, iš nugaros, kad mes einame, gerai. Ačiū. Taigi, programa čia yra prieš jus. Dabar kompiuterių vykdant šią programą. Tai gana savaime suprantama šiuo metu. Taip, jums turėtų būti numeris vienas. Viskas aišku? Teisė, daugelis iš jūsų tikriausiai galvojate tai jau bet kokiu atveju, pirmosios pirmakursis metus. Taigi, manau sau, tu numeris vienas. Taigi, žingsnis trijų čia, poromis su stovintysis, pridėti savo du numerius kartu ir priimti šią sumą kaip naują numerį, o mes normalumas patikrinti. [Noises iš minios] Ar žinote kiek turime? >> [Tylus] >> Ne [tylus]. >> Mums reikia, kad atsakyti į pagrindinius. [Tyla] >> Taip. [Noises iš minios] > David: Šiuo metu algoritmas turi būti uždaryti. [Noises iš minios] Gal nuėjo su mano požiūris nuo visų. >> 43. >> 163. > David: Ooh aritmetinis prieš 300 Plus žmonių. [Juokas] Kas mūsų galutinis sutampa bus? >> 180. [Juokas] >> 1200. >> 386. > David: 386, ir jūs norite būti paskutiniai stovinčiam? Ar tai visi? Ar žinote atsakymą? >> Kas? > David: Ar žinote, ką atsakyti? Mes nesuteikė atsakyti į pagrindinius su mumis taip, 386 yra iš tikrųjų būtent teisingą atsakymą pirmą kartą. [Atvykeliu pasveikinimas] [Plojimai] That's okay. [Plojimai] Labai, labai gražiai padaryta. Taigi, kas buvo Takeaway nes tikrai jaučiamas šiek tiek lėčiau nei mano labai paprastas, bet vis tiek labai teisingas požiūris tik ketina onesies ir twosies ir tik gauti jį padaryti su iš kairės į dešinę. Tačiau, ką mes tikrai tik ten daryti? Na, jei ten buvo maždaug, tarkim, 400 iš jūsų nuolatinio vienu metu, tada pusę jūs labai greitai, nuo to, ką galėčiau pasakyti, norėjau atsisėsti. Taigi, pusė iš jūsų atsisėdo, nuėjome 400-200 tada iki 100 tada iki 50 po to 25. Taigi dar kartą, ten ta pati skaldyk ir valdyk idėją mes su telefonų knyga. Vėlgi, su kiekviena iteracija mes perpus problemos mastą, mes per pusę, mes per pusę jis. Taigi, teoriškai, jūsų algoritmas turėtų buvote daug greičiau nei mano linijinis metodas, nes mano požiūris būtų jau imtasi pasakyti 400 laiptelių, o gal, jei aš šiek tiek protingas 200 žingsnių. Bet tavo tai jau ėmėsi daug mažiau, teisė 400-200, 100, 50, 25, 13, šešios, taigi mažiau nei dešimt žingsnių pabaigoje, lyginant su mano 200 arba 400. Ir tai, kad labai įdomi mintis gemalų. Ir taip, matematiškai ką tik padarė buvo kažkas, kad yra šiek tiek Logaritminė ir gamta Prisijungti bazė dviejų, mes suskirstyti į dvi ir dvi dar kartą. Ir mes peržiūrėti šį vėliau šį semestrą. Bet jame yra dar labai protingas įgyvendinimą. Ir mes tiesiog braižymo labai protingas labai protingas veiksmingą požiūrį į problemas, mes galime pagaliau išspręsti paviršiaus. Taigi, kas yra tie žmonės, ką tik kalbėjosi su jei trumpai? Bendras interesas Žinoma, kaip tai, kad visi į kairę nuo jūsų ir kad kiekvienas iš jūsų teisė turi būti aiškiai žino daugiau nei jūs. Na, tai tikrai ne tas atvejis. Ir iš tikrųjų, pastaraisiais metais, šis kursas padarė suderintas pastangas siekiant užmegzti ryšius su mažiau patogūs, todėl kalbėti. Ir, kad mes tai ne žmonės, kurie niekada liesti kompiuterio prieš, nes tai tikrai sunku rasti netoli šių dienų, tačiau žmonės, kurie naudoja elektroninį paštą, naudotis "Facebook", gal net jau dabar, tačiau nebūtinai visiškai tikras, ką daryti, kai kažkas negerai, arba kai jie yra prašomi apie viską technologijų, žinote, rankų eiti ar jos rūšies stumti aparatūros draugui kas galbūt labiau išmanantis ji nei jie. Na, tai tik keletas iš praeitų metų pusmetį statistiką. Taigi, kai paklausiau, kai mes paprašėme mūsų 400, kad studentai ir pernai, jūs žinote, kas yra jūsų komforto lygį ateinančiais į šią klasę, bei 34% rašė patys, nustatantis, kaip vienas iš tų, mažiau patogus. Taigi, jei turite ateiti į šį kambarį ir vis dar galvoju dabar, kad žinote, ką šis terminas mažiau patogūs apibūdina mane, žino, kad esate labai gera kompanija. Tačiau, reikia suprasti, per, kad, jei jūs dar šiame kurse su kompiuterių mokslo fone ir tu tikrai kad Geek vidurinės mokyklos ir vidurinės mokyklos, kurie buvo rašyti kodą ir mokymo save kalbomis, gerai, kad tai gerai, nes ten tikrai nontrivial dydžio auditoriją, kad fonas taip pat, apie 13%, paskutinis terminas. Ir tada, ten visi kiti, tarsi kažkas, kas nemano, jie mažiau patogūs, jie tikrai nemanau, kad jie daugiau komforto, tačiau jie tik žinoma, kad gauti kažką iš jo. Taigi, suprantame, kad tai žinoma nėra parengti gana studentų spektrą. Ir įdėti šią nuorodą į daugiau konkrečiai, 71% studentų, pernai turėjo nulio kursai už juos. Taigi, jei jūs įvedate šį kursą mąstymas oh kiekvienas, CS50 buvo kompiuterių mokslo nusišvilpti į vidurinę mokyklą, jis nėra šiuo atveju. Dauguma žmonių, matyt, tiesiog įdomu. Ir keli, taip, visiškai ėmėsi tam tikrų kursų, kai, ar bent vienas asmuo, praėjusiais metais užėmė penkis kursus anksčiau. Taigi, mes tikrai turi tam išskirčių bet vėl kreivės mėsa tų mažesnių verčių apskritai. Ir dar vienas įdomus statistinis mes bendrai per pastaruosius kelerius metus yra lyčių santykis. Taigi, istoriškai, bent jau informatikos, egzistuoja vyras moteris nerijos bitų. Aš prieš porą metų buvo daug didesni negu pernai. Taigi, mes beveik dabar% 40 lygio. Ir jei aš galiu nusimesti pirštinė tik turėti trečiosios pie chart kitais metais dėlei, tai dar labiau teisinga. Norėčiau pabrėžti, kad yra absoliučiai jokių kursų perspektyvą, vyrai ir moterys neturėtų būti įtraukiant į tai, žinoma, natūra priežastis. Santykinai vienodo skaičiaus ir realizuoti iki 38 procentų, 48 procentų, mes tikrai labai malonu, kad mes beveik tuo, kad bent jau statistiškai net vertę 50%. Taigi, jei esate iš tiesų, moteris, daryti poilsio užtikrinti pernelyg, kad tai nėra iš tikrųjų vyrų dominavimo lygio. Na, tai tiesiog taip atsitinka, kad CS50 20-metų jubiliejų. I gerai, ačiū. [Atvykeliu pasveikinimas] [Plojimai] Tai labai gražus ir jus, nes mes atnešė tortą jūs iš tikrųjų. Ir taip, kai tik išeinate iš čia vėliau šiandien, jūs iš tikrųjų gauti galimybę susitikti daug kursų mokymo bičiulių, kurie bus išlikęs iš prieškambario. Ir taip jis bus gražus tarsi suinteresuota sumažinti būdas išspręsti mokymo bičiuliai. Tačiau, mes nuvykti iki šiek tiek duonos ir vėl atitiktų kursas žaismingas pobūdžio, o vis dėlto tikisi nontrivial darbo krūvis, o mes taip, kad įdomus. Tačiau, mes turime vieną iš šių jums pyragai. [Juokas] Taigi, jei jūs juoktis, kad iš tikrųjų gerai, nes net jei esate tarp vienos iš šių mažiau patogūs bent jūs tai suvokia. Tie iš jūsų, iš 14 proc norėti tai skonio. [Juokas] Ir tada, jei jūs nežinote, kas po velnių vyksta dabar, mes taip pat turime tai už jus atgaivinsiu. [Atvykeliu pasveikinimas] [Plojimai] Taigi, tas yra sukapoti į gabalus ne kaip mes kalbame. Taigi dar kartą, gal imtis ko vienu žingsniu ir bent nustatyti keletą pagrindinių nuomininkų, kad mes tada priimame kaip savaime, per likusius šio semestro. Taigi, mes visi tikriausiai žinote, kad kompiuteriai galiausiai išgarinti kažkaip į nulių ir, visa tai vadinama bitais. Ką tai reiškia? Na, galite galvoti apie tai atvirai, kaip elektros lemputės, šiek tiek yra lemputės tai tiek ar jis off. Tai jungiklis, tai tiek ar jis off. Dabar, kompiuterių specialistų apskritai galvoja ne kaip nulis savavališkai ir ir sąvoka m. kaip vienas. Taigi, jei mesti šviesos įjungti, kad vienas ją išjungti, kad yra nulinis. Arba analogiškai savo ruožtu atsižvelgiant į tai, kad tiesa, išjungti ją tai neteisinga verte. Taigi, tai tik sinonimai. Į dienos pabaigoje, taip, visi skaičiavimas, visų daiktų, kurie vyksta po visų kompiuterio dangtis ar galiausiai skliautais į nulių ir. Ir, kai jūs stotelėje, kad apie tai galvoti, ji gana užtvankos puikus, ką pasaulis turi padaryti su šiomis blokai, įskaitant tam tikrus įtaisus jūs rankoje. Na, kodėl nulių ir naudinga? Mano Dieve, net ir realiame pasaulyje, mes bent jau dešimt skaitmenų, nulis per devynis. Kodėl toks ribotas? Na aparatūros sąlygomis tai labai lengva. Tai daug lengviau atstovauti dvi valstybės, teisės. Jei kompiuteriai yra prijungti prie sienos, paprastai jūs turite tai paprasta šaltinis dviejų komponentų pobūdį. Tai arba įjungti arba išjungti. Elektros energija teka arba taip nėra. Taigi, tai tipo vienas pradinis priežasčių, kad pasaulyje buvo vos nulių ir kompiuteriais. Tačiau, galite juos naudoti kaip sudedamąsias dalis. Taigi, tai iš tikrųjų yra šiek tiek mažas ekrane čia, o mes galime tikėtis iš dviejų komponentų ar mes galime atstovauti nieko mes norime dvejetainiu kaip mes galime, tarkim, dešimtųjų, kaip mes galime net ir tai, su abėcėlės raidėmis. Ir taip, čia greitas sistema. Vos pora minučių jūs jau žinote, kaip skaičiuoti, kaip rašyti, kaip kalbėti dvejetainiai panašiai kaip savo nešiojamas. Na, jūs, visų dviejų komponentų, tarsi pasaulio, kaip ir pradinėje mokykloje stulpelių reikšmes. Taigi, pradinėje mokykloje mes mokomės tai tie skiltyje tai dešimtys skiltyje, šimtai stulpelių ir kt. Kitaip tariant, kodėl yra skaičius žinome kaip 123 numeriu 123? Na, mano mokytoja mane išmokė, tai tie, kolonėlės, tai buvo dešimtys, tai buvo šimtai. Na ką tai reiškia? Na, išsiaiškinti, kas bendra vertė yra tai, kas kitaip skaitmenų seka, tik maišos ženklai ant lentos. Na, mes turime vieną 100, kad yra 1 kartus 100 ir tada pridedant kas du 10's so that's 2 kartus 10 plius trys yra, su tuo, kad yra 3 kartus 1, gerai, kad aš, atrodo, Dotarłeś atgal, iš kur aš pradėjau. Tačiau tai labai paprastas procesas, tik padauginus skaičiai pagal stulpelio reikšmė yra būtent tai, ką dvejetainiai is all about. Bet dvejetainiu naudoti galios du ne galios dešimt. Taigi, čia yra aštuoni lemputės serijos. Kompiuterių specialistų, kaip naudoti vertybėmis, pavyzdžiui, dviejų iki aštuonių ir 16 ir 24 ir 32, nes jie visi apskritai patogus vertes naudoti. Taigi, kai kalbame apie aštuonių dydžių seka tai kaip vadinamas byte. Ir šiomis dienomis mes retai kalbėti tik baitų, mes kalbame megabaitų gigabaitų terabaitų ir šių dienų. Bet viskas galiausiai tas pats. Štai aštuoni bitai AKA vienas baitas, tiesiog paprastas žargono. Taigi, visi šie elektros lempučių yra išjungtas. Taigi, matematika iš tikrųjų labai paprasta. Taigi dešinėje, nors jis mažas, kad pamatyti, yra viena stulpelio, po du, keturis, aštuntą dalį lapo, 16, 32S, 64s, 128s. Gerai, galbūt sunku įsiminti ne pirmas, bet tai tik padauginto iš dviejų, iš dešinės į kairę. Taigi, jūs visada galite atkurti šį. Na, jie visi ne taip tai 0 kartų rezervavimo ženklą, 0 kartų rezervavimo ženklą. Taigi, tai yra skaičius 0 atstovaujama dvejetainiai. Kitaip tariant, kaip jūs rašyti numeris žinome kaip 0 dvejetainiu? Na, vienas, du, trys, keturi, penki, šeši, septyni, aštuoni, ir techniškai, tačiau kaip ir dešimtainės trupmenos, visi šie nuliais, tačiau jie nieko formulę jie tiesiog yra, nes mes savavališkai nusprendė mes noriu aštuoni iš šių dalykų iš eilės teisė. Jei jie fizinių objektų, mes turime aštuonis todėl jie gavo visus būti išjungti. Taigi, mes galime ką tik Dotarłeś atsikratyti vienas nulis. Na kaip jums yra numeris vienas? Na, instinktyviai jūs ketinate mesti vieną iš jungikliai. You're going to pasukite lemputė ant. Taigi, yra numeris vienas, nes mes dabar per vieną, lemputės, kad naujo, į vieną poziciją. Kaip vyksime atstovauti du? Na, mes iš tikrųjų ketiname mesti du jungikliai, bent jau lyginant su tokios būklės, turime įjungti dviejų stulpelio išjungti tuos skiltyje ir dabar mes turime vieną po du stulpelio reikšmė. Taigi, tai bendra vertė du. Dabar, greitai psichikos vykdyti; kas nutiks su kita seka? Kaip pateikti skaičius trys? Na, turiu vieną iš po du skiltyje vienas iš trise skiltyje ir ah ha. Taigi, dabar aš didėja, kad vienas. O dabar, tai pačių pagrindinių modelio dar kartą. Kas ketvirtas? Na pažiūrėkime, man reikia tik į keturis skiltyje vienas ir tada nulio poromis ir tie. Taigi, jis ir toliau taip. Ir tai tik šio veiksmų seka. Ir dviejų komponentų sąvoka tikrai ne visi, kad sudėtinga. Viršuje yra mūsų aštuoni nuliai. Žemiau kad mes turime septynias nulio ir vienas. Žemiau kad mes turime šešis nulius, vienas ir lygus nuliui, o tai dviejų komponentų. 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. [Juokas] >> 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. [Muzika] >> 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. [Plojimai] ==== Transcribed by Automatic Sync Technologies ====