[Redarea muzicii] [MUSIC - ROSSINI, "Ranz DES Vaches "Din William Tell] [MUSIC - BEAT limba engleză, "MARTIE A capete rotative, "] [Aplauze si a aplauda] DAVID MALAN: Deci asta este CS50. Numele meu este David Malan. Și 73% dintre voi nu au nici o experiență anterioară cu informatică, Contrar a ceea ce s-ar putea crede. Așa că astăzi ne-am gândit să cip departe la care nu sunt familiarizați, dar, de asemenea, vă dau un sentiment de, pentru cei dintre voi cu mai mult confort, care direcțiile poti sa te duci acest semestru. Așa că haideți să începem cu asta. N-am nici o idee ce e în interiorul un calculator, chiar dacă, la fel ca tine, am să-l utilizați în fiecare zi. Dar e un fel de cutie, și nu e nu multe intrări în ea. Minim, nu e, ce? Probabil un cablu de alimentare. Și într-adevăr cu aceasta un singur ingredient, electricitate, se pare să fie capabil să face destul de un pic în aceste zile. Dar la sfârșitul zilei, ne trebuie să reprezinte lucrurile că ne pasă. Trebuie să reprezinte informații într-o formă. Si tu esti, probabil, cel puțin vag familiarizat cu ideea de binar sau biți într-un fel sau altul, calculatoare redusă la zero si unu. Dar putem imbratisa ca și cel puțin pune un pic de lumină în asta? Așa că am aceste mici lămpi de birou aici. Am o priză electrică aici. Și am de gând să propun ca în interiorul de computer este de cel puțin unul dintre aceste lucruri, ceva capabil de a fi pornit sau oprit. În acest caz, este într-adevăr o lampă de birou, dar la nivelul inferior, e ceva numit un tranzistor. Dar, în lumea noastră, este o lampă de birou, astfel Am de gând să merg mai departe și conectați acest în energie electrică mea aici. Și eu susțin că folosind acest simplu, dispozitiv simplu, acest comutator simplu, am poate reprezenta informații. De exemplu, chiar acum, eu sunt reprezintă nimic, nu? Sunt reprezentând ceea ce voi numi 0 sau fals, opusul a ceva fiind de fapt prezent. Dar dacă mă întorc pur și simplu acest comutator, acum am reprezentat un 1. Deci, folosind această piesă foarte simplu de memorie, dacă vreți, eu pot reprezenta informații. Acum, din păcate, computerul meu nu se poate face tot atât de mult. Acesta poate reprezenta doar două valori în întreaga lume - 0 sau 1. Dar ceea ce este o soluție evidentă, acum, daca dorim sa ne extindem calculatorul nostru memorie și reprezintă mai mult decât 0 și 1? Ei bine, să luăm o astfel de biți. Să luăm un alt switch, un alt tranzistor, cu toate acestea pe care doriți să cred despre el. Lasă-mă să merg mai departe și să conectați acest în calculatorul meu, de asemenea. Și am de gând să pretind, acum, că prin folosind un pic mai mult de energie electrică și de cotitură mai multe dintre aceste switch-uri pe și off, nu pot reprezenta mai mult, cum ar informații. Deci, chiar acum, aceasta este 1. Dacă vreau să reprezinte acum 2, am putea face acest lucru. Dar, de obicei, convenție, așa cum vom în cele din urmă a se vedea, va trebui să fac asta. Deci, aceasta este 0, aceasta este 1. Acest lucru ar fi 2. Și nu este surprinzător, acest lucru ar fi 3. În acest fel, încă, pot numărăm mai mult? Dacă am lua un al treilea pic, un al treilea comutator, ceea ce este cel mai mare număr pot acum număra până la de la 0? Deci, 7 dacă încep de la 0, nu? Pentru că dacă am transforma aceasta lumina si conectați de fapt, acest al treilea și ultimul lumina in priza electrică mea aici, apoi am capacitatea de a reprezenta oricare dintre cele două valori aici, două valori aici, două valori aici - și așa că am putea reprezenta 2 ori 2 ori 2, sau opt valori posibile. Și dacă încep de contabilitate de la 0, astfel încât care este 0, 1, 2, 3, 4, 5, 6, 7. Deci, acest lucru binar. Este într-adevăr este la fel de simplu ca asta. Și aș spune că aceasta este de fapt destul de familiar pentru majoritatea toată lumea în această cameră. Lasă-mă să merg mai departe și deschide un editor de text puțin aici. Și s-ar putea retrage de la scoala că am avut lucruri de genul sute loc, locul zeci, iar cele loc. Și amintesc că, dacă ați avut unele zecimal număr, cum ar fi ceva aleatoriu cum ar fi 123, v-ar esență, scrie că în formularul de din aceste trei coloane. Și de ce este de 1, 2, 3 ce stim ca 123? Ei bine, în coloana din stânga, avem unul 100 plus doi 10s, astfel încât este de 120, plus trei 1s, așa că e 123. Acum, această lume pe care ne-am iluminat este exact la fel ca ai fost familiarizat cu de ani, cu excepția acum, coloane noastre nu sunt puteri de 10. Sunt doar puteri ale 2. Deci, în timp ce acesta este locul unde cei, acest va fi locul doi cate doi, acest lucru este Va fi locul patru labe. Și pentru că eu sunt, folosind doar simple de mecanisme pentru a transforma lucrurile on și off - electricitate curge sau electricitatea nu curge - Nu prea au aceeași expresiv Gama de la 0 la nouă. Am de gând să-l păstrați super-simplu în această lume de computere. Am doar 0 sau 1 - off sau pe, fals sau adevărat. Și așa cum am reprezentând acum este de 1, 1, 1, pentru că fiecare dintre acestea lumini se aprinde. Ei bine, care îmi dă un 4 plus unu 2, astfel asta e 6, plus un 1, și asta e 7. Și ergo face această secvență de trei biți reprezintă numărul 7. Deci, tot acest timp, în interiorul dvs. calculator, au fost orice număr de tranzistori, orice număr de biți. Dar la sfârșitul zilei, ne poate reprezenta informații cât mai simplu ca. Acum, din păcate, am doar numărat până la 7 în CS50 până acum, dar sperăm că putem face un pic mai mult decât atât. Și într-adevăr putem. Să presupunem că noi, ca oameni doar arbitrar a decis că vom pentru a asocia numere ca 1 și 2, 3, 4, 5, 6, 7, cu litere specifice ale alfabetul. Și, din motive istorice, am de gând să începe oarecum arbitrar, dar eu sunt de gând să spun, oamenii, vom să decidă ca un standard, la nivel global, care 65 reprezintă numărul litera A. 66 vor reprezenta B. Dot, dot, dot. 90 vor reprezenta Z. litera Și să presupunem că, dacă am pus într-adevăr unele crezut în ea, am putea veni cu numere de semne de exclamare și litere mici, și într-adevăr, alte persoane au făcut asta pentru noi. Deci, acum am avut biti cu care putem reprezintă numere, numere cu care putem reprezenta litere, și cu scrisori putem începe acum compunerea e-mailuri și caractere de tipar de pe ecran. Deci, lasă-mă invita, dacă aș putea, opt voluntari curajoși - care nu minte apar nu numai pe camera, dar pe internet - de a veni aici și reprezintă opt astfel de biți, mai degrabă decât acestea trei. Deci, ce zici de una, două? Cum despre trei? Cum despre patru în lumina albastru, cinci la final? Despre cineva pe aici? Șase în față, șapte în față, și opt în față, de asemenea. Asa ca am doar sa întâmplat să vină pregătiți cu o grămadă de bucăți de hârtie. Și pe aceste bucăți de hârtie sunt numere care reprezintă ceea ce coloane voi o să reprezinte. Deci, va fi - Care e numele tău? STUDENT: Anna Leah. DAVID MALAN: Anna Leah, tu va fi coloana 128S. Tu ești? STUDENT: Chris. DAVID MALAN: Chris va fie coloana 64s. Tu ești? STUDENT: Dan. DAVID MALAN: Dan va fie coloana 32s. STUDENT: Pramit. DAVID MALAN: Pramit va fie coloana 16S. STUDENT: Lillian. DAVID MALAN: Lillian va fi 8s. STUDENT: Jill. DAVID MALAN: Jill va fie coloana 4s. STUDENT: Mary. DAVID MALAN: Maria va fi de 2S, și? STUDENT: David. DAVID MALAN: David fie coloana 1s. Deci, dacă voi putea pas un pic înainte, astfel încât toată lumea poate vedea. Ceea ce voi nu vedeți este că pe din spate a acestor bucățele de hârtie este un foaie de ieftin mic, care e pe cale de a instrui aceste opt biti fie ridice mâna lor sau nu ridice mâna lor. Dacă mâna lor merge în sus, sunt reprezentând un 1. Dacă mâna lor rămâne jos, sunt reprezentând un 0. Între timp, am publicul ar trebui să fie în măsură să dau afară, pe baza acestei cartografiere, ce cuvânt din trei litere acestea oameni sunt pe cale de a preciza. Deci, într-o clipă, ai de gând să citiți prima linie de pe partea din spate a foaie de ieftin ta, si tu esti, fie va ridica sau nu ridice mana. Dacă sunteți un 1, plusezi, dacă esti un 0, stai acolo dur, la fel ca asta. Du-te. Ce număr, în primul rând, sunt tipii ăștia reprezintă? 66. 66, nu? Avem un 1 în coloana 64s, o 1 în coloana 2s. Asta îmi dă 66, astfel încât apare să fie reprezentând B. Deci voi ați scris - OK, asta e destul. B. Deci, acum să mergem pe a doua scrisoare nostru. Du-te. Cine e mai rapid la matematică aici? Deci, 79. Din nou, dacă vom aduna toate coloanele în care există un 1, în prezent, doar așa cum am făcut-o înainte cu cele mai simple de exemple de 7, am acum a obține numărul 79. Care, conform cartografierea noastră este scrisoare O. Deci suntem aproape acolo. B, O. Și, în fine, du-te. Ce sunt ele reprezintă acum? Mai puțin consens. Asta e doar un murmur absolut. Da, este, de fapt, 87. Bun. Deci, dacă am harta acum că înapoi până la - să începe de asteptare graficul nostru ASCII, American Standard Code pentru Schimbul de informații. Asta ne dă scrisoarea - nu "bo", ci "arc". Și că este o perfectă Cue pentru voi să ia un arc și capul pe spate. Mulțumesc mult. [Aplauze] DAVID MALAN: Aveți posibilitatea să le păstrați. Deși de fapt, ar vrea cineva cum ar fi o lampă de birou, de asemenea? [Huiduială din partea publicului] DAVID MALAN: lampă de birou? [Râsete] DAVID MALAN: Serios? Lămpi de birou pentru toată lumea? Bine. Deci, începând cu cele mai simple de principii, am acum nu doar numărate de la 0 tot drumul până la 7, ne-am presupune că doar prin aruncarea mai mult biți sau mai multe lumini sau mai multe tranzistoare la această problemă, putem reprezintă numere mai mari și mai mari, și ergo, game tot mai mare a alfabete, cum ar fi limba engleză. Și doar să luăm în credință pentru ziua de azi că la fel am putea începe să reprezintă grafice și video și orice serie de alte mass-media cu care suntem cunoscut azi. Deci, aceasta este CS50, iar în această clasă alături de voi sunt, din nou, foarte multe colegii care au mai putin experienta ca tine. Și am spus asta doar pentru că destul de adesea, inclusiv ca recent ca una dintre student în anul întâi consilierea evenimente și la al doilea de studentie in primavara anului trecut de consiliere eveniment, am auzit de multe ori elevii își declină atunci când vine la masa de CS, de asemenea, M-am gândit de a lua acest clasa intro, dar eu nu sunt chiar un persoană calculator. Sau, dar cu siguranță toată lumea știe mai multe decât mine. Și am pus acest lucru în cel mai mare font posibil, pentru a transmite acest mesaj pe care care nu este, de fapt, cazul. Și dacă vă întrebați, ar trebui I, de fapt, să fie aici? Dau seama că nu numai că este acest curs de Titlul Introducere în Computer Știință, este Introducere în calculator Știința I. Deci, există într-adevăr un al doilea astfel de introducere. Deci tu nu esti, de fapt, în locul nepotrivit. Și printre obiectivele pe care le am pentru ziua de azi sunt pentru a calma orice astfel de preocupări te ar putea avea, dar, de asemenea, să picteze o imagine a ceea ce e în magazin pentru elevii mai puțin și mai confortabil la fel în acest curs. Dar, mai întâi, un cuvânt pe unul dintre materiale aveți azi, printre care sunt o serie de întrebări frecvente. A fost o viziune de-al nostru de ceva timp acum să se introducă o nouă clasificare opțiune în acest curs - și anume, SAT / UnSat. Filozofic pentru mine, este mult mai mult, mult mai important ca elevii din această clasă se angajeze cu Materialul, este contestată de către materiale, și vă faceți griji mult, mult mai puțin despre mecanica scorurilor și clasele scrisoare de la semestru sfârșit, dar cu adevărat îmbrățișează cursul și materialul. Și într-adevăr acest lucru se simte, mai general, pentru ceea ce este interesant pentru ei, pentru a se simt provocate și recompensat, dar fără teama de eșec. Și într-adevăr, acesta este de asemenea un recurent Tema din acest și alte introductivă cursuri în alte domenii, pe care le au această agitație atunci când vine vorba de pune degetele de la picioare unul în ape necunoscute. M-am, în 1995, a fost un student în anul întâi. Am fost foarte concentrat pe a fi un concentrator Gov aici. Și totuși aș mereu crescut cu un pic de un interes în informatică. Am fost mereu curios. Dar atunci, chiar, am avut această teamă de chiar pas cu pas picior în CS50, atât de mult așa că nu am nici magazin este primul an de facultate. Și singurul motiv pentru care am pus un picior în Ușa anul al doilea de studentie a fost pentru că am a fost permis să-l admis / respins. Dar chiar și pass / fail necesare pe care le primesc curaj pentru a face o programare cu profesorul Kernehan la momentul respectiv, aduce această foaie mare de hârtie, și de a pune l pentru semnătura lui și a lui permisiunea de a explora aceste ape necunoscute. Și aceasta nu a ajutat în ultimii ani, că, atunci când faci acest lucru în CS50, când am folosit pentru a fi admis / respins, la fel ar fi zeci sau sute de colegii dvs. Trebuie să vină, Doamne ferește, la fata de Sanders cu această formă, care în unele minți reprezintă o incapacitate, Îndrăznesc să spun că, pentru a efectua sunt la nivel colegii dumneavoastră ". Ceea ce este ridicol, dar eu nu cred acolo e mentalitatea. Și acolo nu a fost niciodată în această cultură de SAT / UnSat, sau pass / fail mai mult în general, în acest curs, sau într-adevăr pe acest campus. Deci, în acest an am schimbat. Mi-ar fi jumătate extatică a această clasă sau mai multe finalizate inițierea CS50 SAT / UnSat. În timp de un an, ar fi minunat în cazul în care aproape toată lumea este. După aceea, probabil, vom lucra pe clasele scrisoare de la Harvard Colegiu în general. Dar pentru acum, vom face acest lucru în nostru sferă proprie, și aș toată inima încurajăm să revizuiască aceste întrebări frecvente și pune întrebări cum credeți de cuviință, astfel încât sperăm că vă, spre deosebire de mine, nu destul de au același factor de teamă atunci când explorarea ceea ce este, probabil, un loc nefamiliar. Deci, ce este CS50? Aceasta este o introducere Intreprinderi intelectuale de calculator știința și arta de programare. Dar ce înseamnă asta cu adevărat? Ei bine, până acum, am vorbit foarte pe scurt despre care reprezintă informații. Dar să presupunem că suntem de fapt doresc de a face ceva cu ea. Trebuie să introducem noțiunea de ceea ce vom numi un algoritm. Un algoritm este o procedură, un proces, un set de instrucțiuni pentru a face ceva. Și un algoritm poate fi ceva super-simplu. De exemplu, un exemplu cu care anumite de s-ar putea să fie familiarizat este aceasta lucru aici. Deci, această carte aici este din ce în ce datat, dar o dată la un moment dat, ea conținea o mulțime de nume și numere de telefon. Și într-adevăr, dacă am vrut să găsesc cineva în această carte de telefon - spun, cineva pe nume Mike Smith - Am găsit pe Mike Smith, în orice număr de metode destul de simple. Am putea începe de la început și trece la pagina 1, nu acolo. Page 2, nu acolo. Page 3. Este că algoritmul, este faptul că proces, corect? Deci, este corect, nu? Sunt un fel de idiot pentru a face aceasta în acest mod, dar în cele din urmă o voi face găsi numele S, și sperăm că Mike este în această secțiune, si eu va deveni face cu algoritmul meu. Dar cu siguranță nu este intuitiv. Cele mai multe fiecare om rezonabil în acest Camera nu ar fi făcut asta. Ce ai fi făcut? Te-ai fi dus direct la mijloc, nu? Aproximativ la mijloc. Și îți dai seama, oh, acestea sunt d-na Deci Mike Smith, numele de familie fiind Smith, nu este, în mod clar, apoi în jumătatea din stânga a cărții. El trebuie să fie spre S e în dreapta. Și în acest moment, deși cele mai multe dintre noi nu fac acest lucru în realitate, putem rupe literalmente această problemă în jumătate. [Urale și aplauze] DAVID MALAN: Mulțumesc. [Urale și aplauze] DAVID MALAN: Puteți rupe literalmente acest Problema în jumătate, lăsându-mă cu, literalmente, o jumătate problemă la fel de mare. Deci, dacă acest cartea de telefon a fost - și-l probabil a fost - aproximativ 1.000 de pagini, acum E doar 500. Dacă am face acest lucru din nou și îmi dau seama, oh, La naiba, am mers prea departe, eu sunt în Ts secțiune, am putea la fel - figurat sau literal - rupe cartea de telefon - a fost de fapt mult mai ușor acel moment. Eu pot rupe literalmente cartea de telefon în jumătate, lăsându-mă acum cu Nu 1.000, nu 500 - 250 de pagini. Și eu pot merge 125, și jumătate din care, și jumătate din care, și jumătate din care, până când în sfârșit voi fi plecat cu doar o singură pagină. [Râsete] DAVID MALAN: Asta e partea I nu mai departe. O singură pagină pe care Mike sperăm este. Acum, aceste diferite algoritmi pot fi un fel de evaluat sau evaluate în diferite moduri. Prima a fost foarte liniar, nu? Întoarce pagina, uita-te pentru Mike. Întoarce pagina, uita-te pentru Mike. Este foarte liniar. Dacă există o pagină mai în telefon carte, este, probabil, să-mi iau o secundă, o unitate de timp, Cu toate acestea suntem calcul timp. Așa că s-ar putea trage ca aceasta aceasta linie aici, prin care ca mărimea crește problema de la stânga la dreapta - cartea de telefon devine mai mici la mare - și de timp este de gând să crească pe axa verticală, mai mare cartea de telefon este. Deci, n este doar o variabilă generală care oamenii de stiinta de calculator utilizat pentru a reprezenta o valoare, un număr. Deci, n va crește liniar. Dubla dimensiunea de cartea de telefon, e O să mă ia de două ori mai mult timp, cel mai probabil, pentru a găsi Mike. Acum, am fi putut fi inteligent despre asta, nu? Am fost obtinerea plictisit repede. Ar fi putut face acest lucru de câte doi. Deci două pagini, apoi patru, apoi șase, apoi opt. Și am putea începe să zboare printr-o ceva mai repede, chiar dacă la risc minor de depășire Mike, dar care nu este curba va fi foarte diferit. Este încă de gând să fie o dreaptă linie, dar ceva mai rapid. Dar ce am făcut? Am făcut-o de fapt ceva fundamental mai bine. Am realizat ceea ce vom numi logaritmică timp, jurnalul de n, prin care acest verde linie are o mult, mult, mult margine mai puțin direct la ea. Și mai degrabă, se sugerează, așa cum un fel de se apropie de infinit vreodată atât de treptat, că am putea lua de fapt o mie de pagini cartea de telefon, dubla mărimea anul viitor - să presupunem că o mulțime mai mulți oameni se mute în oraș. Deci, acum am 2.000 de pagini, dar cum mai multe etape este că inteligent Algoritmul de gând să ia? Doar unul. Vreau să spun, că e un lucru puternic. Dacă vom merge la 4.000 de pagini anul viitor, că o să mă ia numai două mai multe etape. Astfel încât să puteți arunca mai mare și mai mare probleme la mine, nu spre deosebire de web este aruncarea probleme mai mari și mai mari în fiecare zi de la Googles și Facebooks de în lume, și nu este o astfel de afacere mare. Pentru că am pus mai mult gândire și de îngrijire în Algoritmul mea cu care să rezolve problemele eficient. Și într-adevăr, care va fi unul dintre obiectivele acestui curs. Veți, de-a lungul drum, învăța cum să program. Veți învăța cum să program în orice număr de limbi. Dar la sfârșitul zilei, cursul este despre rezolvarea problemelor și obținerea mai bine la rezolvarea problemelor - și, la fel ca în cazuri de acest fel, rezolvarea problemelor mai eficient. Acum, până acum, am făcut acest lucru destul de intuitiv. Să introducă ceva destul de generic numit pseudocod. Asa ca vom lua în cele din urmă, în acest curs, pentru a diverse limbaje de programare. Dar azi vom face în limba engleză, cum ar fi sintaxa, în cazul în care doar un fel de spune ce vrei să spui, dar tu ești tot atât de succint și nu vă faceți griji cu privire la gramatică și propoziții complete. Trebuie doar să vă exprimați ca mai concis posibil. Deci, pseudocod este limba engleză, cum ar fi sintaxă care reprezintă un limbaj de programare. Și spre acest scop, permiteți-mi să propun ca ne modela acum procesul de ne-am descris de numărare ceva un pic diferit, de data aceasta luând o uita-te la acest video de cinci minute de produse de prietenii nostri de la TED că definește ceea ce pseudocod este, definește ceea ce gândirea algoritmică este, și chiar deși exemplu, esti pe cale de a vedea este, în sine, super-simplu, e O să încep să ne dea mental Modelul, vocabularul, cu care a face mult, mult mai complex algoritmi destul de repede. [Începe redarea VIDEO] [Redarea muzicii] NARATOR: Ce este un algoritm? În informatică, un algoritm este o set de instrucțiuni pentru rezolvarea unor Problema pas cu pas. De obicei, algoritmii sunt executate de calculatoare, dar noi, oamenii, au algoritmi, precum și. De exemplu, cum te-ai duce despre numărarea de persoane într-o cameră? Ei bine, daca esti ca mine, ai, probabil, Punct la fiecare persoană, unul la un timp, și numere de la 0. 1, 2, 3, 4, și așa mai departe. Ei bine, asta e un algoritm. De fapt, hai să încercăm să-l exprime o bit mai mult formal în pseudocod - Engleză-ca sintaxă care seamana cu un limbaj de programare. Fie N egal 0. Pentru fiecare persoana in camera, stabilit N egal cu N, plus 1. Cum de a interpreta acest pseudocod? Ei bine, linia unu declară, ca să spunem așa, o variabilă numită N și inițializează valoarea sa la 0. Acest lucru înseamnă doar că, la începutul algoritmul nostru, lucru cu care suntem de numărare are o valoare de 0. După toate, înainte de a începe numărarea, nu am numărat nimic încă. Apelarea această variabilă N este doar o convenție. Am fi putut numit-o cel mai mult nimic. Acum linia doi demarks începerea unui buclă, o succesiune de etape care vor repeta un numar de ori. Deci, în exemplul nostru, pas vom lua este de numărare de persoane în cameră. Sub linia doi este linia de trei, care descrie exact cum vom merge de numărare. Indentare presupune că este trei linii, care se va repeta. Deci, ceea ce pseudocod se spune este că după pornirea la 0, pentru fiecare persoana in camera, vom crește N de 1. Acum este acest algoritm corect? Ei bine, hai să-bang-ului pe ea un pic. Funcționează în cazul în care există două persoane în cameră? Să vedem. În conformitate o, am inițializa N la 0. Pentru fiecare dintre aceste două persoane, am incrementa apoi N de 1. Deci, la prima calatorie prin buclă, am actualizat N la 0 la 1. Pe cea de a doua calatorie prin aceeași buclă, am actualizat N 1-2. Și așa până la sfârșitul acestui algoritm, n este 2, care se potrivește într-adevăr, numărul de persoane in camera. Până în prezent, atât de bine. Ce zici de un caz colț, deși? Să presupunem că există 0 persoane în cameră - în afară de mine, cine face numărătoarea. În conformitate o, am inițializa N la 0. De data aceasta, însă, linia de trei nu executa la toate, deoarece nu există o persoană în cameră. Și așa N rămâne 0, care se potrivește Numărul de persoane în cameră. Destul de simplu, nu? Dar de numărare oameni unul la un moment dat este destul de ineficient, de asemenea, nu? Desigur, putem face mai bine. De ce nu conta doi oameni la un moment dat? În loc de numărare 1, 2, 3, 4, 5, 6, 7, 8, și așa mai departe, de ce nu conta, 2, 4, 6, 8, și așa mai departe? Chiar suna mai repede, și cu siguranță este. Să-și exprime această optimizare în pseudocod. Fie N egal 0. Pentru fiecare pereche de oameni în cameră, N setat egal cu N plus 2. Schimbare destul de simplu, nu? Mai degrabă decât numărul de persoane una la un moment dat, am în schimb conta ele două la un moment dat. Acest algoritm este, astfel, de două ori la fel de repede ca ultima. Dar este corect? Să vedem. Funcționează în cazul în care există două persoane în cameră? În conformitate o, am inițializa N la 0. Pentru că o pereche de oameni, am incrementa apoi N de două. Și așa până la sfârșitul acestui algoritm, n este 2, care se potrivește într-adevăr, numărul de persoane in camera. Să presupunem în continuare că există 0 persoane in camera. În conformitate o, am inițializa N la 0. Ca și înainte, linia de trei nu execută la toate, deoarece nu există perechi de persoane în cameră. Și așa N rămâne 0, care într-adevăr coincide cu numărul de persoane in camera. Dar ceea ce în cazul în care există trei persoane in camera? Cum face acest tarif algoritm? Să vedem. În conformitate o, am inițializa N la 0. Pentru o pereche de aceste persoane, am incrementa apoi N de 2. Dar atunci ce? Nu există o altă pereche plin de oameni in camera, astfel încât linia doi nu se mai aplică. Și așa până la sfârșitul acestui algoritm, N este încă 2, care nu este corectă. Într-adevăr, acest algoritm se spune că este buggy, pentru că are o greșeală. Permite atac cu unele noi pseudocod. Se notează cu n egal 0 pentru fiecare pereche de persoane în cameră. Setat N egal cu N, plus 2. Dacă o persoană rămâne nepereche, setat N egal cu N, plus 1. Pentru a rezolva această problemă special, ne-am a introdus, în linie patru, un stare, altfel cunoscut ca o ramură că numai execută în cazul în care există o persoana care nu am putut pereche cu un altul. Iar acum, dacă există unul sau trei sau orice număr impar de persoane, în cameră, acest algoritm va conta acum ei. Putem face chiar mai bine? Ei bine, am putea conta în 3s sau 4s sau chiar 5s și 10s, dar dincolo de asta, e mergi la a lua un pic greu de punct. La sfârșitul zilei, fie că se realizează de computere sau de oameni, algoritmi sunt doar un set de instrucțiuni cu care pentru a rezolva problemele. Acestea au fost doar trei. Ce probleme ai rezolva cu un algoritm? [END redare video] DAVID MALAN: Aceasta este singura dată Eu va apărea în formă de desene animate. Dar, în cazul în care această poveste frunzele, acum, este cum putem face mai bine? Câte trei și patru labe, vom cere, putem conta oameni mult mai rapid, dar putem face fundamental mai bine decât asta? Și eu pariu putem. Dacă vom introduce un pic de propria noastră pseudocod aici, am de gând să propună că putem realiza o linie de genul asta. Noi nu vom conta persoane unul, doi, trei, patru. Noi nu vom merge doi, patru, șase, opt. Vom face în mod fundamental mai bine prin regândirea problema, și în acest caz, pârghie o altfel insuficient de resurse. Într-o clipă, sper că vei ierta și ne plac de picioare în loc, moment în care vom rog pe fiecare dintre voi să-și asume în ta mințile numărul 1. Te apoi merge la din ce în ce dur, cum trece timpul, găsi cineva care este în picioare, combina numerele împreună adăugându-le în sus. Unul dintre voi este apoi merge la cursa de stea mai întâi, iar cealaltă persoană se va repeta. Deci, cu alte cuvinte, prin însămânțarea toți vă cu numărul 1, și apoi combinarea celor 1s în 2S și cele 2s în 4S, cu toată lumea din ce în ce ședinței în jos, ar trebui să ne, la sfârșitul anului acest algoritm, au doar un singur împrumut Sufletul care nu sa așezat destul de repede, dar care are întreaga numărul de audiențe în mintea lui sau a ei. Deci, dacă ar fi, să mergem mai departe și - primul pas - sta in loc. Și executa. [Mulțime murmurând] DAVID MALAN: Stii unde Lauren este? 729? [Mulțime murmurând] DAVID MALAN: În regulă? [Mulțime murmurând] DAVID MALAN: Bine, ar trebui să ne se apropie de final. Vedem un om în picioare aici încă. Cine altcineva trebuie să fie asociat? Dacă vreți să cuplezi. Cineva sus. De ce nu am da o mână de aici. Pentru foarte puțini oameni care sunt încă în picioare, ceea ce numere nu- au în mintea ta? STUDENT: 78. DAVID MALAN: 78 plus - care stă aici? STUDENT: 39. DAVID MALAN: Plus 39. Plus, care mai este încă în picioare? 81? OK, cine altcineva? Un alt 81? Wow. Și atunci ce e în spate? STUDENT: 49. DAVID MALAN: 49, plus? STUDENT: 98. DAVID MALAN: 98 plus? Este că altcineva? 12? Bună treabă. [Râsete] DAVID MALAN: Oh, 112 - oh. Bună treabă! [Râsete] [Aplauze] DAVID MALAN: Oricine altcineva încă în picioare? Îmi pare rău? STUDENT: 99. DAVID MALAN: 99. Oricine altcineva încă în picioare? Și numărul total de studenți aici este, de fapt, în conformitate cu - aveți un număr? Oh, numărul real de persoane în Camera, conform cont că semenii didactice făceau pe cale de toată lumea în, a fost 729. Deci, dintr-o cameră plină de studenții de la Harvard care s-au numărat, Răspunsul este 637. [Râsete] DAVID MALAN: Atât de aproape. Dar încă. OK, astfel că este o învățătură momentul, nu? Acest lucru acum este ceea ce vom descrie ca un bug. Undeva pe drum, am făcut unele aritmetică greșit, sau cineva se așeză, sau la stânga, sau ceva a mers prost. Dar asta e bine. Deoarece chiar și în continuare, ne- am destul de aproape. Și aș spune că am ajuns la greșit răspunde mult mai repede decât mi-ar fi folosind abordarea mea mai liniar. Deci, hai sa presupunem ca am de fapt, aia corecta, dar cred că acum despre ceea ce se întâmpla de fiecare dată, comparativ cu meu propriul algoritm arătând naiv. Unu, doi, trei. Dacă există într-adevăr, 729 sau 637 de persoane aici, care m-ar fi luat literalmente 637 sau 729 pointings de deget și incrementarea numărul meu total. Și am putea face un pic mai bine de merg două, patru, șase, opt, și dubla viteza, poate chiar triple sau Cameră cu patru paturi, în funcție de cât de bine pot face ca numărare a voturilor în capul meu. Dar această abordare ca voi sa a fost fundamental diferit. Pentru că la început, toți s-au ridicat. Deci, tot 729. Și apoi literalmente jumătate de te-ai așezat jos. Și după aceea, un alt jumătate dintre voi așezat. Și după aceea, un alt jumătate dintre voi așezat. Și numărul total de ori pe care le baieti ar fi așezat este de aproximativ opt sau nouă sau zece ori totale, în funcție de ceea ce numărul nostru total este. Și putem rezolva de face acest alt mod. Dacă am fi avut 1.024 de oameni in camera, numărul total de ori, putem înjumătăți 1.024 de oameni este 10. Acum gândiți-vă la cealaltă direcție. Să presupunem, ridicol, că am avut, să zicem patru miliarde de oameni din această cameră, sau o cameră puțin mai mare. De câte ori ne-ar fi dus prin acest algoritm, astfel încât jumătate de clasa sta jos? Este doar de gând să ia 32 de astfel de operațiuni, chiar și într-o clasă de mărime patru miliarde. De ce? Pentru că patru miliarde merge la doi miliarde de euro, se duce la un milion, duce la 500 de milioane, se duce la 250 milioane de euro, punct, punct, punct. Eu pot face numai că divizia de aproximativ 32 ori, moment în care, toată lumea, cu excepția o persoană ar fi ramas in picioare. Și că, de asemenea, este un fel de puternic Ideea că tot vom încerca să pârghie în acest curs, și în programare și informatică mai mult în general, aceste germeni de o idee cu care putem rezolva apoi probleme mult, mult mai puternic. Așa că am început destul de simplu cu care pseudocod și un tip într-o cameră, dar acum cu o camera plina de oameni am făcut fundamental mai bine. Ei bine, hai acum trecerea de la pseudocod la unele codul actual. Acest limbaj sunteți pe cale să se întâmple să fie numit JavaScript, și ne vom întoarce la această spre sfârșitul semestru. Este un limbaj de programare pe care le folosi pentru a face site-uri și alte astfel de software-ul în aceste zile. Și l-am folosit, datorită unui prieten de-al nostru de la Stanford, pentru a codifica unele informații ascunse aici. Aceasta este arta de a steganografia, ca să spunem așa, unde te poți ascunde informații în ceea ce pare altfel fi zgomot sau un complet diferit imagine cu totul. Dar încorporate în această imagine special este într-adevăr un mesaj secret de felul. Așa că lasă-mă să merg mai departe și trage în sus aceeași imagine aici, aceasta timp într-un browser web. Și am de gând să facă cu mâna mea la unele dintre detaliile pentru ziua de azi, în special pentru cei dintre voi care acest lucru arata ca nu numai JavaScript ci grec, ca o complet limbă necunoscută. Dar aceasta este un exemplu de un limbaj de programare. Și de acum, să ia pe credința că aceasta prima linie de cod - și de cod, vreau să spun doar text. Textul pe care am fi putut scris literalmente în Microsoft Word, dacă am avut software-ul potrivit pentru atunci face ceva cu ea. Codul sursă de programare, de programare cod, este de fapt doar de text, și-l arată diferit în funcție de ceea ce limbă pe care îl utilizați, nu spre deosebire de limba engleză și Spaniolă și rusă toate arate diferit atunci când le tastați la tastatură. Deci, această primă linie, de acum ia pe credință, deschide pur și simplu un grafic de internet, care grafic zgomotos tocmai am văzut. Această linie următor aici este un exemplu de buclă, și am văzut că de fapt același jargon în video TED. O buclă este ceva care se întâmplă din nou și din nou, și chiar dacă acest lucru absolut pare criptic, cu cuvânt pentru, și unele paranteze, și unele punct și virgulă. Vom reveni la acest înainte de mult timp, dar că bucla nu este în esență spune programul, repeta peste tot dintre aceste puncte zgomotoase, de la stânga la dreapta, de sus în jos. Deoarece la sfârșitul zilei, o imagine ca acest lucru - și vă puteți de fapt, un fel de-l vezi pe acest proiector - este de fapt doar o grilă de puncte. Deci, putem identifica fiecare dintre aceste puncte de o coordonată, x, y, și cu aceasta Programul, acum putem începe să face ceva pentru aceste puncte. Deci, ce am de gând să merg mai departe aici și nu este am de gând să facă unele schimbări. În primul rând am de gând să merg mai departe și de a scăpa tuturor acestora verzui și albăstrui zgomot, și am de gând să merg mai departe și tastați următoarele Desigur sintaxa criptic. IM pentru imagine. set albastru la locația x, virgulă, locație y, la 0. Cu alte cuvinte, vreau sa doar opriți toate albastru puncte în acea imagine. Am de gând să merg mai departe acum și faceți clic pe acest Run / butonul Save, și veți observa pe partea dreaptă, apare imaginea rezultată. Acum, super-verde sa, dar că nu este surprinzător, pentru că m-am întors literalmente off, prin efectuarea unei 1a 0, toate albastru în fotografie. Ei bine, acum să-l facem un pic mai mult. IM pentru imagine, punct setGreen, x, y. Și asta înseamnă că doar itera din stânga la dreapta și apoi de sus în jos. Oprește-l cu o valoare de la 0, precum și. Salvare. Și de pe proiector, nu puteți de fapt, a se vedea nimic, la toate. Pe ecranul laptop-ul meu, daca ma uit in doar în mod corect, eu pot vedea un pic de o imagine, pentru că sunt încă unele roșu acolo. Dacă ați auzit vreodată acronimul RGB - roșu, verde, albastru - se referă la această compoziție a unei imagini utilizând doar cele trei culori. Și chiar acum, ne-am aruncat tot verde, tot albastru, dar nu e mult roșu. Deci, lasă-mă să manivelă până roșu. Cum pot face asta? Ei bine, în primul rând, am de gând să cer acest program o întrebare. Am de gând să merg mai departe și să-l numim o variabilă, la fel ca în algebra. Puteți avea x sau y sau z. Am de gând să declare o variabilă și spune, a pus în această variabilă, temporar, valoarea imagini valoare getRed la x, y. Și, din nou, ne vom întoarce la toate din acest detaliu în viitor. Dar pentru acum, doar ia de la credință că această linie se cere programul, ceea ce este valoarea roșu la x, y? În acel punct particular? Apoi, am de gând să fac ceva pentru ea. Apoi, am de gând să fac imagine dot set roșu la x, y, y, dar de data aceasta am de gând să impuls de care are de a face ori roșu, să zicem, 10. Deci, crește cu un factor de 10. Lasă-mă depărta acum și click putea rula / Save. Și voila, că a fost acolo tot timp, chiar dacă ochii noștri umane nu a putut chiar vedea. Deci, din nou, acest lucru este acum cod reală, o exemplu de o limbă pe care o vom veni înapoi la înainte de mult timp. Dar dau seama, mai ales cei dintre voi cu nici o astfel de experiență, este destul de curând că ne va fi scrierea de cod de genul asta acolo. De fapt, un instrument cu care ești oarecum familiar, probabil, este de CS50 propriul instrument de curs-shopping, care a fost de fapt repornit în această vară de către unii proprii foști elevi CS50 lui, întoarce acum TFS. Deci, acest lucru se întâmplă să fie un site web construit într-un limbaj numit PHP. Acesta folosește o bază de date numită MySQL, lucrurile cu care vom ajunge pe mâinile noastre murdar mai târziu în semestrul. Dar crezi sau nu, chiar ceva ca aceasta din urmă se reduce la simplu de bucle și condițiile și ramuri, cum ar fi cele am văzut doar o clipă în urmă în video TED. Ceea ce am crezut că mi-ar face acum este parte nu doar ceva ce personalul a făcut pentru campus, ci mai degrabă ceva un fost student - trei studenți, în fapt - făcut acest an trecut, Sierra, Daniel, și Sam, ultimul de care nu a avut înainte experiență de programare când a luat CS50. Și pentru proiectul lor finală, acestea expus, la CS50 Fair, un aplicație numită wrdly, care este un Programul de web-based pentru care au făcut acest film pe care m-am gândit să împărtășesc vă dau un sentiment de doar ceea ce este posibil până la sfârșitul termenului. [Redarea muzicii] DAVID MALAN: Asta-i de la Săptămâna Zero la Săptămâna 12 în acest an trecut. [Aplauze] DAVID MALAN: Ca un teaser, de asemenea, într-adevăr pentru a vă deschide apetitul este de la ceea ce este posibil, este posibil să fi văzut deja, sau ar putea vedea în curând, market.cs50.net, un nou instrument care echipa curs are a fost de lucru pe, de data aceasta în colaborare cu Harvard Student Agenții, astfel că începând cu acest an și continuând sperăm în acest vin de vara va avea un standard de oportunitate în campus pentru a cumpăra și vinde lucruri de interes pentru tine. Și cu parteneriatul prin HSA, veți fi, de asemenea, posibilitatea de a fixa elemente off în unul din magazinele fizice HSA, la unele punct în viitor, astfel încât să se lucruri proxy, în special în ceea ce absolvi și nu doresc neapărat să arunca lucruri, dar de fapt plata transmite la oameni care s-ar putea urma aici, în campus. Astfel mai mult pe care să vină. Dar un pic mai concret, un instrument care a venit din CS50 în recent ani, cu care unii dintre voi ar putea fi familiar și alții dintre voi ar putea fi googling acum, la CS50.net/2x, vei găsi o legătură într-o extensie Chrome care este demonstrativ de modul în care se poate folosesc JavaScript, că aceeași limbă ne utilizat cu Turnul Eiffel acum o clipă, să pună în aplicare 2x viteza de redare pentru toate videoclipurile Harvard iSites. Acest lucru este ceva care este construit în video player propriu CS50 lui. Dar acest lucru, de asemenea, în cazul în care veți începe să sapi în codul sursă, pe care le vom fericit pune la dispoziție, veți vedea cât de puteți rezolva chiar si probleme de genul asta, accelerarea widget-uri în site-uri cu care sunteți deja bine cunoscut. Deci, un cuvânt acum pe cursul și așteptări și ceea ce se află înainte. În general, vom aduna într-adevăr aici în zilele de luni și miercuri - deși aceasta vineri, vom aduna din cauza Săptămâna de cumparaturi - 1:00 - 02:00, deși uneori până la 02:30. Având în vedere că, prin urmare, ați putea dori sau trebuie să ia unele clase de la 02:00 mai departe, sau chiar înainte, ne dăm seama curs este de sustinere a ceea ce se numește înscrierea simultană, prin care vom susține o petiție către Consiliul de anunțuri și dvs. rezident decanii în numele dumneavoastră dacă aveți un conflict undeva în această 1:00 - 02:30 gamă. Meciuri că URL-ul on-line pentru detalii suplimentare. Dar în ceea ce privește structura de sprijin care caracterizează CS50, pentru studenți mai mult și mai puțin confortabil la fel, am ofera piese distincte ale secțiunilor. Și aceasta este o câteva săptămâni off, dar înainte de mult timp, vi se va cere să nivelul de confort. Esti printre cei mai putin confortabil, mai confortabil, sau undeva în între? Și vom avea trei distincte piese care contribuie la exact acele audiențe. Deci, în nici un punct în termen ar trebui să vă chiar simti ca esti in competitie față de orice student cu mai sau mai puțin fundal decât tine. Într-adevăr, cursul este menit să fie mult mai mult de colaborare și mult mai deschisă decât atât. În ceea ce privește seturi de problemă, veți găsi, de asemenea, că, în plus față de Standard Edition a problemei în fiecare săptămână stabilite, există de multe ori un "hacker Edition ", care este menit să fie orientate la 5% la 10% sau astfel de demografic care este într-adevăr printre cei mai confortabil si-ar dori mai mult de o provocare decât standardul Ediția din acest PSET așteaptă. Mai multe detalii despre cele care trebuie găsite în programă. Dar, de asemenea, acolo pot fi găsite detalii pe cursurile de sfârșitul de zile. De obicei problema stabilește sunt datorate în zilele de joi. Cu toate acestea, puteți extinde multe dintre dvs. termenele în această toamnă de la joi la Vineri pur și simplu prin îndeplinirea ne jumătate, ca să spunem așa, răspunde la câteva warm-up întrebări în unele probleme săptămână seturi, care va automat atunci vă dau un plus de 24 de ore. Noi va scădea, de asemenea, cel mai mic dvs. scor, conform programă. Pentru a vă da un sentiment de ceea ce este problema seturi sunt - pentru că este într-adevăr Problema cursului stabilește că în cele din urmă să definească aproape în fiecare experiența student, mai mult decât prelegeri, mai mult decât secțiuni, mai multe mult decât cele mai multe alte aspect al cursului. Anul trecut, de exemplu, am început, ca vom începe în acest an, cu Scratch. Deosebit de aceasta vineri, vom folosi, pentru doar timp de o zi, o grafică limbaj de programare, cu care vom începe de programare prin glisare și in scadere piese de puzzle care numai asambla fizic, dacă are sens să facă acest lucru logic. Săptămâna viitoare, vom repede trecerea la C, un destul de vechi, dar foarte mici și limbaj simplu, care ne va permite să într-adevăr merge la 0 la 60 de-a lungul de doar câteva săptămâni, și apoi pariu aceste competențe și aceeași cunoaștere a constructe de bază în limbaje de nivel superior, cum ar fi PHP, JavaScript, și încă altele încă. Anul trecut, a treia PSET în cursul a fost că de criptografie, un Cererea specifice domeniului în care ne elevii contestat de a realiza orice numărul de cifruri, programe cu care pentru a lupta sau a decoda informații, pentru a cripta. Pentru ediția hacker, prin contrast, ne-a dat elevilor hacker-un fișier de la un calculator standard, Unix conține nume de utilizator și parole, acesta din urmă din care au fost criptate, și am provocat pe cei hacker studenți pentru a decripta, cel mai bine cum au putut, aceste parole, încă de la acea același domeniu. Scramble, un joc cu care unii dintre voi sunt, probabil, familiar. O bucată criminalistica, unde cerem elevilor pentru a recupera datele care au fost altfel șters din propria mea digitală compact flash card camera lui, prin scris de fapt, software-ul pentru a afla, unde au fost zerouri și cele din ca aparat de fotografiat digital, care anterior compus dintr-un grafic JPEG? O provocare de felul anul trecut care implică scris cel mai rapid ortografic posibil, concurente cu prietenii și colegii de clasă, dacă le-ar plăcea. Implementarea Huff 'n Puff, un program de compresie. Și apoi se încheie semestru cu CS50 Finanțe, o aplicație web-based cu care vă creați un site eTrade, cum ar fi să cumpere și să vândă stocurile, astfel încât să vorbesc, de fapt, trăgând aproape cotatii in timp real Yahoo! Finanțe. Ceea ce nu am făcut anul trecut a fost un set de probleme care rămâne cu toate acestea, un favorit. Dacă nu ați plecat la shuttle.cs50.net, veți vedea un utilizator interfață un pic ca aceasta. Dar acum doi ani, clasa implementat, folosind Google Maps și Google Earth plug-in și un pic de savvy de conducere în jurul valorii campus, astfel încât Obiectivul acestui joc a fost, după cum puteți vedea unele dintre fete, este de a conduce în jurul campusului cauta personal, colegii de predare și CAS, și atunci când nu, pune-le pe autobuzul de transfer. Nici unul dintre ei, de fapt par a fi aici, deci vom introduce un cod de ieftin. [Râsete] DAVID MALAN: Acolo mergem. Bine. Și aici este personalul dantelat în întreaga campus. Și, după cum puteți vedea, pe dreapta parte a ecranului, autobuzul de transfer are locuri goale. Iar obiectivul a fost de a scrie cod cu care a simula acest de conducere și ridicarea și fixarea off de pasageri. Acela, de asemenea, folosind un limbaj numit JavaScript. Astfel seama că programele de genul asta se va fie pe aceeași traiectorie noastră acest an, precum și. În ceea ce privește, acum, de sprijin suplimentar, avem ore de birou. După cum s-ar putea fi văzut în casa ta sala de mese sau în Annenberg, vom fi în sala de mese casa săli de patru nopți pe săptămână - Leverett, Pfoho, Eliot și Annenberg acest an, 8:00 - 23:00. Și ceea ce ne-am gandit face în acest an este ceva un pic diferit. Dacă ați auzit zvonuri anul trecut că a fost un pic prea stresant, acest orelor de anul acesta, așa cum vom descrie saptamana viitoare, va fi mult mai organic, prin care la sosire, veți fi expediate la o masă special în cazul în care mai mulți membri ai personalului așteaptă, și vom face lucruri mult mai mult organic. Nu mai coada, nu mai iPad, dar mai degrabă au mai intim conversații în jurul unei mese de doar opt sau așa de studenți, astfel încât să putem aproximativ simt de ceea ce altfel ar fi o clasă mult mai mic. Oferim, de asemenea, aceste lucruri ne numit walkthroughs, video filmat în avans, prin una dintre predarea cursului de baieti, Zamyla, în care ea te plimba prin probleme săptămână seturi, oferind sfaturi și trucuri pentru provocări care stau în față. Și invers, după seturi de probleme sunt datorat, în acest an, vom lansa, de asemenea, clipuri mici numesc post-mortem care de fapt, te plimbi prin soluții reprezentative, atât de bună și rău, prin care se poate deduce cum ai putea avea sau ar trebui să aibă implementat solutia ta. Și ce vom oferi pentru prima dată și în acest an, în special pentru acei studenți care se folosesc Desigur, altul resurse, dar cu toate acestea se luptă prea mult, desigur se va asocia acestor elevi, ca resursele permit, cu tutori, astfel încât aveți o mult mai intim oportunitatea de casa săli de mese permite pentru asistență unu-la-unu. Acum, o privire final de la un de jocuri un scop în vedere. S-ar putea să fie familiarizat cu Hackathon CS50. Ei bine, venind în decembrie, de la 08:00 PM la 7:00, la începutul anului Citirea Perioada, va fi o oportunitate pentru a aduna cu colegii - acest lucru ar fi în jur de 21:00 - în care se arunca cu capul în finala implementarea proiectului, alături colegii, prietenii, și alimente. Acest lucru ar fi în jur de 1:00, atunci când primul lot de alimente au sosit. Și acest lucru este de aproximativ 4:0 că an special la CS50 Hackathon. Dar adevăratul punctul culminant al cursului este menite să Târgul CS50, un nivel de campus Expoziția de propriile proiecte finale, la care familia și prietenii sunt toate invitat, în calitate de recrutori noastre și prietenii noștri din industrie. Aceasta, de exemplu, este o bucatica de Oameni de 2000 de plus care au participat ultimii ani. Expresii de acest gen nu sunt mai puțin frecvente, și de a face similar dvs. colegii plăcere în lucrurile ai realizat. Și, de fapt, spre acest scop, ne-am un eveniment de lansare de termen, precum și. Dacă lucrurile ca acest apel să vă, sau tu ești cel puțin curios ca la ceea ce acest lucru, știu că o nouă tradiție a Cursul se numește CS50 Ziua Puzzle. Și acest lucru a fost instituit un cuplu de ani în urmă pentru a semnala într-adevăr la campus că informatica nu este despre programare, și cu siguranță nu este despre care cuprinde numai acei studenți care au experiență anterioară. Este într-adevăr despre rezolvarea problemelor mai general. Și astfel Puzzle Ziua, pe parcursul ultimilor ani, a evoluat într-un frumos parteneriat cu prietenii noștri de la Facebook, prin care nu va fi fabulos premii și pizza peste râu la I-Lab această sâmbătă vine. Cap de la acea adresă URL cu două sau trei Prietenii dacă doriți să împărtășească în această nouă tradiție. Așa că aș vrea să vă întreb care vă păstrați o lucru în minte, și avem doar o două minute clip pe care pentru a închide astăzi. 73% este numărul să-și amintească. Tort, de asemenea, va va astepta afara acestui transept ca sa continuam la doar o câteva momente, care este o tradiție de curs, precum și. Dar acest lucru este citat cheia de la Programa cursului a păstra în minte. Ceea ce contează în cele din urmă în acest curs nu este atât de mult în cazul în care ajunge în raport cu colegii dumneavoastră, dar în cazul în care te, în săptămâna 12, ajunge în raport cu te în Săptămâna 0. Dar idee pe care vă va lăsa cu aici, astăzi, este aceasta ultima unul aici de nostru același Daniel, care a făcut wrdly video de acum doar o clipă. Am plecat cu această idee de ceea ce se află înainte. Și cum vom face acest lucru, dacă am putea avea CS50 Personalul de la partea din față a camerei pentru a veni în până la stadiul de a picta toate mai mult de o imagine vizuală ca să ceea ce vă așteaptă în acest an - obtinerea ciudat. Vom încheia cu acest aici, pe ecran. [Redarea muzicii] DAVID MALAN: Acesta este CS50. [MUSIC - MATT & KIM, "Este in regula"] SPEAKER 1: Îmi place CS50 mai mult de pisici. DIFUZOR 2: Whoooooooaaaah! [Râsete] DAVID MALAN: Acest lucru, atunci, este CS50. Vă vom vedea vineri. [Aplauze si a aplauda] NARATOR: La CS50 următoare, o scena demo-ul nu merge conform planului. DAVID MALAN: Vrem să găsim Mike Smith în cartea de telefon. Ei bine, ce sunt instinctele tale? S-ar putea sari aproximativ la mijlocul cartea de telefon, privirea în jos, vedem că Sunt la M, și eu știu acum că Mike Smith nu este la stânga. El trebuie să fie la dreapta. Și astfel încât în ​​acest moment, am se poate rupe literalmente - În acest moment, putem rupe literalmente - În acest moment, putem figurat rupe cartea de telefon în jumătate. [Vibreze ukelele]