[MUSIC PLAYING] [MUSICA - ROSSINI, "RANZ DES VACHES "dal Guglielmo Tell] [MUSICA - THE BEAT INGLESE, "MARZO DEI CAPI Orientamento "] [Applausi e tifo] DAVID MALAN: Quindi questo è CS50. Il mio nome è David Malan. E il 73% di voi non hanno alcuna esperienza precedente con l'informatica, contrariamente a quanto si potrebbe pensare. Così oggi abbiamo pensato di sgretolare a che la mancanza di familiarità, ma anche vi darà un senso di, per quelli di voi più comfort, quali direzioni si può andare in questo semestre. Quindi cominciamo con questo. Io davvero non ho idea di quello che c'è dentro di un computer, anche se, come te, ho usare ogni giorno. Ma è una specie di scatola, e non c'è non molti ingressi in esso. Minimamente, non c'è, che cosa? Probabilmente un cavo di alimentazione. E in effetti con questo ingrediente, elettricità, ci sembrano essere in grado di facendo un bel po 'in questi giorni. Ma alla fine della giornata, abbiamo devono rappresentare le cose che ci sta a cuore. Dobbiamo rappresentare le informazioni in qualche forma. E tu sei probabilmente almeno vagamente familiarità con l'idea di binario o bit in qualche modo, i computer ridotta a zero e uno. Ma possiamo abbracciare e che almeno mettere un po 'di luce a questo? Così ho questi piccoli lampade da tavolo qui. Ho una presa elettrica qui. E ho intenzione di proporre che all'interno del mio computer è almeno uno dei queste cose, qualcosa capace di essere acceso o spento. In questo caso, è davvero una lampada da tavolo, ma a livello più basso, è qualcosa chiamato un transistor. Ma nel nostro mondo, è una lampada da scrivania, in modo Ho intenzione di andare avanti e collegare questo nella mia elettricità qui. E io sostengo che l'utilizzo di questo semplice, semplice dispositivo, questo semplice interruttore, ho può rappresentare informazioni. Per esempio, in questo momento, io sono rappresenta niente, giusto? Sto rappresentando ciò che io chiamo 0 o falso, il contrario di qualcosa effettivamente essere presenti. Ma se io semplicemente rivolgo questo interruttore, ora ho rappresentato un 1. Quindi, utilizzando questo semplice pezzo di memoria, se si vuole, mi può rappresentare informazioni. Ora, purtroppo, il mio computer non può fare più di tanto. Esso può rappresentare solo due valori in tutto il mondo - 0 o 1. Ma che cosa è una soluzione ovvia, ora, se vogliamo espandere il nostro computer di memoria e rappresentare più che solo 0 e 1? Bene, cerchiamo di prendere un altro po 'così. Andiamo a prendere un altro interruttore, un altro transistor, comunque ti piacerebbe pensarci. Lasciami andare avanti e collegarlo nel mio computer come bene. E ho intenzione di rivendicare, ora, che da utilizzando un po 'più elettricità e girando più di questi switch on e fuori, posso rappresentare più tale informazioni. Quindi, in questo momento, questo è 1. Se voglio ora rappresentare 2, avrei potuto fare questo. Ma in genere, convention, come vedremo finalmente vedere, avrà a fare questo. Quindi questo è 0, questo è 1. Questo sarebbe 2. E non a caso, questo sarebbe 3. In questo modo, comunque, possono contiamo ancora di più? Se ho un terzo bit, un terzo interruttore, qual è il numero più alto che posso ora contare fino a da 0? Quindi 7 se sto partendo da 0, giusto? Perché se mi rivolgo questa luce accesa e effettivamente collegare questa terza e ultima luce nella mia presa di corrente qui, poi ho la capacità di rappresentare qualsiasi dei due valori qui, due valori qui, due valori qui - e quindi posso rappresentare 2 volte 2 volte 2, o otto possibili valori. E se mi metto contabilità a 0, quindi questo è 0, 1, 2, 3, 4, 5, 6, 7. Quindi questo binario. E 'davvero così semplice come sembra. E direi che questo è in realtà abbastanza familiare alla maggior parte tutti in questa stanza. Lasciami andare avanti e aprire un piccolo editor di testo qui. E si potrebbe richiamare dalla scuola elementare che avevamo cose come le centinaia luogo, il posto delle decine, e quelle posto. E ricorda che se tu avessi qualche decimale numero, come qualcosa di casuale come il 123, si farebbe essenzialmente scrivere che in forma di questi tre colonne. E perché è 1, 2, 3 quello che noi conosciamo come 123? Ebbene, nella colonna più a sinistra, abbiamo uno 100 più due 10s, così che è 120, più tre 1s, così che è 123. Ora questo mondo che abbiamo appena illuminati è esattamente lo stesso come siete stati a conoscenza da anni, solo che adesso, le nostre colonne non sono potenze di 10. Sono solo potenze di 2. Così, mentre questo è il posto quelle, questo sta per essere il luogo in gruppi di due, questo è sarà il posto a quattro zampe. E poiché Io uso solo la più semplice di meccanismi per cambiare le cose on e off - elettricità fluisce o di energia elettrica non scorre - Non ho ben ho la stessa espressiva Campo da 0 a nove. Abbiamo intenzione di tenerlo super semplice in questo mondo di computer. Ho solo 0 o 1 - spento o acceso, falso o vero. E così quello che sto rappresentando in questo momento è 1, 1, 1, perché ciascuno di essi le luci sono accese. Beh, questo mi dà un 4 più uno due, in modo da che è 6, più un 1, e questo è 7. E ergo fa questa sequenza di tre bit rappresentano il numero 7. Quindi tutto questo tempo, all'interno della vostra calcolatore, sono stati qualsiasi numero di transistori, qualsiasi numero di bit. Ma alla fine della giornata, abbiamo può rappresentare informazioni più semplicemente quello. Ora, purtroppo, abbiamo solo contato fino a 7 in CS50 finora, ma speriamo di fare un po ' meglio di così. E in effetti possiamo. Supponiamo che noi, come esseri umani solo arbitrariamente deciso che ci accingiamo associare numeri come 1 e 2, 3, 4, 5, 6, 7, con lettere specifiche di l'alfabeto. E per ragioni storiche, ho intenzione di Comincio un po 'arbitrariamente, ma sono per dire, gli esseri umani, ci accingiamo a decidere come standard, a livello globale, che 65 rappresenta il numero la lettera A. 66 rappresenterà B. Dot, puntini, puntini. 90 rappresenterà la lettera Z. E supponiamo, se davvero mettere un po ' pensiero in esso, si potrebbe venire con i numeri di punti esclamativi e le lettere minuscole, e anzi, altre persone hanno fatto per noi. Così ora abbiamo avuto punte con cui possiamo rappresentare i numeri, i numeri con i quali possiamo rappresentare lettere, e con lettere possono ora iniziare a comporre messaggi di posta elettronica e caratteri di stampa sullo schermo. Quindi, mi permetta di invito, se potessi, otto volontari coraggiosi - che non mente che appare non solo sulla macchina fotografica, ma su internet - di venire qui e rappresentano otto tale bit, piuttosto che questi tre. Così come su uno, due? Che ne dici di tre? Che ne dici di quattro in luce blu, cinque alla fine? A proposito qualcuno qui? Sei di fronte, sette davanti, e otto di fronte, pure. Così ho solo così è capitato di venire preparati con tutta una serie di strisce di carta. E su questi pezzi di carta sono numeri che rappresentano le colonne voi ragazzi stanno andando a rappresentare. Così si sarà - come ti chiami? STUDENTE: Anna Lia. DAVID MALAN: Anna Leah, è sarà la colonna 128s. Lei è? STUDENTE: Chris. DAVID MALAN: Chris volontà essere la colonna 64s. Lei è? STUDENTE: Dan. DAVID MALAN: Dan essere la colonna 32s. STUDENTE: Pramit. DAVID MALAN: Pramit volontà essere la colonna 16s. STUDENTE: Lillian. DAVID MALAN: Lillian sarà il 8s. STUDENTE: Jill. DAVID MALAN: Jill volontà essere la colonna 4s. STUDENTE: Maria. DAVID MALAN: Maria sarà il 2s, e? STUDENTE: David. DAVID MALAN: David volontà essere la colonna 1s. Quindi, se voi ragazzi poteste passo un po ' avanti in modo che tutti possano vedere. Che voi ragazzi non si vede è che il retro di questi fogli di carta è un piccolo foglietto che sta per istruire questi otto bit a uno alzare la mano o no alzare la mano. Se la mano va su, sono rappresenta un 1. Se la mano resta giù, sono rappresenta un 0. Nel frattempo, abbiamo il pubblico dovrebbe essere in grado di capire, in base a questo mappatura, cosa parola di tre lettere questi persone stanno per precisare. Quindi, in un momento, si sta andando a leggere la prima riga dal retro di il vostro foglietto, e tu sei uno dei due andando ad alzare o non alzare la mano. Se sei un 1, si alza, se sei un 0, tu stai lì goffamente, proprio così. Go. Che numero, prima di tutto, stanno rappresentando questi ragazzi? 66. 66, giusto? Abbiamo un 1 nella colonna 64s, un 1 nella colonna 2s. Questo mi dà 66, in modo da visualizzare di rappresentare B. Quindi voi ragazzi hanno scritto - OK, questo è sufficiente. B. Così ora passiamo sul la seconda lettera. Go. Chi è più veloce in matematica qui? Così 79. Anche in questo caso, se sommiamo tutte le colonne in cui c'è un 1, attualmente, basta come abbiamo fatto prima con il più semplice di esempi di 7, ora ottenere il numero 79. Che secondo la nostra mappatura è il lettera O. Così ci siamo quasi. B, O. E, infine, andare. Che cosa stanno rappresentando ora? Meno consenso. Questo è solo un mormorio assoluto. Sì, è in realtà 87. Buono. Quindi, se abbiamo un mappa che indietro fino a - diamo iniziare a chiamare la nostra tabella ASCII, Americana Standard Code for Information Interchange. Questo ci dà la lettera - non "bo", ma "arco". E questo è un perfetto spunto per voi ragazzi a prendere un arco e la testa sulla schiena. Grazie mille. [Applausi] DAVID MALAN: è possibile tenerli. Anche se in realtà, qualcuno dovrebbe come una lampada da tavolo, anche? [HOOT DAL PUBBLICO] DAVID MALAN: Lampada da scrivania? [Risata] DAVID MALAN: Davvero? Lampade da tavolo per tutti? D'accordo. Così cominciare dal più semplice dei principi, abbiamo ora non solo contato su da 0 tutta la strada fino a 7, abbiamo ipotizzato che proprio da buttare di più bit o più luci o più transistor a questo problema, possiamo rappresentare i numeri sempre più grandi, e ergo, gamme sempre più grandi di alfabeti, come l'inglese. E proprio diamo sulla fede per oggi che allo stesso modo potremmo iniziare a rappresentare grafica e video e qualsiasi numero di altri mezzi di comunicazione con cui siamo familiare oggi. Quindi questo è CS50, ed in questa classe a fianco di voi sono, ancora una volta, molto numerosi compagni di classe che hanno come poco esperienza come te. E Dico questo solo perché molto spesso, anche di recente, uno dei la matricola consulenza eventi e alle sophomore della scorsa primavera consulenza evento, si sente spesso studenti declinano quando venire al tavolo CS, bene, Ho pensato di prendere questo classe intro, ma io non sono davvero un persona computer. Oppure, ma tutti sicuramente sa più di me. E ho messo questo nel font più grande possibile, di trasmettere questo messaggio che questo non è effettivamente il caso. E se vi state chiedendo, dovrebbe Io, infatti, essere qui? Rendetevi conto che non è solo di questo corso titolo Introduzione alla Computer Scienza, è Introduzione alla Computer Scienza I. Quindi non vi è infatti un secondo tale introduzione. Quindi non sei, infatti, nel posto sbagliato. E tra gli obiettivi che ho per oggi sono a placare tali preoccupazioni si potrebbe avere, ma anche per dipingere un foto di quello che c'è in serbo per gli studenti di meno e più confortevole allo stesso modo in questo corso. Ma prima, una parola su una delle dispense che avete oggi, tra i quali sono una serie di domande frequenti. E 'stata una visione del nostro per un certo tempo ora di introdurre una nuova classificazione opzione in questo corso - vale a dire, SAT / UNSAT. Filosoficamente per me, è molto molto, molto più importante che la studenti in questa classe si confrontano con il materiale, essere contestata dal materiale, e preoccuparsi molto, molto meno su la meccanica di punteggi effettivi e gradi di lettera al semestre di fine, ma vivere l' corso e il suo materiale. E proprio questo si sente, più in generale, per ciò che è interessante per loro, a sentirsi sfidati e premiati, ma senza paura di fallire. E in effetti, anche questo è un ricorrente tema in questo e in altri introduttivo corsi in altri campi, che avete questa trepidazione quando si tratta di mettere i propri piedi in acque sconosciute. Io stesso, nel 1995, era una matricola. Ero molto concentrato sul benessere un concentratore Gov qui. Eppure avevo sempre cresciuto con un po ' di un interesse per l'informatica. Sono sempre stato curioso. Ma allora, ancora, ho avuto questa paura di nemmeno mettere piede in CS50, tanto in modo che non ho nemmeno negozio esso anno da matricola. E l'unico motivo per cui ho messo un piede in porta secondo anno è stato perché ho è stato permesso di prendere pass / fail. Ma anche Pass / Fail richiesto che ottengo il coraggio di prendere un appuntamento con il professor Kernehan, al momento, portare questo grande foglio di carta, e chiedere lui per la sua firma e il suo il permesso di esplorare queste acque sconosciute. E non ha aiutato negli ultimi anni che quando si fa questo in CS50, quando abbiamo usato per essere pass / fail, similmente sarebbe decine o centinaia di tuoi compagni di classe avere a venire, Dio non voglia, al davanti a Sanders con questa forma, che in alcune menti rappresenta una incapacità, Oserei dire, per eseguire sono di livello i vostri coetanei. Il che è ridicolo, ma io credo che c'è quella mentalità. E non c'è mai stato in questa cultura di SAT / UNSAT, o passa / non passa più generalmente, in questo corso, o davvero in questo campus. Così quest'anno abbiamo cambiato quello. Sarei metà estatica di questa classe o più finita per prendere CS50 SAT / UNSAT. In un anno di tempo, sarebbe meraviglioso se quasi tutti sono. Successivamente forse lavoreremo sulla lettera gradi di Harvard Collegio più in generale. Ma per ora, lo faremo all'interno della nostra proprio ambito, e lo farei di cuore invitiamo a rivedere le domande frequenti e porre domande, come si vede in forma, in modo che speriamo che, a differenza di me, non sarà abbastanza avere lo stesso fattore di paura quando esplorare ciò che è probabilmente un luogo sconosciuto. Così che cosa è CS50? Si tratta di una introduzione al aziende intellettuale di informatica la scienza e l'arte della programmazione. Ma che cosa significa in realtà? Beh, finora, abbiamo parlato molto brevemente di rappresentazione delle informazioni. Ma supponiamo che vogliamo davvero di fare qualcosa con esso. Abbiamo bisogno di introdurre la nozione di quello che chiameremo un algoritmo. Un algoritmo è una procedura, un processo, un insieme di istruzioni per fare qualcosa. E un algoritmo può essere qualcosa super semplice. Per esempio, un esempio con cui alcuni di voi potrebbe avere familiarità è presente cosa qui. Quindi questo libro qui è sempre più datato, ma un tempo, si conteneva un sacco di nomi e numeri di telefono. E in effetti, se volevo trovare qualcuno in questa rubrica - dire, qualcuno di nome Mike Smith - Sono riuscito a trovare Mike Smith in qualsiasi numero di modi abbastanza semplici. Potrei cominciare dall'inizio e passare alla pagina 1, non c'è. Pagina 2, non c'è. Page 3. E 'questo algoritmo, è che processo, giusto? Quindi è corretto, giusto? Sono un po 'un idiota per farlo in che modo, ma alla fine lo farò trovare il cognome S, e si spera Mike è in quella sezione, e io diventerò fatto con il mio algoritmo. Ma sicuramente non è intuitivo. La maggior parte ogni uomo ragionevole in questo camera non avrebbe fatto questo. Che cosa avresti fatto? Saresti andato dritto al centro, giusto? Circa a metà. E ti rendi conto, oh, questi sono i Ms. Così Mike Smith, il cognome essendo Smith, non è, chiaramente, quindi nel la metà sinistra del libro. Egli deve essere verso il S 'nel giusto. E a questo punto, anche se la maggior parte di noi non fare questo, in realtà, possiamo letteralmente strappare questo problema a metà. [Applausi e applausi] DAVID MALAN: Grazie. [Applausi e applausi] DAVID MALAN: si può letteralmente strappare questo problema a metà, lasciandomi con, letteralmente, un problema grande come un mezzo. Quindi, se questa rubrica è stata - ed è probabilmente era - circa 1.000 pagine, ora è solo 500. Se lo faccio di nuovo questo e mi rendo conto, oh, accidenti, sono andato troppo lontano, io sono in Ts sezione, posso allo stesso modo - metaforicamente o letteralmente - strappare l'elenco telefonico - era in realtà molto più facile che il tempo. Posso letteralmente strappare la rubrica telefonica a metà, lasciandomi ora con non 1.000, non 500 - 250 pagine. E posso andare a 125, e la metà di quello, e metà di quella, e la metà di questo, fino a quando finalmente sarò lasciato con solo una singola pagina. [Risata] DAVID MALAN: Questo è il parte non riesco a. Una pagina singola su cui Mike si spera sia. Ora quelle differenti algoritmi possono essere sorta di o che siano valutate in modi diversi. Il primo è stato molto lineare, giusto? Girare pagina, cercare Mike. Girare pagina, cercare Mike. E 'molto lineare. Se c'è ancora una pagina nel telefono libro, è probabilmente andando a prendere me un altro secondo, una unità di tempo, tuttavia stiamo calcolando il tempo. Quindi potrei disegnare come questa questa linea qui, per cui la dimensione della problema aumenta da sinistra a destra - rubrica telefonica diventa più piccolo al più grande - e il tempo è destinato ad aumentare in l'asse verticale, maggiore la rubrica è. Quindi n è solo una variabile generale che gli informatici utilizzano per rappresentare qualche valore, qualche numero. Quindi n è destinato ad aumentare linearmente. Raddoppia la dimensione della rubrica telefonica, è andando a prendere me il doppio tempo, molto probabilmente, di trovare Mike. Ora avrei potuto essere intelligente su questo, giusto? Stavo annoiando in fretta. Avrebbe potuto fare questo a due a due. Così due pagine, poi quattro, poi sei, poi otto. E potrei iniziare a volare attraverso un piccolo più velocemente, seppure a rischio minore di overshooting Mike, ma che la curva non è sta per essere così diverso. E 'ancora in corso di essere un dritto linea, ma leggermente più veloce. Ma che cosa ho fatto? Ho effettivamente fatto qualcosa fondamentalmente meglio. Ho ottenuto quello che noi chiameremo logaritmica tempo, registro di n, per cui questo verde linea ha una molto, molto, molto edge meno direttamente ad esso. E invece, suggerisce, come una sorta di tende all'infinito mai così a poco a poco, che ho potuto effettivamente prendere un 1.000-pagina rubrica telefonica, raddoppiare le sue dimensioni l'anno prossimo - perché supponiamo che un sacco sempre più persone si muovono in città. Così ora ho 2.000 pagine, ma come molti più passi è che più intelligenti algoritmo di andare a prendere? Solo una. Voglio dire, che è una cosa potente. Se andiamo a 4.000 pagine l'anno prossimo, che sta andando a prendere me solo altri due passi. Così si può buttare sempre più grande problemi a me, non a differenza del web è gettando i problemi sempre più grandi ogni giorno alle Googles e Facebooks di il mondo, e non è un grande affare. Perché ho messo più il pensiero e la cura in mio algoritmo con cui risolvere problemi in modo efficiente. E in effetti, che sarà uno dei gli obiettivi di questo corso. Si vuole, lungo la strada, imparare a programmare. Potrai imparare a programmare in qualsiasi numero di lingue. Ma alla fine della giornata, il corso è sulla risoluzione dei problemi e ottenere meglio a risolvere i problemi - e, come in casi come questo, la risoluzione di problemi più efficiente. Ora, finora, abbiamo fatto questa abbastanza intuitivo. Cerchiamo di introdurre qualcosa di abbastanza generico chiamato pseudocodice. Così avremo finalmente arriviamo, in questo corso, per vari linguaggi di programmazione. Ma oggi lo faremo in inglese-come sintassi, dove basta sorta di dire quello che vuoi dire, ma tu sei sempre così succinta e non si preoccupano di grammatica e frasi complete. Devi solo esprimerti come conciso possibile. Così pseudocodice è simile all'inglese sintassi che rappresenta un linguaggio di programmazione. E verso quel fine, lasciatemi propongo ora modellare il processo che abbiamo appena descritto di contare qualcosa di un po ' diversamente, questa volta prendendo un guardate questo video di cinque minuti prodotto dai nostri amici di TED che definisce ciò che è pseudocodice, definisce ciò che pensiero algoritmico è, e anche se l'esempio che state per vedere è, in se stessa, super semplice, è intenzione di iniziare a darci il mentale modello, il vocabolario, con cui fare molto, molto più complessa algoritmi abbastanza rapidamente. [BEGIN RIPRODUZIONE VIDEO] [MUSIC PLAYING] NARRATORE: Che cos'è un algoritmo? In informatica, un algoritmo è un set di istruzioni per la risoluzione di alcuni problema passo per passo. Tipicamente, gli algoritmi vengono eseguiti da computer, ma noi umani abbiamo algoritmi, pure. Per esempio, come si va di contare il numero di persone in una stanza? Beh, se siete come me, si sarebbe probabilmente punto in ogni persona, uno alla una volta, e contare da 0. 1, 2, 3, 4, e così via. Beh, questo è un algoritmo. In realtà, cerchiamo di esprimere un po 'più formale in pseudocodice - Inglese-come sintassi che assomiglia un linguaggio di programmazione. Sia N uguale 0. Per ogni persona in camera, impostare N uguale a N + 1. Come interpretare questo pseudocodice? Beh, linea uno dichiara, per così dire, una variabile chiamata N e inizializza il suo valore a 0. Questo significa solo che all'inizio di il nostro algoritmo, la cosa con la quale contiamo ha un valore di 0. Dopo tutto, prima di iniziare il conteggio, non abbiamo ancora contato nulla. Chiamare questa variabile N è solo una convenzione. Avrei chiamato più nulla. Ora linea due demarks l'inizio di una loop, una sequenza di passi che ripetere certo numero di volte. Quindi, nel nostro esempio, il passo che stiamo prendendo sta contando persone nella stanza. Sotto la linea due è la linea tre, che descrive esattamente come andremo a contare. Il rientro implica che si tratta di tre linee che si ripeteranno. Così che cosa lo pseudocodice sta dicendo è che dopo aver iniziato a 0, per ciascun persona nella stanza, faremo aumentare N di 1. Ora è questo algoritmo è corretto? Bene, Bang on un po '. Funziona se ci sono due persone nella stanza? Vediamo. In linea uno, inizializziamo N a 0. Per ciascuna di queste due persone, abbiamo poi incrementiamo N da 1. Quindi, il primo viaggio attraverso il cappio, aggiorniamo N 0-1. Al secondo viaggio attraverso quella stessa cappio, aggiorniamo N 1-2. E così per la fine di questo algoritmo, n è 2, che in effetti corrisponde al numero di persone nella stanza. Fin qui, tutto bene. Come su un caso d'angolo, però? Supponiamo che ci sono 0 persone in sala - oltre a me, che sta facendo il conteggio. In linea uno, inizializziamo N a 0. Questa volta, però, non linea tre eseguire a tutti in quanto non vi è un persona nella stanza. E così N rimane 0, che corrisponde al numero di persone nella stanza. Abbastanza semplice, giusto? Ma conteggio persone una alla volta è piuttosto inefficiente, troppo, no? Sicuramente possiamo fare meglio. Perché non contare due persone alla volta? Invece di contare 1, 2, 3, 4, 5, 6, 7, 8, e così via, perché non conta, 2, 4, 6, 8, e così via? E anche i suoni più veloce, ed è sicuramente. Diamo esprimono questa ottimizzazione in pseudocodice. Sia N uguale 0. Per ogni coppia di persone in camera, impostare N pari a N + 2. Abbastanza semplice cambiamento, giusto? Piuttosto che le persone contano uno alla volta, noi invece contiamo due alla volta. Questo algoritmo è quindi due volte veloce come l'ultima. Ma è corretto? Vediamo. Funziona se ci sono due persone nella stanza? In linea uno, inizializziamo N a 0. Per usare una coppia di persone, abbiamo poi incrementiamo N per due. E così per la fine di questo algoritmo, n è 2, che in effetti corrisponde al numero di persone nella stanza. Supponiamo successivo che ci sono 0 persone nella stanza. In linea uno, inizializziamo N a 0. Come prima, la linea tre non esegue affatto, poiché non ci sono i paia di persone nella stanza. E così N rimane 0, che anzi corrisponde al numero di persone nella stanza. Ma cosa succede se ci sono tre persone nella stanza? Come funziona questo algoritmo tariffa? Vediamo. In linea uno, inizializziamo N a 0. Per un paio di quelle persone, abbiamo poi incrementiamo N da 2. Ma allora che cosa? Non vi è un altro paio pieno di persone nella stanza, in modo da linea due no applica più. E così per la fine di questo algoritmo, N è ancora 2, il che non è corretto. In effetti, questo algoritmo ha detto di essere buggy, perché ha un errore. Consente di correggere con qualche nuovo pseudocodice. Sia n uguale 0 per ogni coppia di persone in camera. Impostare N pari a N + 2. Se una persona rimane spaiato, impostare N pari a N + 1. Per risolvere questo problema particolare, abbiamo introdotto, in linea quattro, un condizione, altrimenti noto come un ramo che viene eseguito solo se c'è una persona che non poteva coppia con un altro. E così ora, se c'è uno o tre o qualsiasi numero dispari di persone la stanza, questo algoritmo sarà ora contarli. Possiamo fare ancora meglio? Beh, potremmo contare in 3s o 4s o anche 5s e 10s, ma al di là di questo, è andando a prendere un po ' difficile punto. Alla fine della giornata, se eseguito dai computer o esseri umani, algoritmi sono solo un insieme di istruzioni con che per risolvere i problemi. Questi sono solo tre. Quale problema si risolve con un algoritmo? [FINE RIPRODUZIONE VIDEO] DAVID MALAN: Questa è l'unica volta Io apparirò in forma di cartone animato. Ma dove la storia lascia fuori, ora, è come possiamo migliorare? Tre e quattro zampe, si pretende, si possono contare persone molto più veloce, ma possiamo fare fondamentalmente meglio di così? E scommetto che possiamo. Se introduciamo un po 'del nostro pseudocodice qui, ho intenzione di proporre che siamo in grado di realizzare una linea come questa. Non stiamo andando a contare le persone uno, due, tre, quattro. Non abbiamo intenzione di andare a due, quattro, sei, otto. Stiamo andando a fare fondamentalmente meglio da ripensare il problema, e in questo caso, facendo leva su un altrimenti sottoutilizzate risorse. In un momento, spero che perdonerai e umorismo ci da in piedi in luogo, al punto che andremo a chiedere a ognuno di voi di assumere in mente il numero 1. Stai andando poi a sempre più goffamente, col passare del tempo, trovare qualcun altro che è in piedi, si combinano i numeri insieme aggiungendole up. Uno di voi è poi andare a correre a sedersi primo down, e l'altra persona sta per ripetere. Quindi, in altre parole, mediante inseminazione di tutti con il numero 1, e quindi combinando quelli 1s in 2s e quelli 2s in 4s, con tutti sempre più seduti, dovremmo, al termine del questo algoritmo, hanno solo un prestito anima che non si sedette abbastanza veloce ma che ha l'intero conteggio pubblico nella sua mente. Quindi, se volete, andiamo avanti e - passo uno - stare in piedi al suo posto. Ed eseguire. [FOLLA mormorando] DAVID MALAN: Sai dove Lauren è? 729? [FOLLA mormorando] DAVID MALAN: Va bene? [FOLLA mormorando] DAVID MALAN: Va bene, dovremmo essere quasi alla fine. Vediamo un collega qui in piedi ancora. Chi altro deve essere associato? Se voi volete fare coppia. Qualcuno sulla parte superiore. Perché non dare una mano qui. Per le poche persone che sono ancora in piedi, che numeri ti avere nella vostra mente? STUDENTE: 78. DAVID MALAN: 78 plus - che sta in piedi qui? STUDENTE: 39. DAVID MALAN: più 39. Più che altro è ancora in piedi? 81? OK, chi altro? Un altro 81? Wow. E allora cosa c'è dietro? STUDENTE: 49. DAVID MALAN: 49, più? STUDENTE: 98. DAVID MALAN: 98 plus? E 'qualcun altro? 12? Buon lavoro. [Risata] DAVID MALAN: Oh, 112 - oh. Buon lavoro! [Risata] [Applausi] DAVID MALAN: Chiunque altro ancora in piedi? Siamo spiacenti? STUDENTE: 99. DAVID MALAN: 99. Chiunque altro ancora in piedi? E il numero totale di studenti qui è in realtà, secondo - avete un numero? Oh, il numero effettivo di persone nel stanza, secondo l'account che i compagni di insegnamento stavano facendo sulla strada di tutti in, era 729. Così fuori di una stanza piena di studenti di Harvard che si contato, la risposta è 637. [Risata] DAVID MALAN: Così vicino. Ma ancora. OK, quindi questo è un insegnamento momento, giusto? Questo ora è ciò che noi descriviamo come un bug. Da qualche parte lungo la strada, abbiamo fatto un po 'di aritmetico sbagliato, o qualcuno si sedette, o di sinistra, o qualcosa è andato storto. Ma va bene così. Perché anche ancora, abbiamo ottenuto abbastanza vicino. E direi che siamo arrivati ​​alla sbagliato rispondere molto più velocemente di quanto avrei usando il mio approccio più lineare. Quindi supponiamo che abbiamo infatti otteniamo che correggere, ma pensare ora a cosa che accadeva ogni volta, contro la mia proprio ingenuo algoritmo di puntamento. Uno, due, tre. Se ci sono infatti 729 o 637 persone qui, che mi avrebbe preso letteralmente a 637 o 729 puntamenti del dito e incrementare il mio conteggio totale. E ho potuto fare un po 'meglio di andare due, quattro, sei, otto, e raddoppiare la velocità, forse anche tripla o quadruple, a seconda di quanto bene posso fare che contare nella mia testa. Ma questo approccio che voi ragazzi ha preso era fondamentalmente diverso. Perché all'inizio, voi tutti si alzarono. Quindi tutto 729. E poi letteralmente la metà di si sedette. E dopo che, un'altra la metà di voi si sedette. E dopo che, un'altra la metà di voi si sedette. E il numero totale di volte che si ragazzi avrebbero potuto sedere è più o meno otto o nove o dieci volte in totale, seconda di ciò che il nostro conteggio totale è. E possiamo ordinare di fare questo l'altro modo. Se abbiamo avuto 1.024 persone nella stanza, il numero totale di volte che si poteva dimezzare 1.024 persone è 10. Ora pensate a l'altra direzione. Supponiamo, ridicolmente, che abbiamo avuto, diciamo quattro miliardi di persone in questa stanza, o una camera leggermente più grande. Quante volte avremmo andati attraverso questo algoritmo, tale che metà di quella classe si siede? E 'solo andando a prendere 32 ad operazioni, anche in una classe di dimensione quattro miliardi. Perché? Perché quattro miliardi vanno ai due miliardi di euro, va a un milione, va a 500 milioni di euro, va a 250 milioni di euro, dot, dot, dot. Posso solo fare un po 'di quella divisione 32 volte, a quel punto, tutti tranne una persona sarebbe rimasta in piedi. E questo, anche, è una sorta di potente idea che sempre cercheremo di leva in questo corso, e in la programmazione e l'informatica più generalmente, questi germi di un'idea con quale possiamo poi risolvere problemi molto, molto più potente. Così abbiamo iniziato abbastanza semplice con quella pseudocodice e un ragazzo in una stanza, ma ora con tutta una stanza piena di gente abbiamo fatto decisamente migliore. Bene, ora transizione da pseudocodice di un codice vero e proprio. Questo linguaggio che state per vedere accadere di essere chiamato JavaScript, e torneremo a questo verso fine del semestre. E 'un linguaggio di programmazione che si usare per fare siti web e altri come software in questi giorni. E lo abbiamo usato, grazie a un amico dei nostri a Stanford, per codificare alcune informazioni nascoste qui. Questa è l'arte della steganografia, per così dire, dove si può nascondere informazioni in ciò che altrimenti sembra essere un rumore o una completamente diversa immagine del tutto. Ma incorporato in questa particolare immagine è davvero un messaggio segreto di sorta. Quindi, mi permetta di andare avanti e tiro su la stessa immagine qui, questa tempo in un browser web. E ho intenzione di sventolare la mano ad alcuni dei i dettagli per oggi, in particolare per quelli di voi che questo sembra non solo di JavaScript, ma greco, come un completamente lingua sconosciuta. Ma questo è un esempio di un linguaggio di programmazione. E per ora, prendere sulla fede che questa prima riga di codice - e per codice, mi riferisco solo testo. Il testo che ho potuto letteralmente digitato in Microsoft Word, se avessi avuto la software giusto per poi fare qualcosa con esso. Il codice sorgente di programmazione, programmazione codice, è in realtà solo il testo, e un aspetto diverso in base a quale lingua si sta utilizzando, non diversamente inglese e Spagnolo e russo sembrano tutti diversi quando si digita li a vostra tastiera. Quindi questa prima linea, per ora assumere fede, si apre semplicemente un grafico dal internet, che grafico rumoroso abbiamo appena visto. Questa successiva linea qui è un esempio di un loop, e in realtà abbiamo visto che lo stesso gergo nel video TED. Un ciclo è una cosa che accade di nuovo e di nuovo, e anche se questo assolutamente sembra criptico, con il per parola chiave, e alcuni tra parentesi, e alcuni punti e virgola. Torneremo a che tra non molto, ma questo loop è essenzialmente raccontando il programma, iterare tutti dei dot rumorosi, da sinistra a a destra, dall'alto in basso. Perché alla fine della giornata, un'immagine come questo - e in realtà si può tipo di vederla su questo proiettore - è in realtà solo una griglia di punti. Così siamo in grado di identificare ciascuno di questi punti da una coordinata, x, y, e con questo programma, ora possiamo cominciare a fare qualcosa per quei punti. Così che cosa ho intenzione di andare avanti qui e non è che io vado a fare alcune modifiche. In primo luogo ho intenzione di andare avanti e di liberarsi di tutto questo verdastro e bluastro rumore, e ho intenzione di andare avanti e digitare il seguente dichiaratamente sintassi criptica. im per un'immagine. impostare blu alla posizione x, virgola, posizione y, a 0. In altre parole, voglio solo spegnere tutti i blu punti in quella foto. Ho intenzione di andare avanti ora e fare clic su Pulsante questo Run / Salva, e ti notare sul lato destro, appare l'immagine risultante. Ora il suo super-verde, ma non è sorprendente, perché ho letteralmente girato off, facendo a 1 a 0, tutti il blu in quella foto. Bene, ora facciamo un po 'di più. im per un'immagine, dot setGreen, x, y. E questo significa solo iterate da sinistra a destra e dall'alto verso il basso. Spegnerlo con un valore di 0, pure. Salva. E sul proiettore, non è possibile in realtà davvero vedere nulla. Sul mio schermo del computer portatile, se scruto in appena nel modo giusto, posso vedere un po 'di un immagine, perché sono ancora qualche rosso in là. Se hai mai sentito la sigla RGB - rosso, verde, blu - , esso si riferisce a questa composizione di un'immagine utilizzando solo quei tre colori. E proprio ora, abbiamo buttato via tutto verde, tutto blu, ma non c'è molto rosso. Quindi, mi permetta di alzare il rosso. Come posso fare questo? Beh, in primo luogo, ho intenzione di chiedere questo programma di una domanda. Ho intenzione di andare avanti e chiamiamolo una variabile, proprio come in algebra. Si può avere x oppure y o z. Ho intenzione di dichiarare una variabile e dire, mettere in questa variabile, temporaneamente, il valore del immagini getRed valore in x, y. E ancora, ci torneremo a tutti di questo dettaglio in futuro. Ma per ora, basta prendere sulla fede che questa linea sta chiedendo il programma, cosa è il valore di rosso in x, y? In quel particolare punto? Poi ho intenzione di fare qualcosa per esso. Poi ho intenzione di fare immagine puntino rosso set in x, y, y, ma questa volta ho intenzione di incrementare esso facendo volte rosse, diciamo, 10. Quindi aumentarlo di un fattore 10. Permettetemi di zoom out ora e scatto potrebbe Esegui / Salva. E voilà, che era lì l'intera tempo, anche se i nostri occhi umani non riusciva a vederlo. Quindi, di nuovo, questo ora è il codice vero e proprio, un esempio di un linguaggio che verremo Torna alla prima lunga. Ma rendersi conto, in particolare quelli di voi senza tale esperienza, è abbastanza presto che noi stessi saremo scrittura del codice come quello lì. In effetti, uno strumento con cui siete tutti un po 'familiare, forse, è CS50 di proprio strumento di corso-shopping, che è stato effettivamente riavviato questa estate da parte di alcuni dei propri ex studenti del CS50, ora girare TFS. Quindi, questo sembra essere un sito web costruito in un linguaggio chiamato PHP. Esso utilizza un database chiamato MySQL, cose grazie al quale potremo mettere le mani sporco più avanti nel semestre. Ma che ci crediate o no, anche qualcosa di come questo riduce in ultima analisi, alla semplice dei cicli e delle condizioni e rami, come quelli che abbiamo visto solo un poco fa nel video TED. Che cosa ho pensato di fare ora è quota non solo qualcosa che il personale abbiamo fatto per il campus, ma piuttosto qualcosa di un ex studente - tre studenti, infatti - fatto lo scorso anno, la Sierra, Daniel, e Sam, l'ultimo dei quali non aveva alcun precedente esperienza di programmazione quando ha preso CS50. E per il loro progetto finale, esposto, presso la Fiera CS50, un applicazione chiamata wrdly, che è un programma basato su Web per la quale hanno fatto questo video che ho pensato di condividere a vi darà un senso di ciò che è possibile dalla fine del periodo. [MUSIC PLAYING] DAVID MALAN: Ecco da Zero Settimana alla Settimana 12 lo scorso anno. [Applausi] DAVID MALAN: Come un teaser, troppo, davvero per stuzzicare l'appetito è quello di ciò che è possibile, potreste aver visto già, o potrebbe presto vedere, market.cs50.net, un nuovo strumento che la squadra del corso ha lavorato su, questa volta in collaborazione con la Harvard Student Agenzie, in modo tale che a partire da quest'anno e continuando auspicabilmente in questa prossima estate avrai uno standard opportunità nel campus di acquistare e vendere le cose che vi interessano. E con la collaborazione con HSA, ti anche essere in grado di rilasciare gli elementi fuori in uno dei negozi fisici di HSA a un certo punto in futuro, così da cose proxy, in particolare, come si laurearsi e non necessariamente vogliono scartare le cose, ma in realtà pagarlo inoltrare a persone che potrebbero seguire voi qui nel campus. Quindi, più su quello a venire. Ma un po 'più concretamente, un utensile che è uscito di recente in CS50 anni, con la quale alcuni di voi potrebbero essere familiare e gli altri di voi potrebbero essere googling ora, a CS50.net/2x, si trovare un link ad una estensione Chrome che è dimostrativa di come si può utilizzare JavaScript, quella stessa lingua che usato con la torre Eiffel un momento fa, di attuare velocità di riproduzione 2x per tutti Harvard iSites video. Questo è qualcosa che è costruito in un lettore video del CS50. Ma anche questo, se si comincia a scavare nel codice sorgente, che faremo felicemente a disposizione, si vedrà come si può anche risolvere problemi come questo, accelerando widget in siti web con che si è già familiare. Così una parola ora sul corso e aspettative e quello che ci aspetta. In generale, ci riuniamo in effetti qui il lunedì e il mercoledì - anche se questo Venerdì, ci riuniamo perché di Shopping Week - 1:00-14:00, anche se a volte fino alle 2:30. Dato che si potrebbe quindi voler o prendere un po 'di classe a 02:00 poi, o anche prima, non realizzare l' corso è di supporto di quella che viene chiamata contemporanea iscrizione, per cui faremo sostegno di una petizione per l'annuncio Board e il tuo residente presidi per vostro conto se si dispone di un conflitto da qualche parte in questo 1:00-02:30 gamma. Testa a tale URL online ulteriori dettagli. Ma in termini di struttura di supporto che caratterizza CS50, per gli studenti più e meno confortevole allo stesso modo, abbiamo offrire percorsi distinti di sezioni. E questo è un paio di settimane di riposo, ma In poco tempo, ti verrà chiesto da il livello di comfort. Sei tra quelli meno confortevole, più confortevole, o una via di mezzo? E avremo tre distinti tracce che si rivolgono a proprio quei pubblico. Quindi, in nessun punto del termine si dovrebbe anche sentire come si è in competizione contro ogni studente con più o meno sfondo di te. Infatti, il corso è destinato a essere molto più collaborativo e molto più aperto di quello. In termini di set di problema, sarete trovare, anche, che oltre alla edizione standard del problema di ogni settimana impostato, c'è spesso un "hacker edizione "che è destinato a essere preso di mira al 5% al ​​10% circa del demografiche che è infatti tra quelli più confortevole e vorrebbe più di una sfida quella standard edizione che pset aspetta. Maggiori dettagli su quelle che saranno trovato nel programma. Ma anche lì si possono trovare i dettagli sui corsi di giorni di ritardo. Tipicamente problema imposta sono dovuti il ​​giovedì. Tuttavia, è possibile estendere molti dei vostri scadenze di questo autunno da giovedì a Venerdì semplicemente incontrarci a metà strada, per così dire, rispondendo a un paio di warm-up domande in alcuni dei problemi della settimana set, che automaticamente poi vi darà un extra di 24 ore. Ci sarà anche cadere il più basso punteggio, come da programma. Per darvi un'idea di ciò che il problema set sono - perché è davvero il problema del corso stabilisce che infine definire quasi ogni L'esperienza di studente, più che lezioni, più che le sezioni, più in modo che la maggior parte qualsiasi altro aspetto del corso. L'anno scorso, per esempio, abbiamo cominciato, come inizieremo quest'anno, con Scratch. In particolare questo Venerdì, useremo, per giusto il tempo di un giorno, un grafico linguaggio di programmazione, con la quale faremo avviare la programmazione trascinando e lasciando cadere pezzi di un puzzle che solo assemblare fisicamente se ha un senso per fare in modo logico. La prossima settimana, faremo in modo rapido passaggio alla C, una abbastanza vecchio ma molto piccola e linguaggio semplice che ci permetterà di davvero andare da 0 a 60 nel corso di appena un paio di settimane, e poi Parlay quelle stesse competenze e conoscenze di costrutti di programmazione di base in linguaggi di alto livello come PHP, JavaScript e ancora altri ancora. L'anno scorso, il terzo pset in corso era quello di crittografia, un applicazione specifico del dominio per cui abbiamo studenti sfidato per attuare qualsiasi numero di cifre, i programmi con i quali per rimescolare o decodificare le informazioni, di cifratura. Per l'edizione pirata, per contrasto, abbiamo dato agli studenti degli hacker un file da un computer Unix standard contenente nomi utente e password, il secondo di che fosse cifrato, e abbiamo sfidato quelle degli hacker studenti a decifrare, come meglio potevano, le password, ancora su quel stesso dominio. Scramble, un gioco con cui alcuni di voi sono forse familiarità. Un pezzo forense, in cui chiediamo agli studenti per recuperare i dati che erano stati altrimenti cancellato dalla mia digitale scheda Compact Flash della fotocamera, da in realtà la scrittura di software per capire, dove erano gli zeri e di uno in che la macchina fotografica digitale che in precedenza composto da un grafico JPEG? Una sfida del genere l'anno scorso coinvolgendo scrittura il più veloce correttore ortografico possibile, in competizione contro gli amici e compagni di classe, se vorrebbero. Implementazione Huff 'n Puff, un programma di compressione. E poi termina il semestre con CS50 Finanza, una applicazione web-based con che si crea un sito web eTrade simile per comprare e vendere azioni, in modo da parlare, da realtà tirando quasi quotazioni in tempo reale Yahoo! Finanza. Ciò che non abbiamo fatto l'anno scorso era un set problema che rimane comunque un favorito. Se non sei mai andato a shuttle.cs50.net, vedrai un utente interfacciare un po 'come questo. Ma due anni fa, la classe implementato, utilizzando Google Maps e la Google Earth plug-in e un po ' di buon senso con la guida intorno alla città universitaria, in modo che l'obiettivo di questo gioco è stato, come potete vedere alcuni dei volti, è quello di guidare intorno alla città universitaria cercando personale, compagni di insegnamento e CA, e quando si fanno, mettendoli sul vostro bus navetta. Nessuno di loro sembra davvero di essere qui, così stiamo per entrare in un cheat code. [Risata] DAVID MALAN: Ci andiamo. D'accordo. E qui ora è il personale cucita tutta campus. E come potete vedere, sulla destra lato dello schermo, la navetta ha posti vuoti. E l'obiettivo è stato quello di scrivere il codice con cui simulare questo di guida e di far salire e abbandonano off di passeggeri. Anche questa qui, utilizzando un linguaggio chiamata JavaScript. Quindi rendersi conto che i programmi del genere sarà essere sulla nostra stessa traiettoria questa anno, pure. In termini, ora, di supporto aggiuntivo, abbiamo orari di ufficio. Come forse avrete visto nella propria casa sala da pranzo o in Annenberg, saremo in sala da casa sale quattro notti a settimana - Leverett, Pfoho, Eliot e Annenberg quest'anno, 20:00-23:00. E che cosa abbiamo pensato di fare questo anno è una cosa un po 'diversa. Se avete sentito brontolii dello scorso anno che era un po 'troppo stressante, questo orario di ufficio anno, come vedremo descriviamo la prossima settimana, sarà più organico, per cui al momento dell'arrivo, sarete inviato a una particolare tabella in cui più membri dello staff attendono, e noi faremo cose molto più organicamente. Niente più code, niente più iPad, ma Preferirei avere più intimo conversazioni intorno a un tavolo di soli otto o così gli studenti, in modo da approssimare la sensazione di ciò che altrimenti sarebbe una classe molto più piccolo. Offriamo, così, queste cose noi chiamato procedure dettagliate, video girati in avanzare di uno degli insegnamenti del corso borsisti, Zamyla, in cui ha ti guida attraverso problema della settimana set, che offre suggerimenti e trucchi per la le sfide che ci attendono. E viceversa, dopo il set problema sono dovuta, quest'anno, ci sarà anche rilasciare piccole clip chiamano autopsie che effettivamente camminare attraverso soluzioni rappresentative, nel bene e nel male, attraverso la quale si può dedurre come si potrebbe avere o dovrebbe avere implementato la propria soluzione. E ciò che vi offriamo per la prima volta anche quest'anno, in particolare per gli studenti che si avvalgono del corso di altra risorse, ma comunque sono in difficoltà tutto troppo, il corso stessa sarà accoppiare gli studenti, come le risorse lo permettono, con i tutor in modo che si dispone di un molto più intimo opportunità di casa sale da pranzo consentire l'assistenza one-to-one. Ora uno sguardo finale ad un certo dei giochi si vede la fine. Si potrebbe avere familiarità con il CS50 Hackathon. Beh, venendo a dicembre, dalle ore 8:00 PM a 7:00, all'inizio del Leggere Periodo, sarà l'occasione per riunirsi con i compagni di classe - questo sarebbe di circa 9:00 PM - durante il quale ci si immerge nella finale implementazione del progetto a fianco compagni di classe, amici e cibo. Questo sarebbe di circa 1:00, quando il primo lotto di cibo arrivato. E questa è circa 4:00 che particolare anno alla CS50 Hackathon. Ma il vero culmine del corso è significato per la Fiera CS50, un campus a livello mostra dei vostri progetti finali, a cui la famiglia e gli amici sono tutti invitato, come i nostri reclutatori e i nostri amici da industria. Questo, per esempio, è uno scorcio del 2.000 e più persone che hanno partecipato anni passati. Espressioni come questo non sono rari, e allo stesso modo fare la tua compagni di classe dilettano nelle cose che hai compiuto. E in realtà, verso quel fine, abbiamo un evento di avvio del termine, pure. Se le cose come questo appello a voi, o siete almeno curioso di sapere cosa questo, sappiate che una nuova tradizione del corso si chiama CS50 Puzzle Giorno. E questo è stato istituito un paio di anni fa per segnalare veramente al campus che l'informatica non si tratta di programmazione, e non è certamente circa abbracciando solo quegli studenti che hanno una precedente esperienza. E 'davvero di risolvere i problemi più in generale. E così Puzzle Giorno, negli ultimi pochi anni, si è evoluto in un bel partnership con i nostri amici a Facebook, per cui ci sarà favoloso premi e pizza attraverso il fiume a l'i-lab il prossimo Sabato. Dirigetevi verso l'URL con due o tre amici se si desidera partecipare in questa nuova tradizione. Quindi vorrei chiedere di mantenere uno cosa in mente, e abbiamo solo un due minuti clip sul quale per chiudere oggi. 73% è il numero di ricordare. Torta, troppo, vi attenderà fuori dal transetto come aggiornare in appena un paio di momenti, che è una tradizione del corso, pure. Ma questa è la citazione chiave dal piano di studi del corso da tenere a mente. Ciò che conta in ultima analisi, in questo corso non è tanto dove si finisce relativa ai vostri compagni di classe, ma in cui si, in settimana 12, finisce rispetto al te nella Settimana 0. Ma il colpo d'occhio che ci lascerà con oggi è quest'ultimo qui dal nostro stesso Daniel, che ha fatto il Video wrdly solo un momento fa. Vi lascio con questo scorcio di quello che ci aspetta. E come facciamo questo, se potessimo avere CS50 personale dalla parte anteriore della camera a venire su fino alla fase di dipingere tutto più di un'immagine visiva da cosa vi aspetta quest'anno - sempre imbarazzante. Concluderemo con questo qui sullo schermo. [MUSIC PLAYING] DAVID MALAN: Questo è CS50. [MUSICA - MATT & Kim, "Va tutto bene"] SPEAKER 1: I love CS50 più di gatti. SPEAKER 2: Whoaaaa! [Risata] DAVID MALAN: Questo, poi, è CS50. Ci vediamo il Venerdì. [Applausi e tifo] NARRATORE: Al prossimo CS50, un palco demo non va come previsto. DAVID MALAN: vogliamo trovare Mike Smith in questa rubrica. Ebbene, quali sono i tuoi istinti? Potrei saltare all'incirca alla metà del l'elenco telefonico, sguardo basso, vedere che Sono a M, e ora so che Mike Smith non è a sinistra. Egli deve essere a destra. E quindi a questo punto, abbiamo può letteralmente strappare - A questo punto, possiamo letteralmente strappare - A questo punto, possiamo figurativamente strappare la rubrica a metà. [Strumming Ukelele]