[MUSIC JOC] [Aplauze] David J. MALAN: Acest lucru este CS50, Introducerea Universitatea Harvard pentru intelectualul întreprinderile de informatică și arta de programare. Acum, dacă sunteți printre cei care în fiecare an, stau aici cu un pic de nervi în mintea ta, cum ar că tu nu crezi că ți-e locul aici, crezi că cele mai multe cineva stând în jurul tău știe mult mai mult decât tine, este într-adevăr mai confortabil decât la calculator stiinta sau computere mai mult, în general, dau seama că 78% dintre elevii care au acum ia CS50 nu au nici o experiență anterioară. Într-adevăr, există 100 de puncte acolo pe ecran, dintre care 78 sunt de culoare verde solid, care înseamnă, daca esti printre care demografică, sunt în foarte bună companie aici pe afară. Și dacă ești în locul printre 22% dintre elevii CS50 care face într-adevăr au experiență anterioară, dacă în liceu sau un alt program, seama că, de asemenea, va fi contestată în curs. Nu numai că avem trasee diferite pentru elevii mai puțin confortabil și mai mult confortabil la fel în secțiuni, ne-am De asemenea, au așa-numitele ediții ale hackerilor de cele mai multe probleme stabilește că va contesta elevii cu această experiență suplimentară pentru a explora material similar ci dintr-o mai perspectivă sofisticat. Dar ceea ce este informatica? Ei bine, în cele din urmă, ce se întâmplă la Indiferent ca ai explora acest domeniu nu este atât de mult în cazul în care va ajunge în raport cu colegii dumneavoastră, dar unde te ajunge în săptămâna 12 față de unde începe aici în săptămâna zero. Acum calculator science-- bine, hai sa numesc știința de computation-- unde calcul este de fapt doar un mod fantezist de a spune, a lua unele de intrare, producătoare de unele ieșire, și Astfel de algoritmi de funcționare, seturi de instrucțiuni pentru rezolvarea unele probleme cu privire la aceste intrări în scopul de a produce unele ieșire sau soluție în care sunteți interesat. Așa că am avut recent prilej de a călători în în California să se întâlnească cu o absolventă. Numele ei este Susan Wojcicki. Și ea vrea să vorbească pentru a te aici pe video să depună mărturie la cât de aplicabilă chiar doar un gust de calculator stiinta de la nivel introductiv poate fi. Chiar dacă nu te duci pe la urmări informatica ca un câmp, sau chiar de inginerie, sau STEM mai general, veți vedea, de fapt, modul în care o anumită Desigur, astfel influențat viața ei. Și ea abia a luat atunci când ea a fost un senior aici la Harvard College. Dacă am putea dim luminile de Susan. SUSAN Wojcicki: Buna ziua, lume. Sunt Susan Wojcicki. Eu sunt CEO al YouTube. Și am luat CS50 când am fost un senior la Harvard în 1990. Am fost de fapt o istorie și mare literatură. Și vara mea junior, Am dat seama că poate am a vrut să învețe ceva despre computere. Și așa, m-am întors. Mi-am luat CS50. A fost greu, dar a fost cel mai uimitor de clasă i-am luat. Mi-a schimbat modul în care cred despre tot. Și când am absolvit de la Harvard în 1990, m-am dus la Silicon Valley. Și am un loc de muncă. Și eu am fost de lucru în tech de atunci. David J. MALAN: Acum ce Susan nu a menționat în acest film, ca, de fapt, în ei garaj care Google în sine a fost fondata de Larry și Sergey. Acum avem, de asemenea, a ajuns la prietenii noștri la code.org, o organizație care pe parcursul anului trecut a fost de obtinerea de oameni deosebit de încântați de informatică și programare, în special. Dar este de remarcat faptul că programarea nu este știință de calculator în sine. Informatică nu este de programare. Mai degrabă de programare este doar un tool-- cu care voi toți va fi prea bine familiar cu end-- semestru astfel încât nu se poate aplica doar la viitoarele cursuri de CS dar pentru orice domenii de unde vii, în umaniste, științe sociale, naturale știință, sau altele asemenea. Într-adevăr, permite o altă câteva absolventii si colegii lor pentru a vorbi la aplicabilitatea din câmpul care așteaptă. Bill Gates: Am fost 13, atunci când am Primul a avut acces la un calculator. JACK DORSEY: Părinții mei mi-a cumpărat un Macintosh în 1984 când aveam opt ani-vechi. Mark Zuckerberg: Am fost în clasa a șasea. SPEAKER 1: Am învățat să cod în facultate. RUCHI Sanghvi: primul an de liceu, primul semestru, Introducere în Informatică. Bill Gates: I-am scris un program de care a jucat tic-tac-toe. DREW HOUSTON: Cred că a fost începuturi destul de modeste. Cred că primul program I-am scris întrebat lucruri cum ar fi, Care e culoarea ta preferată? Sau câți ani ai? ELENA SILENOK: Am aflat pentru prima dată modul de a face un cerc verde și un pătrat de culoare roșie apare pe ecran. GABE NEWELL: Prima timp am avut de fapt ceva vin și spun, salut, lume. Și am făcut un calculator face asta. A fost doar uimitor. Mark Zuckerberg: Învățarea cum a programului nu a începe ca dorința de a învăța toate de informatică sau încearcă să stăpânească această disciplina sau ceva de genul asta. Pur și simplu a început pentru că am a vrut să facă un lucru simplu. Am vrut să fac ceva care A fost distractiv pentru mine și surorile mele. Și am scris acest mic program. Și atunci, practic, doar adaugă un pic la ea. Și atunci când am avut nevoie de de a învăța ceva nou, M-am uitat în sus, fie în o carte sau pe internet, și apoi se adaugă un pic la ea. DREW HOUSTON: Nu e adevărat, spre deosebire de cântatul la un instrument sau ceva sau practicarea unui sport. David J. MALAN: Bine. Așa că haideți să ne acum de fapt se arunca cu capul într-un pic mai profund. Ce sunt aceste intrări și ieșiri că vorbim despre aici? Deci, ce zici de ceva simplu? Probabil știți, chiar dacă aveți nu familiaritate cu stiinta calculatoarelor un fel, că computerele folosesc într-un fel și înțelege numai zero si unu. Dar cum poate fi, eventual, având în vedere cât desktop-uri mult astăzi și laptop-uri, cât se poate face? ADN-ul de a doua zi, singurul alfabet că ei înțeleg este zero sau una. Ei bine, ia în considerare acest lucru. Noi, oamenii, tind să folosească sistem zecimal. "Decembrie", ceea ce înseamnă 10. Și asta pentru că avem 10 10 cifre, 0 prin nouă. Acum calculatoare, prin contrast, tendința de a folosi binar. "Bi", adică doi. Deci, ei au tendința de a utiliza numai zero și unu. Dar se pare, că chiar doar cu zero si unu, care este un alfabet suficient de mare cu care să reprezinte cel orice bucată de date pe care doriți, indiferent dacă este un număr, indiferent dacă este un mesaj, fie că este vorba un grafic sau video de pe ecran. Luați în considerare, de exemplu, modul în care noi, oamenii, interpreta de obicei, acest număr aici. Acest lucru este doar trei cifre, unul, doi, trei. Dar noi știm acest număr înnăscută acum ca 123. Dar de ce este asta? Ei bine, dacă vă gândiți la, probabil, școala primară, probabil s-au învățat să se gândească la aceste numere ca fiind în coloane, în cazul în care unul este în sute loc, cei doi se află în locul zeci, iar cele trei este în locul celor. De ce este că, de fapt util? Ei bine, gândiți-vă la aritmetică super-simplu că noi toți am fost face de ani de zile acum. Efectiv, dacă ai unul în locul sute, tu faci matematica rapid 100 ori un plus de 10 ori 2-- pentru că a doua este de ordinul zecilor loc-- plus 1 ori 3-- deoarece trei este în locul celor. Deci, desigur, dacă ne de fapt multiplica acest lucru, ceea ce suntem cu adevărat, reprezentând cu aceasta pattern-- două three-- este de 100 plus 20 plus 3, care, desigur, este 123. Acum binar, și calculatoare într-adevăr, vorbesc în mod fundamental aceeași limbă pe care le face. Ei au doar un alfabet mai mic. Deci, calculatoarele au numai zerouri și cele aflate la dispoziția lor. Deci, în timp ce noi, oamenii, au, în esență, puteri de 10, în fiecare din aceste places-- 10 la zero, 10 la unul, zece la cele două, oferindu-vă 110 și 100 respectiv. Deoarece computerele au doar două valori ei pot înțelege, zero și unu, ei trebuie să folosească valori diferite în aceste coloane, una, două, patru. Și dacă ne-am continuat drumul, opt, 16, 32, 64, și așa mai departe. Dar modelul și mentalitatea este exact la fel. Deci, prin această logică, cineva, cum ar fi Mă duc despre care reprezintă numărul unul în binar? Dacă v-ați gândit niciodatã sã acest lucru înainte, ceea ce se spune instinctul? Audiența: Unul. David J. MALAN: Unu. Exact. Avem nevoie doar de un singur în loc cele deoarece zerourile este suficient pentru a ne da nici un patru nici un doi. Deci, unul ori unul este egal cu unul. Acum, lucrurile devin un pic mai interesant. Dacă vreau să reprezinte în binare, numărul doi-- dar, din nou, chiar dacă nu ați mai vorbit această limbă înainte, cum putem reprezenta în binar valoarea pe care o oamenii stiu ca doi? Zero un zero. Doar pune cel din coloana pe care-l vrei. Acum se face destul de ușor, probabil, acum. Deci, dacă vreau să reprezinte three-- nu există nici o coloana trei a lui. Deci, din nou, eu pot adăuga acum aceste valori împreună cu punerea una aici. Deci, de 2 ori 1 plus 1 ori 1 este, desigur, 3. Acum, lucrurile devin un pic de distracție în cei care devin acum zerouri. Și pentru a reprezenta patru, am obține acest. Și dacă ne-am incrementa încet aici-- că ar fi cinci. Acest lucru ar fi șase. Acest lucru ar fi de șapte. Dar acum mi se pare a avea alerga într-o problemă. Cum s-ar putea să merg despre care reprezintă eight-- ar fi valoarea viitoare. Da, asa ca am nevoie de un nou biți. Și, într-adevăr, dacă ai a auzit această frază înainte, biți, asta e doar pentru scurt cifre binare, zero sau unu. Și așa se întâmplă să fie, reprezentând numai trei astfel de biți aici. Dar dacă am avut un fel de nu stocare trei diferite de biți, dar patru, cu siguranță am putea reprezenta opt, și apoi nouă, și apoi 10, și chiar mai mare și mai mare. Dar apoi cheamă în discuție modul în care putem du-te cu privire la acestea reprezentând lucruri în primul rând. Este un lucru pentru a trage le aici pe un diapozitiv, dar cum a face tu le reprezintă daca esti un dispozitiv mecanic? Ce este un calculator face la reprezintă intrările și ieșirile care defini în mod fundamental de calcul la sfârșitul zilei? Ei bine, ce zici de ceva super-simplu ca asta? E doar un bec. Și eu pot declanșa această bec pentru a merge la prin rotirea unele electricitate pe și permit electroni să curgă prin, care se schimbă de de stat sau valoarea sa, ca să spunem așa. De exemplu, acest lucru este o lampă de birou vechi de școală aici cu un astfel de bec în interiorul de el. Iar acum nu e a face într-adevăr ceva folositor. Dar, de îndată ce am să vă conectați într-o priză electrică și apoi să utilizați acest switch-- sau am putea spune un tranzistor sau cred ca e such-- Eu pot reprezenta acum, fie această valoare, în cazul în care becul de evident off, sau această valoare. Această valoare sau această valoare. Această valoare și așa mai departe. Deci în interiorul unui calculator, probabil, sunt piese mult mai mici de hardware, dar că, la sfârșitul zilei au pur și simplu de a utiliza electricity-- poate capta it-- și apoi, fie să păstreze ceva sau păstra ceva în afara. Desigur, acest lucru nu este deosebit de interesant pentru a face cu doar un singur bec. De fapt, cât de mare poate conta în binar cu această lampă de birou aici? Audiența: Unul. David J. MALAN: O, da? Am nevoie de mai multe lămpi de birou, dacă am de fapt, doresc să conteze mai mare. Dar putem face mai bine decât asta. Pentru ca becurile care ne-am pus în aceste lucruri sunt becuri de fapt crescator decât odinioară s-ar permite. Și sunt de fapt becuri rețea. Și buchete de companii face aceste lucruri în aceste zile. Dar se pare că aceasta în special vine cu o caracteristică prin care aveți posibilitatea să modificați culorile sale. Deci, de exemplu, dacă împodobit camera de camin cu câteva dintre acestea lumină becuri, în funcție de starea ta de spirit, în funcție de care vine, în funcție de vreme, în funcție de timpul de zi, poti de fapt schimba culorile becurile din camera ta. Și asta pentru că acestea lumină bulbi si altii ca el au ceea ce este numit un API, o cerere interfață de programare, care este un subiect cu care vei fi bine familiarizat cu până la sfârșitul semestru. Și aceasta este doar o fantezie, mod criptic de a spune, puteți programa aceste lumina becuri pentru a face licitare dumneavoastră. Aveți posibilitatea să le trimiteți mesaje la fel ca tine, un om, poate trimite un mesaj la un server de web spune, da-mi noutăți ale zilei sau da-mi e-mail meu. Puteți trimite mai multe arcane Mesajele la aceste becuri a spus, la rândul său și opri. Dar asta nu e tot ce interesant. Puteți spune, la rândul său roșu, rândul său, pe verde, porniți albastru, toate cu același bec. Și puteți chiar, cu un pic mai mult savvy, spune, întoarce-te la albastru atunci când este o zi tristă exterior, de exemplu. Se poate patch-uri de fapt, în un API vreme și de a afla ceea ce vremea este, sau timpul de de zi, sau alte astfel de factori declanșatori. Deci, de fapt, două dintre Membri ai personalului propriu CS50 lui, Dan Bradley și Ansel Duff aici, vă rugăm să procurate ne o grămadă de aceste becuri. Și-au construit lui CS50 Primele becuri vreodată binare, unde am reprezentat aici-- cu aceste magnets-- jucaus puțin diferitele substituenții noi a făcut aluzie la doar un pic în urmă. Deci, până aici este loc cele, două, patru. Iar noi n-am văzut mai mult decât atât. Dar, desigur, ei sunt puteri ale lui doi. Opt, 16, 32, 64, și 128. Deci, dacă acum vreau sa fiu un pic crescator decât cu ajutorul acestui comutator școală veche, Am aici pe acest iPad o interfață super-simplu că Dan Bradley, un fost elev și colegi acum de predare, programat folosind unele HTML și JavaScript, care sunt markup și de programare respectiv limbi. Și puteți, probabil, see-- chiar în back-- există un mare plus și un minus mare, plus un buton pentru fiecare dintre aceste becuri. Și ce acest lucru se întâmplă pentru a-mi permite să Nu este, de exemplu, faceți clic pe plus și acum reprezintă, de Desigur, ce număr? One. Și eu pot lovi din nou. Doi. Trei. Patru. Cinci. Șase. Șapte. Și aici avem că rollover, dar avem un al patrulea bit de data aceasta, așa că acum avem opt. Deci, am putea face acest lucru de ceva timp. De fapt, ca o paranteză, cât de mare am putea conta? Oricine? Audiența: 255. David J. MALAN: 255, corect? Nu vă faceți griji prea mult despre matematica pentru acum, dar asta e un număr destul de decent. Dar de fapt, nu doar legat cum de multe bucăți de informații, ca o scrisoare, sau un grafic pe care le-ar putea reprezenta. Dar indiferent de acum. Am de gând să merg mai departe și porniți-le pe toate off. Și dacă aș putea, aș dori să întreb pentru un voluntar, primul nostru volunteer-- oh, hello-- pe scenă. Captura este că trebuie să fii apar confortabil, în timp ce în mod clar sunt în fața tuturor colegilor dumneavoastră, precum și pe internet. Și permiteți-mi să se uite un pic dincolo de Cel-- ce zici aici, în cămașă albă? Și de mână în sus. Hai sus. Care este numele tau? Audiența: Jackie. David J. MALAN: Jackie. Jackie, hai sus. Deci, ce este, de asemenea, pe această iPad este un buton numit modul pentru jocuri. Și acest mod de joc este O să-mi permit să introduceți în prealabil un anumit zecimal număr, numerele noi, oamenii sunt familiarizat cu. Și atunci va fi contestată aici pentru a utiliza butoanele pe cea top-- pentru fiecare dintre aceste bulbs-- să dau efectiv modelul de becuri care reprezintă numărul în cauză. Și îmi pare rău, ceea ce a fost din nou numele tău? Audiența: Jackie. David J. MALAN: Jackie. În regulă. Mă bucur să te cunosc. Așa că lasă-mă să mergeți mai departe și de program în pentru ca lumea să vadă numărul 15. Vom păstra mic la început aici. Și am de gând să merg în modul pentru jocuri. Și am de gând să precizeze, să ne dea numărul 15. OK. Iar acum, cu toată lumea watching-- dacă vrei sa stai poate în acest fel, pentru că va alinia up-- merge mai departe și comuta cele opt butoane de-a lungul partea de sus la rândul său, becurile de pe sau off ca tu de cuviință. Audiența: OK. David J. MALAN: Și nu inseala prin lovirea plus de 15 ori. Oh, vom face asta. Audiența: Oh, așteptați. Îmi pare foarte rău. David J. MALAN: Puteți activa, de asemenea, becurile de pe individual cu fiecare dintre aceste butoane pe partea de sus. Audiența: Oh, OK. Deci, ar fi ca-- David J. MALAN: OK. Deci, acum avem opt. Așa că haideți să ne oprim public de a se angaja aici. Ce număr este Jackie reprezentând în prezent? 11. Deci suntem aproape acolo. Și excelent. Deci, avem primul nostru câștigător. Felicitări. Și ne-am gândit vom avea unele cadouri fabuloase. Dacă doriți să fie o astfel de Dorm Room aici în campus, vă puteți avea un proiect final folosind acum acest API, datorită Jackie. Deci, acum-- [Aplauze] --if am putea, una mai mult cum ar jur de acest lucru. Oh, acum toată lumea vrea niste becuri. Pentru așa-numita ediția hacker, noi o să-l intensifice un-- oh, Da, lipsit. Cred că vine acum dacă mâna ta se întâmplă jos. Care este numele tau? Audiența: Alex. David J. MALAN: Alex, vino aici. Deci pentru Alex, vom Programul într-un număr puțin mai mare. Poate în ordine. Numărul 50. Audiența: OK. David J. MALAN: Dar, așa cum Am zis-- și s-ar putea vreau sa stau aici așa că butoanele de linia de sus cum v-ar expect-- dar am făcut-o numim aceasta editie hacker. Deci-- noroc! [Râsete] Veți fi capabil de a transforma le-off daca-- OK. Excelent. Minunat. Felicitări. [Aplauze] Cred că ar trebui să plătească în sus. Felicitări lui Alex, de asemenea. OK. Deci Takeaway final aici este, sperăm, sincer, simplicity-- ATÂT simplitatea cu care puteți obține unele lumina frumos becuri, aparent în [neauzit]. Dar ele reprezintă, în cele din urmă, la fel de idei cu care noi, oamenii sunt deja mult prea familiare. Deci, ceea ce ar putea următoare pas să fie în progresie de a încerca să facă ceva interesant cu date și care reprezintă factori de producție care nu sunt doar Numerele dar sunt poate scrisori sau mai mult? Ei bine, se pare că lume de calculator, de mai mulți ani, pur și simplu a adoptat o arbitrar, ci o standard de consistent că hărțile numere la litere ale alfabetului. De exemplu, aici este o extras din asta de cartografiere. Se numește ASCII. A-S-C-I-I. Și că este pur și simplu o tabel care hărți letters-- majuscule în acest case-- în zecimal numere. Dar ceea ce este implicația? Ei bine, dacă chiar vrei să reprezinte ceva de genul un e-mail sau un text pe o pagină web, vă în mod evident, vrea să arate literele umane ale alfabet, nu numere. Deci, în funcție de contextul programului că un utilizator se utilizează, dacă este un browser web sau client de e-mail, Numerele pot fi cu siguranță interpretate ca scrisori. Asta este de a spune, modele de biți poate fi ușor interpretată ca litere. Și astfel ceea ce poate avea este litera O ființă reprezentat ca 65, B fiind reprezentat de 66. Deci, dacă avem o super- cuvânt scurt, cum ar fi hi, ceea ce un calculator ar fi în cele din urmă magazin în zecimal, dar într-adevăr în binar, folosind unele secvență de biți, care beneficiază de un pic de energie electrică într-un fel, ar fi cele două numere 72 și 73. Dar modelul de biți care reprezintă aceste valori. Deci, acestea sunt atunci cum putem reprezintă intrări și ieșiri noastre. Și este suficient să spunem, putem face reprezentări mai complexe în cele din urmă cu lucruri cum ar fi grafică, video, muzică, și mai mult cum vom vedea mai târziu în acest termen. Așa că doar lasă apoi algoritmi, aceste seturi de instrucțiuni cu care suntem rezolvarea problemelor reale. Trecem în intrări de algoritmi. Și aceste algoritmi sunt producătoare de ieșiri, ieșiri sperăm corecte și sperăm, de asemenea, s-au adunat eficient ieșiri. Cu alte cuvinte, e un lucru să pună în aplicare în mod corect ceva. Este un alt lucru pentru a pune în aplicare ceva bine sau mai eficient. De exemplu, una demonstrație că suntem pasionat de, în cursul este acesta. Dar aceste lucruri devin ce în ce mai greu de găsit. Dar acest lucru este într-adevăr o școală veche carte de telefon, de care în interiorul sunt 1.000 de pagini, plus de nume și numere de telefon. Și dacă aș fi vrut să se uite în sus cineva în această carte de telefon, Aș putea face pur și simplu o algoritm foarte naiv. Am putea deschide până la prima pagină, și Aș putea începe să caute, să zicem, cineva pe nume Mike Smith. Și dacă el nu e pe primul pagină, am trece la cea de a doua, și apoi la a treia și apoi la al patrulea, și așa mai departe, până la urmă am găsit pe Mike Smith. Acum, este faptul că algoritmul corect? Audiența: Da. David J. MALAN: Da. Dacă e acolo, voi în cele din urmă l găsesc. Dar nu este, fără îndoială, foarte Nu eficient, cu siguranță rapid, pentru că, Doamne, de ce sunt eu pierd meu flipping timp prin toate aceste pagini, atunci când am putut cu siguranță face acest punct de vedere fizic mai repede? Ei bine, o ușoară optimizare, astfel încât să vorbi, s-ar putea să nu fie o pagină la un moment dat, ci două, patru, șase, opt, 10. Încă corect? Audiența: Nu David J. MALAN: Deci, nu, dacă am pentru exemplu săriți peste Mike Smith. Dar, atâta timp cât eu înapoi pedala o pagină, dacă l-am depăși, poate am putea corecta ceea ce s-ar putea fi altfel un Te-am prins. Dar este mai bine? Este mai rapid? Adică, da. Este pur și simplu de două ori la fel de repede dacă fac două pagini la un moment dat. Deci, dacă am avut inițial 1.000 de pagini, acum am doar pentru a răsturna de 500 de ori, nu pe deplin 1.000 de pagini pentru a obține potențial în cel mai rău caz la capătul telefonului carte, în cazul în care cineva cum ar fi Mike Smith sau pe cineva cu un nume mai târziu s-ar putea fi de fapt. Dar, desigur, ne-am oamenii cu siguranță nu sunt gând să faci asta, cu siguranță Nu în acest moment în viața noastră. Ce este un rezonabil om probabil de gând să faci? Audiența: Du-te direct la the9 lui S. David J. MALAN: Du-te direct la anii S? Cum pot să merg direct la anii S? Audiența: Rip-o în jumătate. David J. MALAN: Ei bine, nu e nici un marcaj. Deci, da, dacă ar exista într-adevăr o etichetă sau o filă lipicios pentru S, noi ar trebui să sară chiar acolo. Dar e destul de inofensiv. Deci, tot ce pot face este de aproximativ la secțiunea S sau poate aproximativ în mijloc. Dar Takeaway cheie acum-- și intuiția care le-ați luat pentru acordată de ani probabil-- este că ceea ce faci tu acum știu despre această problemă? Audiența: [inaudibil] David J. MALAN: Mike Smith este cu siguranță Nu în această jumătate a problemei pentru că Smith vine după mijlocul care este aproximativ secțiunea M, se pare a fi. Deci, după cum ați văzut la Visitas, putem acum literalmente rupe această problemă în jumătate. Audiența: Woo! David J. MALAN: E mai usor si mai usor. [Aplauze] Acolo te duci. [Râsete] Și acum am în mod fundamental au aceeași problemă, dar este pur și simplu pe jumătate la fel de mare. Sunt încă în căutarea pentru Mike Smith. Și îndrăznesc să spun, eu pot încă uita-te pentru el în același mod, divizarea problemei în jumătate din nou, ruperea problema din nou în jumătate, care ma lasa acum cu o problemă un sfert din mărimea, arunca dramatic că jumătate depărtare, și repetă din nou și din nou acest proces și din nou, uitându-se în jos în fiecare punct a vedea în cazul în care Mike Smith este pe pagina în cauză. Acum, dacă am face acest lucru drept, în cele din urmă mă voi găsi cu doar o singură pagină pe care Mike Smith este dacă el este într-adevăr în cartea de telefon. Desigur, am putea nu suna din nou Mike. Dar punctul de aici este că, dacă am început cu 1.000 de pagini, primul meu algoritm, flip pagina, poate 1000 times-- cu siguranță mai puțin pentru că este un nume S și nu un nume Z, ci ca mulți ca 1.000 de pagini potențial. În al doilea rând algoritm, mai bine. 500 de pagini. Algoritm al treilea rând, deși, câți pași aceasta ar ia să împartă o pagină 1000 carte de telefon în jumătate de genul asta? 10, da sau de a lua. Deci, numai prin flipping prin care carte de telefon, scufundări și cucerirea, ca să spunem așa, de 10 ori, voi face felul meu de până la doar o singură pagină. Și astfel încât să putem capta această intuiție acum un pic grafic dacă tocmai ați lua în considerare acest grafic super-simplu. Suntem pe axa x, sau orizontală axă, este dimensiunea de problema mea, numărul de pagini din cartea de telefon. Si oameni de stiinta de calculator în general place să numesc dimensiunea unei probleme n, unde n este doar o variabilă care represents-- în acest case-- număr de pagini. Vertical, sau axa y, aici este Va fi timp pentru a rezolva, Poate numărul de spire de pagini, Poate numărul de secunde sau minute, indiferent de unitatea de măsură este. Și astfel această linie roșie reprezintă primul algoritm, pentru că nu e de unu la unu relație între numărul de pagini și cantitatea de timp este nevoie. Dacă Verizon dublează numărul de pagini din cartea de telefon de anul viitor, funcționare meu atunci-- timpul necesar pentru a executa că primul algorithm-- dublează în cel mai rău caz. Dar doilea algoritm, unde am flipping de două, necesită mai puțin timp pentru o problemă dimensiune dată. Deci, dacă am avea acest multe Anunț de pagini aici-- că linia galbenă sugerează mai puțin timp pentru a rezolva. Și într-adevăr, ea reprezintă, vom spune, n peste două. Dar ceea ce este forma de-a treia și curba finală va arata ca? Da, este într-adevăr o să Uite-- I Nu știu ce ai de gând să spun. Dar sa vedem ce ai de gând să spun. Audiența: Ca asta. David J. MALAN: O să arate ca aceasta, o exactly-- slope-- logaritmică în care aveți această pantă curios. Nu mai este o linie dreaptă. Și ce e convingatoare despre asta este că chiar dacă graficul este acum tăiat, puteți extrapola la dvs. deranjează că acea linie verde nu este va spori pe înălțime tot atât de mult ca voi merge mai departe jos care axa orizontală. Într-adevăr, Verizon, pentru exemplu, ar putea dubla numărul de pagini din telefon carte între acest an și anul viitor de la 1000 la 2000 pagini, dar nu e mare lucru. Cu această a treia și ultima, există un algoritm intuitiv de împărțirea și cucerirea. O să-mi iau câte mai mult pașii de anul viitor pentru a găsi pe cineva place Mike Smith? Audiența: Unul. David J. MALAN: Nu e doar unul. Și ei pot de patru ori, e O să-mi iau doar două mai multe etape și așa mai departe. Și astfel aceasta este o dovadă a cât unele de design atent și unele apreciere pentru ceea ce intrări tale sunt poate face chiar mai bine. Acum suntem inselat-o puțin în sens că suntem leveraging o presupunere. Ce este presupunerea mea despre cartea de telefon care mi-a permis să-și împartă și să cucerească în acest mod intuitiv și mai corect? Audiența: [inaudibil] David J. MALAN: Da. Deci, a fost comandat. A fost ordonate alfabetic de compania cartea de telefon. Dacă ar fi fost în ordine aleatorie, care ar fi un iad de o carte de telefon, dar cu siguranță nu ar fi se pretează la algoritmul Am folosit, pentru că nu și-ar doar se întâmplă peste Mike Smith dacă te-a ținut împărțirea în jumătate în acest fel de șansă. Deci, haideți să oficializeze acum ceea ce este în mod clar intuitiv. Așa ceva numit pseudocod este locul unde ne vom începe o parte din problemele noastre initiale. Și acesta este un mod generic de a descrie un algoritm sau un program de calculator, Nu utilizați C, sau C ++, sau Java, sau orice limbaj specific, dar folosind doar limba engleză, cu care orice om ar putea fi familiar. Și s-ar putea scrie pseudocod pentru această problemă, după cum urmează. Pasul unu, ridica cartea de telefon. Pasul doi, deschise la mijloc de carte de telefon. Pasul trei, uita-te la numele. Pasul patru, în cazul în care Smith este printre names-- Și acum aceasta este o construct interesant. Este un punct de decizie. Este o furculiță în drum, dacă va, o ramură, ca să spunem așa. Așa că am de gând să liniuță doar prin convenție step-- nu cinci-- care urmează să să zicem, voi suna pe Mike. Deci acest indentare, total convenție umană arbitrar, dar e pur și simplu rolul de a transmite semantic că în cazul în care Smith este unul dintre nume, atunci ar trebui să sun pe Mike. Între timp, în pasul șase, notificare că indentare a plecat. Deci, mai este un alt furculiță în rutier, celălalt drum s-ar putea călători. Deci, dacă altceva Smith este mai devreme în carte, ceea ce-i urmatorul meu pas, probabil, va fi aici? Audiența: Du-te la partea stângă. David J. MALAN: Da, deci du-te la jumătatea stângă a cartea de telefon. Aruncați jumătatea din dreapta, dacă Smith este mai devreme în carte. Deci, deschis la mijlocul jumătatea stângă a cărții. Și apoi pas opt, du-te la linia trei. Și aceasta este o buclă curios sunt inducerea, o recursivitate ca să spunem așa. Dar mai multe despre asta în viitor. Sunt folosind același algoritm meu, același pseudocod mea, pentru a rezolva aceeași problemă din nou pentru că singurul lucru care sa schimbat este dimensiunea problemei, nu Obiectivul meu, și nu persoana Caut. Deci, eu pot reutiliza algoritmul care le-am definit deja. Altfel, dacă Smith este mai târziu în book-- s-ar putea ghicesc deschis la mijlocul jumătatea din dreapta a cărții. Și din nou, du-te la linia trei. Else-- ceea ce este linia finală în acest program va fi? Dacă el nu e printre Numele de pe pagina sunt pe, dacă nu e mai devreme în carte, iar el nu-i mai târziu în carte, ceea ce știu este adevărat despre Mike Smith acum? Audiența: Nu e în carte. David J. MALAN: Nu e în carte. Deci, tot ce pot face este doar renunța și se va opri acest program. În regulă. Deci, la acest punct, haideți să aruncăm o tur rapid de o parte din ceea ce așteaptă. Și, de fapt, eu alăturat aici de un număr de personal CS50. Dacă acești oameni ar putea tot mi se alăture aici pe scenă. [Aplauze] Țineți minte, aceasta este doar un subset de personal CS50, deoarece în fiecare an ne-am aproape 100 de angajați membri în rolurile de asistenți de curs, predare semenii, și mai mult. Hai sus. Deci, ei ne vor alătura aici neîndemânatic pentru doar o clipă ca ne-am da un tur vârtej de ce trebuie să vă așteptați aici în curs. Deci, în primul rând, avem SAT / UNS ca opțiunea de notare în curs. Acest lucru este menit în mod deliberat să fie o opțiune prin care daca esti un pic incomod de a fi în curs, și tu nu se tem de failure-- chiar dacă sincer eșec înseamnă doare GPA dumneavoastră, obtinerea unui B și nu o A-- care este exact ceea ce, cu siguranță, pentru o poarta de acces Desigur ca CS50 și alte cursuri introductive, această opțiune clasificare este menit să permită. Îi încurajez pe toată inima students-- mai ales dacă pe fence-- pentru a începe Desigur, SAT / UNS, rămâne chiar SAT / UNS. Dar se poate trece cu siguranță la o scrisoare clasa de-a cincea luni în termen. Sincer, înapoi, atunci când am a fost un student în anul întâi, în 1995, Eu însumi chiar nu a luat CS50 pentru că nu am primit curaj la pasul de fapt piciorul în sala de clasă. Părea un domeniu mult prea necunoscut pentru mine și într-adevăr numai pentru acei prieteni de-ai mei, sincer, care a fost de programare deoarece acestea au fost de șase sau poate 10 de ani-vechi. Și a fost doar pentru că am fost în măsură să ia CS50 în ziua mea în versiunea echivalent SAT / pass UNS-- / nu înapoi în zi-- care chiar am luat 50. Și într-un fel sau altul, eu sunt Aici, din nou cu tine azi. Acum, între timp ce altceva te ar trebui să păstreze în minte despre 50 este inscriere simultan. Contrar zvonurilor că s-ar putea fi auzit, puteți, de fapt, în același timp se inscrie in CS50 și o altă clasă care îndeplinește în același timp sau unele suprapuneri timp de prelegeri CS50 are dreptate aici. Vezi programa pentru informațiile de punere în aplicare a acestora. Prelegeri, între timp, spre deosebire de ceea ce este în mod oficial în catalog, în general va numai întâlni pentru doar o oră. Pe ocazie s-ar putea rula un pic mai lung. Dar tineti cont de faptul că Scopul în prelegeri CS50 lui este de a vă oferi o privire de ansamblu conceptual, sperăm că unele demonstrații, poate chiar unele cadouri, de ceea ce așteaptă de săptămâna care urmează. Și așa în prelegeri, vom explora aceste subiecte și exemple împreună, aducerea elevilor pe scenă, și personalului pe scenă cât de des putem, pentru doar câteva ore în fiecare săptămână. Secțiunile, între timp, va fi oferite de acesti oameni aici-- multe de învățându-i semeni, unele dintre ei vor, desigur assistants-- se întâmplă săptămânal. Și ceea ce este esențial pentru a păstra în minte este că noi Nu avem-- spre deosebire de Primul Nights, muzica class-- diferite piese de secțiuni de elevii mai puțin confortabile, mai mult confortabil, și undeva în între. Și sincer, tu știi dacă tu ești mai puțin confortabil. Și probabil știți dacă tu esti mult mai confortabil. Și dacă nu ești sigur, sunteți prin definiție undeva în între. Deci, atunci când vine vorba de timp pentru secțiune într-o săptămână sau așa, pe programa, vă vom pune această întrebare. Și vă puteți auto-selectați Pe la nivelul de confort propriu și să fie cu students-- fi cu verde dots-- similară în nivelul de confort pentru tine. Între timp, avem o problemă seturi, care în cele din urmă va defini experiența dumneavoastră în acest curs. Ei au oferit în mod obișnuit în mai multe ediții. O ediție standard care ne asteptam cel mai fiecare elev în curs de a aborda dar, de asemenea, un așa-numit ediție hacker care nu oferă nici o formă de credit suplimentar pur și simplu, dar într-adevăr drepturile fanfaronadă să spun că ai încercat și abordate ediții ale hackerilor Cursul de care se apropie de material similar ci dintr-un unghi mai sofisticate. Ce oferim pentru Standard Edition, pentru, din nou, o majoritate super- de studenți, nu sunt numai walk-through, care sunt Clipuri conduse de personal ale cursului că într-adevăr te plimbi prin problemele de curs și posibil de design implementari. Și noi, de asemenea, după De fapt, oferta postmortems, prin care în cazul în care vă întrebați cum ai putea avea sau ar fi rezolvat ceva problemă, cadrele didactice vă va plimba prin cele de pe video. Între timp, ceea ce așteaptă de asemenea sunt cinci zile de întârziere și de faptul pe care le va scadea ta cea mai mică problemă set scor. Cu siguranță aprecia că, în schimb pentru volumul de muncă pe care se așteaptă de 50 de de tine, viața devine în mod uneori, dacă nu de cinci ori. Și așa va oferi ai un pic de flexibilitate, extinde termenul limită de la, să zicem, un Joi la prânz pentru o zi de vineri la prânz. Vezi programa școlară pentru detalii de implementare a acestora. Acum, ce așteaptă acum? Și este doar loc la mine acum doar cât timp Am voi sta aici pe scenă. [Râsete] David J. MALAN: Dar vom ajunge la finisajul culminant, înainte de mult timp. Deci, ce așteaptă în termeni de seturi de probleme? Ei bine, poate un teaser de ceea ce noi toți anul trecut cu predecesorii dumneavoastră. In primul set problemă Anul trecut, am introdus Scratch, un grafic limbaj de programare care vă permite să programați literalmente de drag and drop piese de puzzle, ca acestea, care sunt amintind de construcțiile va vedea doar o săptămână prin urmare, atunci când trece pentru o mai tradițional limbă, cunoscut sub numele de C. Anul trecut am procedat pentru acest set problemă, care implică de criptografie, Amestecarea informațiilor să-l păstrați de la guvern sau de prieteni " Ochii care nu doriți să-l văd. Codificat aici este o mesaj că în curând voi va fi capabil să decripteze sau de-scramble. Breakout a fost o problemă stabilit anul trecut, în care utilizați aceste noi programe găsite aptitudinile necesare pentru a implementa efectiv un joc wherein-- ca tine poate aminti de childhood-- Scopul a fost de a bash cărămizi care sunt deasupra ecranului aici, acumulând o scor de-a lungul drum, și punerea în aplicare a propriilor algoritmi cu care această soluție în cele din urmă vă permite să joace acest joc. Între timp, mai târziu, în semestru, vă vom da un dicționar de 143,091 cuvinte în limba engleză. Și va fi contestată pentru a scrie un program care scrie cecuri, documente, prin încărcare că multe cuvinte în memorie cât mai eficient posibil. În general, vă pitting împotriva colegii tăi dacă optați într-un pic de o provocare în bord lider pentru a vedea cine poate utiliza cele mai puține secunde de timpul de funcționare, și cel mai mic număr de megabytes de memorie, și de fapt de reglaj fin programele pentru a fi incredibil de eficientă a resurselor nu doar timp. Anul trecut, de asemenea, ne-am uitat la final semestrului în programare web. Și într-adevăr, vom face asta din nou acest an cu mai multe seturi de probleme, introducerea vă la tehnicile și mentalitatea cu care se poate aplica aceste aptitudini de programare pentru a site-uri web, site-uri dinamice, site-uri care rezolva de fapt probleme si se comporta diferit și nu sunt pur și simplu statice site-uri cu informații statice. Proiectul final în cele din urmă va defini, deși, punctul culminant al cursului pentru studenți, care veți fi provocați să pună în aplicare mai nimic de interes pentru tine, atât timp cât ea într-un fel se bazează pe lecțiile Cursul de. Și, după cum ați văzut în film de la început, vom încheia semestru cu CS50 Hackathon, care în cazul în care, nefamiliare, va începe la 07:00 o noapte și se încheie la 07:00 în dimineața următoare. În jurul valorii de 09:00, vom Pentru primul în cină. În jurul valorii de 01:00, vom Pentru al doilea cină. Și dacă tu ești încă în picioare la 05:00, ne-am va tine de transfer cu autobuzul la IHOP pentru micul dejun. CS50 Târgul, între timp, este un eveniment la care 2.000 plus facultate, studenți, și personal din întreaga campus va vin pentru a vedea realizarile tale în cursul și finala proiecte și creații pe care le creați pe laptop-uri, desktop-uri, sau poate chiar becuri de lumină. Între timp, ore de birou și structura de susținere. Și acum ar fi fost o moment mai bun pentru tine toate aduc. Program de lucru va avea loc patru nopți o săptămână pentru mai multe ore in fiecare noapte cu 20 până la 30, în general, a Personalul curs de de serviciu la o dată pentru a vă oferi intim unu-la-unu oportunități de sprijin cu seturi de probleme ale cursului. Meditatii prea va fi disponibile, în special pentru elevii mai puțin comfortable-- sau Îndrăznesc să spun că cel puțin comfortable-- pentru care orelor de program nu sunt cel mai mediu favorabil și cu siguranță nu sunt cea mai lipsită de stres. Mai ales atunci când termenele sunt presare, va vom asocia noi înșine în mod proactiv cu un membru al personalului de a lucra cu pe unii program regulat de nevoile dvs. și programul lor permite. Și de personal. Permiteți-mi să introducă Davon, Rob, și Gabriel, capetele din acest an. Dacă v-ar fiecare vrea să spun-- [Aplauze] cuvânt --Un. [Aplauze] Davon aici este manager de curs, care înseamnă, în rolul său full-time el ajută cu executarea și logistică de CS50. Davon: Da, bună, băieți. Veți vedea o mulțime de mine la orele de birou. Voi fi de predare secțiuni. Și dacă te împușc email-uri înainte, Voi fi, probabil, răspunde. Așa că vom vedea o mulțime de voi toți semestru. Și bine ați venit la CS50. David J. MALAN: Și acum Gabriel, care a fost doar un student în anul întâi de anul trecut, dar pentru ultimii doi ani a operează propria sa versiune a CS50 în Brazilia, în care el a descărcat toate content-- cursului care este în mod clar fiind filmat și pus online-- astfel că el ar putea traduce în Portugheză și apoi învață mai mult de 100 de colegii lui de-a lungul curs de un cuplu de ani, predare în limba lui maternă curriculum cursului. GABRIEL: Buna ziua. [Aplauze] GABRIEL: Bună, eu sunt Gabriel. Sunt TF șef al cursului. Și sper că vei iubi CS50. Acest lucru este CS50. David J. MALAN: Acum pentru Rob. Oh, vrei introducere? ROB: Nu, nu știu. [Râsete] David J. MALAN: Si Rob Boden. [Râsete] ROB: Bună, eu sunt Rob. Acesta este al cincilea an mea implicat cu cursul. În fiecare an, e doar un mai bine și mai bine de clasă, asa ca voi sunt în mod clar Va fi minunat. Sper ca toate să se distreze cu ea. Am de gând să se distreze cu ea. Deci, ne mai vedem. David J. MALAN: Si timpul nu va permite noi-- [Aplauze] Timpul nu ne va permite de a introduce toată lumea pe scena și toți colegii lor care sunt de cumpărături clase de azi. Dar permiteți-mi să introducă Belinda și CS50 Puzzle Ziua, care așteaptă această vine sâmbătă, care este primul dintre curs de evenimente la scară largă. Aceasta în special a însemnat pentru ciocan de origine la punctul că informatica este în cele din urmă nu despre programare, ci mai degrabă despre rezolvarea de probleme, în general. Și Puzzle Day, după cum veți vezi, te va aduce și colegii dumneavoastră together-- speram ca acest sâmbătă. BELINDA: OK. Bună, băieți. Deci, mulțumesc. Deci, ca căpitanul nostru ilustrul a spus, numele meu e Belinda. Sunt un al doilea de studentie la Quincy House. Eu, la fel ca voi, a luat CS50 anul trecut, într-adevăr a placut. Am o slabiciune pentru voi în al treilea rând. Si sunt mandru sa spun, eu sunt acum într-o relație cu CS50 [neauzit]. OK. Asta a fost versiunea mea lame de o glumă. Oricum, așa se deplasează pe, doar a vrut să invite voi tot la i-laborator, sau urticarie HBS. Vom fi având Puzzle Day 12:00 - 03:00. Și este o mare oportunitate pentru tine baieti pentru a satisface colegii dvs. prieteni CS, rezolva unele puzzle-uri non-CS, cum ar fi căpitanul menționat, și să mănânce, de asemenea, unele alimente gratuit, câștiga premii minunat, cum ar fi carduri cadou, 75 dolari per persoană, și also-- ce a fost? Wii U sau ceva? Wii U? Da. Pentru tombola noastră. Minunat. Așa că o să rămâi după ore. Și dacă voi avea nici o întrebări, să-mi spuneți. David J. MALAN: Și veți vedea, dincolo de aceasta nu e nimic de făcut azi. Prima problemă setat va ieși vineri. Dar, pentru a ne aduce acasă astăzi, aș vrea să va introduce in mod special una mai membru al personalului, Colton Ogden aici, ale căror mâini sunt acum protejat de mai sus vă cu acest controler MIDI pentru ciocan de origine la punctul continuare că informatică, de asemenea, are aplicabilitate dincolo de inginerie și STEM și informatică în sine, extinderea chiar de domenii, cum ar fi muzica. Colton are amabilitate offered-- m-am gândit unul dintre ei a fost de gând să fixeze focalizarea. Andrew, dacă am putea convoca focalizare pe aici pentru un moment. Ce Colton a făcut în avans este programul acest dispozitiv, acest pad de butoane pe care le vezi imaginat aici, ca un controler MIDI, prin care fiecare dintre aceste butoane este conectat la un anumit notă muzicală sau un sunet, în general o înregistrare, astfel încât prin joc modele de acestea butoane, mult, cum ar fi modele de biți, poate reprezenta alte concepte de nivel mai înalt. El va putea în cele din urmă să ne ia acasă aici azi? Fără alte formalități, în cazul în care am putea dim luminile, și porniți ecranul din spatele Colton. Audiența: Woo! David J. MALAN: Acest lucru este CS50. [MUSIC JOC] [Aplauze] Asta e pentru CS50. Ne vedem vineri. Unii tort vă așteaptă în transept. [MUSIC JOC]