[GIOCO MUSICA] [Applausi] DAVID J. MALAN: Questo è CS50, Introduzione di Harvard per l'intellettuale imprese di informatica e l'arte della programmazione. Ora, se siete tra quelli che ogni anno sono seduti qui con un po 'di nervi nella vostra mente, come ad che non pensi tu appartieni qui, si pensa che la maggior parte chiunque seduti intorno a te sa molto più di te, è davvero più comodo di voi al computer di scienza o computer più in generale, realizzare che il 78% degli studenti che ora prendere CS50 non hanno alcuna esperienza precedente. In effetti, c'è 100 punti lì sul display, 78 dei quali sono verde fisso, il che significa, se siete tra quella demografica, sono in buona compagnia qui in avanti. E se siete invece tra i 22% degli studenti CS50 che lo fanno davvero avere precedente esperienza, sia in liceo o qualche altro programma, rendersi conto che anche voi, sarà essere messo in discussione nel corso. Non solo abbiamo diverse tracce per gli studenti meno confortevole e più confortevole simili in sezioni, abbiamo hanno anche i cosiddetti edizioni degli hacker di più problema stabilisce che sarà una sfida per gli studenti con questa esperienza supplementare esplorare materiale simile ma da un più prospettiva sofisticato. Ma che cosa è la scienza del computer? Beh, in ultima analisi, ciò che sta per importa come esplorare questo campo non è tanto dove si finisce rispetto ai vostri compagni di classe, ma dove ti sei finiscono in settimana 12 rispetto a dove si inizia qui in settimana lo zero. Ora di computer science-- bene, cerchiamo di chiamare la scienza della computation-- dove il calcolo è davvero solo un modo elegante per dire, prendendo alcuni input, producendo qualche uscita, e così facendo da algoritmi in esecuzione, set di istruzioni per risolvere qualche problema su quei fattori per produrre un output o soluzione a cui si è interessati. Così abbiamo avuto di recente occasione di viaggiare fuori in California per incontrare con una allieva. Il suo nome è Susan Wojcicki. E lei vorrebbe parlare a voi qui sul video a testimoniare quanto sia applicabile anche solo un assaggio di PC scienza alla livello introduttivo può essere. Anche se non si va a perseguire l'informatica come un campo, o anche di ingegneria, o STEM più in generale, si vedrà, infatti, come un certo Naturalmente così influenzato la sua vita. E lei appena preso quando lei era un anziano qui a Harvard College. Se potessimo abbassare le luci per Susan. SUSAN Wojcicki: Ciao, mondo. Sono Susan Wojcicki. Sono il CEO di YouTube. E ho preso CS50 quando ero un anziano di Harvard nel 1990. Mi è stato effettivamente una storia e la letteratura importante. E la mia Junior estate, Mi sono reso conto che forse voluto imparare qualcosa di computer. E così, sono tornato. Ho preso CS50. E 'stata dura, ma è stato il più di classe incredibile ho preso. E 'cambiato il modo penso a tutto. E quando mi sono laureato ad Harvard nel 1990, sono andato a Silicon Valley. E ho trovato un lavoro. E ho lavorato in tecnologia da allora. DAVID J. MALAN: Ora che cosa Susan non ha menzionato in questo video, che era effettivamente nel suo garage che Google stesso è stato fondata da Larry e Sergey. Ora abbiamo raggiunto ai nostri amici a code.org, un'organizzazione che lo scorso anno è stato persone che si particolarmente entusiasta di informatica e programmazione, in particolare. Ma vale la pena notare che la programmazione non è informatica per sé. L'informatica non è la programmazione. Piuttosto la programmazione è solo un tool-- con cui tutti voi sarà fin troppo bene familiare da end-- del semestre tale che non è possibile applicare solo per i corsi futuri CS ma a qualunque campi dove sei venuta, in discipline umanistiche, scienze sociali, naturali scienza, o simili. Infatti, consentire pochi altri alunni e dei loro colleghi di parlare l'applicabilità del campo che attende. BILL GATES: avevo 13 anni quando ho prima avuto accesso a un computer. Jack Dorsey: I miei genitori mi ha comprato un Macintosh nel 1984 quando avevo otto anni di età. Mark Zuckerberg: ero in prima media. SPEAKER 1: ho imparato a codificare in un college. RUCHI Sanghvi: Primo anno, prima semestre, Introduzione alla Computer Science. BILL GATES: Ho scritto un programma che ha giocato tic-tac-toe. DREW HOUSTON: credo che fosse abbastanza umili origini. Credo che il primo programma Ho scritto chiesto cose come, qual è il tuo colore preferito? Oppure, quanti anni hai? ELENA SILENOK: in primo luogo ho imparato come fare un cerchio verde e un quadrato rosso appare sullo schermo. Gabe Newell: la prima volta che ho effettivamente avuto qualcosa di venire e dire, ciao, mondo. E ho fatto un computer farlo. Era semplicemente incredibile. Mark Zuckerberg: Imparare al programma di non iniziare come vogliono imparare tutta la scienza del computer o cercando di padroneggiare questo disciplina o qualcosa di simile. E 'appena iniziato perché ho voluto fare questa cosa semplice. Volevo fare qualcosa che è stato divertente per me e le mie sorelle. E ho scritto questo piccolo programma. E poi fondamentalmente solo aggiunto un po 'di esso. E poi quando ho avuto bisogno per imparare qualcosa di nuovo, Ho guardato in su, sia in un libro o su internet, e poi ha aggiunto un po 'di esso. DREW HOUSTON: Non è proprio a differenza di suonare uno strumento o qualcosa o praticare uno sport. DAVID J. MALAN: Va bene. Quindi cerchiamo ora effettivamente immergersi in un po 'più profonda. Quali sono questi ingressi e uscite che stiamo parlando qui? Così come su qualcosa di semplice? Probabilmente sapere, anche se si dispone di nessuna familiarità con l'informatica di sorta, che i computer utilizzano in qualche modo e capisce solo zero e uno. Ma come può eventualmente essere dato come desktop e laptop egualmente molto di oggi può fare? Il DNA del giorno, l'unico alfabeto che capiscono è uno zero o uno. Beh, considerare questo. Noi, esseri umani, tendiamo a utilizzare il sistema decimale. "Dec" che significa 10. E questo è il 10 perché abbiamo 10 cifre, da 0 a nove. Ora i computer, per contrasto, tendono ad usare binario. "Bi" che significa due. Quindi tendono a utilizzare solo zero e uno. Ma si scopre, che anche solo con zeri e quelli, che è sufficientemente grande alfabeto con cui rappresentare più qualsiasi pezzo di dati che si desidera, che si tratti di un numero, che si tratti di una lettera, che si tratti di un grafico o video sullo schermo. Si consideri, per esempio, come noi umani tipicamente interpretare questo numero qui. Questo è solo tre cifre, uno, due, tre. Ma sappiamo che questo numero innato ora come 123. Ma perché? Beh, se si pensa di nuovo forse a scuola elementare, probabilmente vi è stato insegnato a pensare di questi numeri come essere in colonne, dove l'uno è nell'ordine delle centinaia luogo, i due è collocati decine, e il tre è nel posto quelli. Perché è che in realtà utile? Beh, pensare alla super semplice aritmetica che tutti noi siamo stati facendo ormai da anni. In effetti, se hai uno nel posto di centinaia, fate i conti rapido 100 volte 1 più 10 volte 2-- perché due sono a decine posto-- oltre 1 volte 3-- perché tre è nel posto quelli. Così, naturalmente, se in realtà moltiplicare questo fuori, quello che stiamo realmente rappresentare con questo pattern-- due sulle tre ruote è 100 più 20 più 3, che, naturalmente, è 123. Ora binario, e computer davvero, fondamentalmente parlare la stessa lingua che facciamo. Hanno solo un alfabeto più piccolo. Così i computer hanno solo zeri e quelli a loro disposizione. Così, mentre noi umani abbiamo essenzialmente potenze di 10 in ciascuna di queste places-- 10 allo zero, 10 a quello, dieci ai due, dandovi 110 e 100 rispettivamente. Poiché i computer hanno solo due valori possono comprendere, zero e uno, devono usare valori diversi in queste colonne, uno, due, quattro. E se abbiamo mantenuto andando, otto, 16, 32, 64, e così via. Ma il modello e la mentalità è esattamente lo stesso. Così da questa logica, chiunque, come sarebbe Vado circa che rappresenta il numero uno in binario? Se non hai mai nemmeno pensato di questo prima, che cosa è il vostro intestino dire? PUBBLICO: One. DAVID J. MALAN: One. Esattamente. Abbiamo solo bisogno di un uno nel quelli posto perché gli zeri sufficiente a dare noi né quattro né due. Quindi, una volte uno fa uno. Ora le cose si fanno un po 'interessante. Se voglio rappresentare in binario Il numero two-- ma, ancora una volta, anche se non hai mai parlata questa lingua prima, come facciamo noi rappresentiamo in binario il valore che gli esseri umani sanno come due? Zero uno zero. Basta mettere quello nella colonna che si desidera. Ora si sta facendo abbastanza facile probabilmente ora. Quindi, se voglio rappresentare sulle tre ruote non vi è alcuna colonna di tre. Così, ancora una volta, ora posso aggiungere questi valori insieme mettendo uno qui. Quindi 2 volte 1 più 1 volte 1 è, ovviamente, 3. Ora le cose si fanno un po 'di divertimento in che quelli che ora diventano zeri. E per rappresentare quattro, ottengo questo. E se incrementiamo lentamente qui-- che sarebbe cinque. Questo sarebbe di sei. Questo sarebbe sette. Ma ora mi sembra di avere incorrere in un problema. Come potrei fare per rappresentare eight-- sarebbe il valore successivo. Sì, così abbiamo bisogno di un nuovo bit. E, anzi, se avete sentito questa frase prima, bit, questo è solo l'abbreviazione di cifra binaria, zero o uno. E così mi capita di rappresentare solo tre di questi bit qui. Ma se ho avuto modo di registrare, tre diversi bit, ma quattro, sicuramente avrei potuto rappresentare otto, nove e poi, e poi 10, e anche più in alto. Ma che poi chiama in questione come possiamo andare su di rappresentare questi cose, in primo luogo. E 'una cosa da disegnare li qui su un vetrino, ma come si fa a loro rappresentate se sei un dispositivo meccanico? Che cosa è un computer facendo per rappresentano gli ingressi e le uscite che fondamentalmente definire computazione alla fine della giornata? Beh, che dire qualcosa super semplice come questo? E 'solo una lampadina. E posso attivare questo lampadina per andare avanti girando un po 'di energia elettrica su elettroni e permettendo di fluire attraverso, che cambia stato o il suo valore, per così dire. Per esempio, questo è una lampada vecchia scuola scrivania qui con uno di questi lampadina all'interno di esso. E in questo momento non è davvero fare qualcosa di utile. Ma non appena mi collego in una presa elettrica e quindi utilizzare questo switch-- o possiamo anche chiamarlo un transistor o pensare ad esso come such-- Ora posso rappresentare sia questo valore, dove la lampadina del ovviamente off, o questo valore. Questo valore o questo valore. Questo valore e così via. Quindi, all'interno di un computer, presumibilmente, sono molto più piccoli pezzi di hardware, ma che alla fine del giorno hanno semplicemente utilizzare electricity-- forse catturare it-- e poi o mantenere qualcosa o tenere qualcosa fuori. Naturalmente, questo non è particolarmente interessante da fare con una sola lampadina. In realtà, quanto in alto posso contare in binario con questa lampada da scrivania qui? PUBBLICO: One. DAVID J. MALAN: One, giusto? Ho bisogno di più lampade da scrivania se io effettivamente desidera contare superiore. Ma possiamo fare di meglio. Perché le lampadine che abbiamo messo in queste cose sono lampadine realtà amatore che ieri avrebbe permesso. E sono in realtà lampadine in rete. E mazzi di società fare queste cose in questi giorni. Ma si scopre che questa in particolare è dotato di una funzione di cui è possibile cambiare i colori. Così, per esempio, se si ornata vostra stanza del dormitorio con alcuni di questi luce lampadine, a seconda del vostro umore, a seconda di chi viene in, a seconda del tempo, a seconda del tempo di giorno, si può effettivamente cambiare i colori le lampadine nella vostra camera. E questo è perché questi luce bulbi e altri simili hanno ciò che è chiamato API, un'applicazione interfaccia di programmazione, che è un argomento con il quale sarete bene conoscenza entro la fine del semestre. E questo è solo una fantasia, modo criptico per dire, è possibile programmare questi luce lampadine di fare la vostra offerta. È possibile inviare messaggi proprio come te, un essere umano, può inviare un messaggio a un server web dicendo, dammi notizie di oggi o darmi la mia email. È possibile inviare più arcane messaggi a queste lampadine per dire, accendere e spegnere. Ma non è tutto così interessante. Si può dire, accendere rosso, accende verde, accendere blu, tutti con la stessa lampadina. E si può anche, con un po 'di più savvy, dire, trasformare se stessi al blu quando è una giornata uggiosa esterno, per esempio. Si può effettivamente applicare la patch in API tempo e scoprire che tempo fa, o il tempo di giorno, o altri tali trigger. Quindi, in realtà, due dei Propri membri dello staff del CS50, Dan Bradley e Ansel Duff qui, gentilmente procurato noi un sacco di queste lampadine. E hanno costruito CS50 di prime lampadine mai binari, dove siamo rappresentati qui-- con questi giocoso poco magnets-- i vari segnaposto noi accennato solo un po 'fa. Quindi fin qui è il quelli posto, due, quattro. E non abbiamo visto più in alto. Ma, naturalmente, sono potenze di due. Otto, 16, 32, 64, e 128. Quindi, se io ora voglio essere un po 'più elaborato che usando questo interruttore vecchia scuola, Ho qui su questo iPad un super semplice interfaccia che Dan Bradley, un ex studente e ora insegna compagni, programmato utilizzando il linguaggio HTML e JavaScript, che sono markup e programmazione lingue rispettivamente. E si può probabilmente see-- anche in back-- c'è un grande vantaggio e un meno grande, più un pulsante per ciascuna di queste lampadine. E che questo sta per me lasciare non è, per esempio, fare clic sul segno più e ora rappresentano, di Naturalmente, quale numero? Uno. E posso colpirlo di nuovo. Due. Tre. Quattro. Cinque. Six. Sette. E qui ora arriviamo che rollover, ma abbiamo un quarto bit questa volta, così ora abbiamo otto. Così abbiamo potuto farlo per un bel po 'di tempo. Infatti, per inciso, quanto in alto possiamo contare? Chiunque? PUBBLICO: 255. DAVID J. MALAN: 255, giusto? Non preoccupatevi troppo della matematica per ora, ma questo è un numero abbastanza decente. Ma in realtà non vincolata solo quanti pezzi di informazioni, come una lettera, o una grafica che potremmo rappresentare. Ma non importa, per ora. Ho intenzione di andare avanti e li spegne. E se potessi, vorrei chiedere un volontario, il nostro primo volunteer-- oh, hello-- sul palco. Il problema è che devi essere confortevole appare, come si chiaramente sono di fronte a tutti i tuoi compagni di classe, nonché su internet. E mi permetta di guardare un po 'oltre the-- come circa qui in camicia bianca? E mano. Andiamo su. Come ti chiami? PUBBLICO: Jackie. DAVID J. MALAN: Jackie. Jackie, vieni su. Così che cosa c'è anche su questo iPad è un pulsante chiamato Game Mode. E questa modalità di gioco è andando a mi permetta di ingresso in anticipo un particolare decimale numero, i numeri che gli esseri umani sono familiarità con. E allora sarete sfidati qui per utilizzare i pulsanti da un top-- per ciascuno di questi bulbs-- per capire in realtà fuori il modello di lampadine che rappresenta il numero in questione. E mi dispiace, quello che era ancora il tuo nome? PUBBLICO: Jackie. DAVID J. MALAN: Jackie. Bene. Piacere di conoscerti. Quindi lasciami andare avanti e programma per il mondo a vedere il numero 15. Ci teniamo piccolo in un primo momento qui. E ho intenzione di entrare in Modalità Gioco. E ho intenzione di indicare, ci darà il numero 15. Ok. E ora con tutti watching-- se volete stare forse in questo modo, perché sarà la linea up-- andare avanti e attivare o disattivare i pulsanti otto lungo la parte superiore per attivare i bulbi sul o fuori come si vede in forma. PUBBLICO: OK. DAVID J. MALAN: E no barare colpendo oltre 15 volte. Oh, ci accingiamo a farlo. PUBBLICO: Oh, aspetta. Mi dispiace tanto. DAVID J. MALAN: È anche possibile attivare le lampadine su individualmente con ciascuno di questi pulsanti in alto. PUBBLICO: Oh, OK. Quindi sarebbe like-- DAVID J. MALAN: OK. Così ora abbiamo otto. Quindi cerchiamo di pausa per il pubblico di impegnarsi qui. Che numero è Jackie attualmente rappresentano? 11. Così ci siamo quasi. E eccellente. Quindi abbiamo il nostro primo vincitore. Complimenti. E abbiamo pensato che avremmo avuto alcuni omaggi favolosi. Se vuoi essere uno di questi Dormitorio qui nel campus, te si può avere un progetto finale usando ora questa API, grazie a Jackie. Così now-- [Applausi] --se abbiamo potuto, ancora una tale intorno di questo. Oh, ora tutti vogliono alcune lampadine. Per la cosiddetta edizione hacker, stiamo andando a rampa fino a-- oh, sì, senza impegno. Penso che si stia arrivando adesso se la tua mano sta andando verso il basso. Come ti chiami? PUBBLICO: Alex. DAVID J. MALAN: Alex, vieni qui. Così per Alex, ci accingiamo a programma in un numero leggermente più grande. Forse in ordine. Il numero 50. PUBBLICO: OK. DAVID J. MALAN: Ma, come I said-- e si potrebbe voglio stare qui così che i pulsanti allineati come si expect-- ma ho fatto chiamare questo l'edizione di hacker. So-- buona fortuna! [Risate] Sarete in grado di trasformare li fuori se you-- OK. Eccellente. Meraviglioso. Complimenti. [Applausi] Suppongo che dovrei pagare. Congratulazioni a Alex pure. Ok. Così il takeaway finale ecco si spera, francamente, il simplicity-- il semplicità con cui è possibile ottenere qualche bella luce bulbi, apparentemente in [incomprensibile]. Ma essi rappresentano, in ultima analisi, le stesse idee con cui noi esseri umani siamo già fin troppo familiare. Così che cosa potrebbe essere il prossimo passo sia nella progressione di cercare di fare qualcosa interessante con i dati e rappresentano gli ingressi che non sono solo numeri ma sono forse lettere o più? Beh, si scopre che il mondo dei computer, per molti anni, semplicemente adottato un arbitrario, ma un standard costante che mappa i numeri a lettere dell'alfabeto. Ad esempio, qui è un estratto da tale mappatura. Si chiama Ascii. A-S-C-I-I. E questo è semplicemente un tabella che associa letters-- maiuscolo in questo case-- in numeri decimali. Ma qual è l'implicazione? Beh, se si vuole realmente rappresentare qualcosa di simile a una mail o un testo su una pagina web, è ovviamente vogliono mostrare le lettere umane del alfabeto, non numeri. Quindi, a seconda della contesto del programma che un utente sta utilizzando, se è un browser web o client di posta elettronica, numeri possono certamente essere interpretati come lettere. Vale a dire, i modelli di bit può facilmente essere interpretato come lettere. E così quello che possiamo avere è la lettera A essere rappresentato come 65, B essere rappresentato come 66. Quindi, se abbiamo un super parola breve, come ciao, ciò che un computer sarebbe in ultima analisi, negozio in decimale, ma in realtà in binario, utilizzando una sequenza di bit, sfruttando un po 'di energia elettrica, in qualche modo, sarebbero i due numeri 72 e 73. Ma il modello di bit che rappresenta quei valori. Quindi questi sono allora come possiamo rappresentare i nostri ingressi e uscite. E basti dire, possiamo fare rappresentazioni più complesse in ultima analisi, con cose come grafica, video, musica e altro ancora come vedremo in seguito questo termine. In modo che lascia solo allora algoritmi, questi insiemi di istruzioni con cui stiamo risolvere i problemi reali. Stiamo passando in input ad algoritmi. E questi algoritmi producono Uscite, uscite spera corretti e, si spera, anche, efficiente raccolte uscite. In altre parole, è una cosa di implementare qualcosa correttamente. E 'un'altra cosa da implementare qualcosa di bene o in modo efficiente. Per esempio, una dimostrazione che siamo affezionati nel corso è questo uno. Ma queste cose sono sempre sempre più difficile da trovare. Ma questa è davvero una vecchia scuola rubrica, all'interno della quale sono più di 1.000 pagine di nomi e numeri di telefono. E se volevo guardare in alto qualcuno in questa rubrica, Potrei semplicemente fare un algoritmo molto ingenuo. Potrei aprire la prima pagina, e Potrei cominciare a cercare, ad esempio, qualcuno di nome Mike Smith. E se lui non è il primo pagina, vado avanti per la seconda, e poi alla terza, e poi al quarto, e così via, fino a quando ho finalmente trovato Mike Smith. Ora è che l'algoritmo giusto? PUBBLICO: Sì. DAVID J. MALAN: Già. Se lui è lì, io alla fine lo troverete. Ma non è probabilmente molto efficiente, non certo veloce, perché, mio ​​Dio, perché sono sprecare il mio tempo flipping attraverso tutte queste pagine quando potevo certamente farlo fisicamente più veloce? Ebbene, una leggera ottimizzazione, in modo da parlare, potrebbe non essere una pagina alla volta, ma due, quattro, sei, otto, 10. Ancora corretta? PUBBLICO: No. DAVID J. MALAN: Quindi no, se io per esempio saltare su Mike Smith. Ma finché io indietro pedale una pagina, se lo Overshoot, forse potremmo correggere ciò che altrimenti potrebbe essere un Gotcha. Ma è meglio? È più veloce? Voglio dire, sì. E 'letteralmente due volte più veloce se faccio due pagine alla volta. Quindi, se ho inizialmente avuto 1.000 pagine, ora devo solo a capovolgere 500 volte, insufficiente, le 1.000 pagine per ottenere potenzialmente nel caso peggiore alla fine del telefono libro, dove qualcuno come Mike Smith o qualcuno con un nome più tardi potrebbe in realtà essere. Ma, naturalmente, ci gli esseri umani certamente non sono intenzione di fare questo, certamente non a questo punto della nostra vita. Che cosa è un ragionevole umana probabile intenzione di fare? PUBBLICO: Proseguire dritto per The9 di S. DAVID J. MALAN: Vai direttamente alla S di? Come vado dritto al S di? PUBBLICO: Rip a metà. DAVID J. MALAN: Beh, non c'è nessuna marcatura. Quindi, sì, se ci sono stati davvero un'etichetta o una linguetta adesiva per S, dovremmo saltare proprio lì. Ma è abbastanza innocuo. Quindi il meglio che posso fare è di circa alla sezione S o forse grossolanamente nel mezzo. Ma il takeaway chiave now-- e l'intuizione che hai preso per concesso per anni probably-- è che ciò che si fa ora sapere di questo problema? PUBBLICO: [incomprensibile] DAVID J. MALAN: Mike Smith è sicuramente non in questa metà del problema perché Smith arriva dopo la metà che è grosso modo la sezione M, sembra essere. Così come forse avrete già visto a Visitas, possiamo ora letteralmente strappare questo problema a metà. PUBBLICO: Woo! DAVID J. MALAN: E ' sempre più facile e più facile. [Applausi] Ci si va. [Risate] E ora fondamentalmente avere lo stesso problema, ma è letteralmente a metà così grande. Sto ancora cercando di Mike Smith. E oserei dire, posso ancora cercarlo nello stesso modo, suddividere il problema in metà ancora una volta, strappando il problema di nuovo in mezzo, che ora mi lascia con un problema un quarto della dimensione, gettare drammaticamente che mezzo di distanza, e ripetere più e più volte questo processo e di nuovo, guardando verso il basso in ogni punto di vedere se Mike Smith è su la pagina in questione. Ora, se faccio questo diritto, in ultima analisi, mi trovo con una sola pagina in cui Mike Smith è se è davvero nella rubrica. Certo, potevo non chiamare di nuovo Mike. Ma il punto qui è che se abbiamo iniziato con 1.000 pagine, il mio primo algoritmo, capovolgere la pagina, forse 1.000 times-- decisamente meno perché è un nome S e non un nome di Z, ma come ben 1.000 pagine potenzialmente. Secondo algoritmo, meglio. 500 pagine. In terzo algoritmo, però, quanti passi è vero prendere per dividere una pagina 1.000 rubrica a metà del genere? 10, prendere o lasciare. Così solo da sfogliare che rubrica, immersioni e conquistando, per così dire, 10 volte, farò la mia strada verso il basso per una sola singola pagina. E così possiamo cogliere questa intuizione ora un po 'graficamente se si considera questo super semplice grafico. Siamo sulla x-asse o orizzontale l'asse, è la dimensione del mio problema, il numero di pagine nella rubrica. E informatici generalmente desidera chiamare la dimensione di un problema n, dove n è solo una variabile che represents-- in questo case-- numero di pagine. L'asse y verticale, o, qui è sarà il tempo per risolvere, forse il numero di giri di pagina, forse il numero di secondi o minuti, a prescindere l'unità di misura è. E così questa linea rossa rappresenta il primo algoritmo, perché c'è un 1-1 rapporto tra il numero di pagine e la quantità di tempo che ci vuole. Se Verizon raddoppia il numero di pagine nella rubrica il prossimo anno, la mia corsa tempo-- l' tempo necessario per l'esecuzione che prima algorithm-- raddoppia nel caso peggiore. Ma il secondo algoritmo, dove sto girando da due, richiede meno tempo per un determinato problema di portata. Quindi, se ho questo molti Avviso pagine qui-- che la linea gialla suggerisce meno tempo per risolvere. E infatti, rappresenta, diremo, n più di due. Ma che cosa è la forma del terzo e la curva finale andando a guardare come? Sì, è davvero andando a look-- I non so cosa stavi per dire. Ma vediamo cosa stavi per dire. PUBBLICO: Come quella. DAVID J. MALAN: Sta andando a guardare come questo, un exactly-- slope-- logaritmica per cui si dispone di questa curiosa pendenza. Non è più una linea retta. E cosa c'è di interessante a tale proposito è che anche se il grafico sta tagliata, si può estrapolare in importa che quella linea verde non è andando ad aumentare altezza più di tanto come si procede ulteriormente stabilisce che asse orizzontale. Infatti, Verizon, per esempio, potrebbe raddoppiare il numero di pagine del telefono Prenota tra quest'anno e il prossimo anno da 1.000 a 2.000 pagine, ma niente di grave. Con questa terza e ultima, c'è un algoritmo intuitivo di dividere e conquistare. Sta andando a prendere me come molti altri passi il prossimo anno di trovare qualcuno come Mike Smith? PUBBLICO: One. DAVID J. MALAN: C'è solo una. E possono quadruplicare esso, è andando a prendere me solo due passi più e così via. E quindi questo è testamento proprio come alcuni design accurato e qualche apprezzamento per quello che gli ingressi sono in grado di fare ancora meglio. Ora stiamo barando un po 'nel senso che stiamo sfruttando un presupposto. Qual è la mia ipotesi la nostra rubrica che mi ha permesso di dividere e conquistare in questo modo intuitivo e ancora corretta? PUBBLICO: [incomprensibile] DAVID J. MALAN: Già. Così è stato ordinato. E 'stato ordinato alfabeticamente in base l'azienda rubrica. Se fosse in ordine casuale, che sarebbe un inferno di una rubrica, ma di certo non sarebbe si presta per l'algoritmo Ho usato, perché si farebbe mai appena capita di fronte Mike Smith se hai tenuto dividere in metà in questo modo per caso. Quindi cerchiamo di formalizzare ora ciò che è chiaramente intuitiva. Quindi qualcosa chiamato pseudocodice è dove ci iniziare alcuni dei nostri problemi iniziali. E questo è un modo generico di descrivere un algoritmo o un programma per computer, non usare C o C ++, o Java, o di qualunque lingua specifica, ma usando solo inglese, con che qualsiasi essere umano potrebbe essere familiare. E potremmo scrivere lo pseudocodice per questo problema come segue. Fase uno, prendere l'elenco telefonico. Fase due, aperta al centro della rubrica. Fase tre, guardare i nomi. Fase quattro, se Smith è tra names-- E ora questo è un costrutto interessante. E 'un punto di decisione. E 'un bivio, se si si, un ramo, per così dire. Quindi ho intenzione di rientrare solo per convenzione step-- non five-- che deve per esempio, io chiamerò Mike. Quindi questo rientro, totalmente convenzione umana arbitraria, ma è semplicemente lo scopo di trasmettere semanticamente che se Smith è tra i nomi, poi dovrei chiamare Mike. Nel frattempo, al punto sei, preavviso che il rientro è andato. Quindi il resto è l'altra forcella in strada, l'altra strada potrei percorrere. Quindi, altrimenti, se Smith è in precedenza nel libro, che cosa è il mio prossimo passo probabilmente ad essere qui? PUBBLICO: Si va a sinistra. DAVID J. MALAN: Sì, in modo da andare a la metà sinistra della rubrica. Buttare via la metà destra se Smith è in precedenza nel libro. Così aperto a metà la metà sinistra del libro. E poi passo otto, andare alla riga tre. E questo è un curioso ciclo sono inducendo, una ricorsione per così dire. Ma più su che in futuro. Sto usando il mio stesso algoritmo, il mio stesso pseudocodice, per risolvere nuovamente lo stesso problema perché l'unica cosa che è cambiata è la dimensione del problema, non il mio obiettivo, e non la persona Sto cercando. Così posso riutilizzare l'algoritmo che ho già definito. Altrimenti se Smith è tardi in book-- si potrebbe guess-- aperto a metà la metà destra del libro. E ancora, andare alla riga tre. Else-- qual è la riga finale in questo programma sta per essere? Se lui non è tra i nomi sulla pagina sono su, se non è prima in il libro, e non più tardi di nel libro, che ne so io è vero su Mike Smith adesso? PUBBLICO: Non è nel libro. DAVID J. MALAN: Non è nel libro. Quindi il meglio che posso fare è solo rinunciare e fermare questo programma. Bene. Quindi a questo punto, diamo un rapido giro di alcuni di ciò che attende. E in effetti, sto entrato qui da un numero di personale CS50. Se queste persone potrebbero tutti unirvi a me qui sul palco. [Applausi] Intendiamoci, questo è solo un sottoinsieme di personale CS50, dal momento che ogni anno abbiamo quasi 100 personale membri in ruoli di assistenti del corso, insegnamento compagni, e altro ancora. Andiamo su. Così si uniranno a noi qui goffamente per un attimo come diamo un rapido giro di ciò che si dovrebbe aspettare qui in corso. Quindi, prima di tutto, abbiamo SAT / UNS come opzione di classificazione in corso. Questo è inteso deliberatamente essere un quale opzione se siete un po 'a disagio di essere in corso, e non temete failure-- anche se francamente fallimento significa danneggiare il vostro GPA, ottenendo un B e non un A-- che è precisamente ciò che, certamente per un gateway Naturalmente come CS50 e altri corsi introduttivi, questa opzione di classificazione ha lo scopo di consentire. Io incoraggio di tutto cuore allievi-- soprattutto se il fence-- per avviare la Naturalmente SAT / UNS, anche rimangono SAT / UNS. Ma si può certamente passare a una lettera grado dal quinto Lunedi nel periodo. Francamente, quando ho era una matricola nel 1995, Io stesso non ho nemmeno preso CS50 perché non ho avuto il coraggio al punto realmente piede in classe. Sembrava un dominio troppo sconosciuto a me e davvero solo per i miei amici, francamente, che era stato di programmazione dato che erano sei o forse 10 anni di età. Ed è stato solo perché ero in grado di prendere CS50 nel mio giorno nella versione equivalente di SAT / passaggio UNS-- / fallire di nuovo in giorno-- che anche ho preso 50. E un modo o nell'altro, sono di nuovo qui con voi oggi. Ora, nel frattempo che cosa altro si dovrebbe tenere a mente su 50 è contemporanea iscrizione. Contrariamente alle voci che si potrebbe avere sentito, è possibile, infatti, contemporaneamente iscriversi in CS50 e un'altra classe che incontra nello stesso o qualche sovrapposizione tempo come le lezioni di CS50 proprio qui. Vedere il programma delle indicazioni di della sua osservanza. Lezioni frontali, nel frattempo, contrariamente a ciò che è ufficialmente nel catalogo, generalmente solo incontrare solo per un'ora. A volte si può correre un po 'lungo. Ma tenere a mente che il obiettivo in lezioni di CS50 è quello di fornire con una panoramica concettuale, si spera alcune dimostrazioni, forse anche alcuni omaggi, di ciò che attende per la settimana che segue. E così in lezioni, esploreremo questi argomenti ed esempi insieme, portando gli studenti sul palco, e personale sul palco il più spesso possibile, solo per un paio di ore ogni settimana. Sezioni, nel frattempo, saranno offerto da queste persone qui-- molti di insegnare loro compagni, alcuni di loro volontà ovviamente assistants-- accadere settimanale. E ciò che è fondamentale per mantenere in mente è che noi non have-- diversamente First Notti, la musica class-- diverse tracce di sezioni per studenti meno confortevoli, più confortevole, e da qualche parte nel mezzo. E, francamente, sai se sei meno confortevole. E probabilmente sapete se sei più comodo. E se non siete veramente sicuri, siete per definizione, una via di mezzo. Così, quando arriva il momento di sezione in una settimana o giù di lì, per il programma, ti chiederemo questa domanda. E si può auto-selezione basata sul proprio livello di comfort e stare con allievi-- essere con verde dots-- simile a livello di comfort per voi. Nel frattempo, abbiamo un problema imposta, che in ultima analisi definire la tua esperienza in questo corso. Sono offerti in genere in più edizioni. Una edizione standard che ci aspettiamo più ogni studente nel corso di affrontare ma anche un cosiddetto edizione pirata che non offre alcuna forma di credito extra a titolo definitivo, ma in realtà i diritti di vanteria a dire che si è tentato e affrontato edizioni di hacker del corso che avvicinarsi al materiale simile ma da un angolo più sofisticato. Cosa offriamo per la edizione standard, per, ancora una volta, una maggioranza super- di studenti, non sono solo walk-through, che sono video guidati dal personale del corso che veramente si cammina attraverso la i problemi del corso ed eventuale progettazione implementazioni. E anche noi, dopo la infatti, offrono postmortem, per cui se ti stai chiedendo come si potrebbe avere o avrebbe dovuto risolvere alcuni problema, il personale docente vi guiderà attraverso quelli video. Nel frattempo, cosa attende troppo sono cinque giorni di ritardo e il fatto che noi cadere l' problema più basso punteggio set. Noi certamente apprezziamo che in cambio per il carico di lavoro che 50 si aspetta di te, la vita si mette di mezzo a volte, se non cinque volte. E così questo offrirà un po 'di flessibilità, estendere la scadenza da, diciamo, un Giovedi a mezzogiorno per un Venerdì a mezzogiorno. Vedere il programma per la dettagli di implementazione della stessa. Ora che cosa attende ora? Ed è che si verificano solo a me ora quanto tempo Sto avendo voi ragazzi stare qui sul palco. [Risate] DAVID J. MALAN: Ma ci arriveremo a il finale culminante in breve tempo. Così che cosa aspetta in termini dei set di problema? Beh, forse un teaser di ciò che tutti noi ha fatto l'anno scorso con i suoi predecessori. Nel primo set problema l'anno scorso, abbiamo introdotto Scratch, una grafica linguaggio di programmazione che permette di programmare letteralmente da trascinare e rilasciare i pezzi del puzzle, come questi, che sono ricorda i costrutti vedrà una sola settimana di conseguenza, quando si passa ad un più tradizionale lingua, noto come C. L'anno scorso si è proceduto a questo problema insieme, coinvolgendo per la crittografia, il rimescolamento delle informazioni per evitare che si governative o amici ' occhi che non si vuole vedere. Codificata in qui è un messaggio che presto si sarà in grado di decifrare o de-scramble. Breakout è stato un problema stabilito lo scorso anno, in cui si utilizzano questi nuovi programmazione trovati capacità di applicare concretamente un gioco wherein-- come si può ricordare da childhood-- l'obiettivo era quello di colpire il mattoni che si trovano in cima alla schermata qui, accumulando un segnare lungo la strada, e attuare i propri algoritmi con cui questa soluzione definitiva ti permette di giocare il gioco. Nel frattempo, nel corso della semestre, vi daremo un dizionario di 143.091 parole in inglese. E sarete sfidati scrivere un programma che incantesimo assegni, documenti, da caricamento che molte parole in memoria modo più efficiente possibile. Generalmente si pitting contro i tuoi compagni di classe se si opta in un po 'di sfida in classifica per vedere chi può utilizzare il minor numero secondi di tempo di esecuzione, e il numero minor di megabyte di memoria, e in realtà la messa a punto dei programmi ad essere incredibilmente efficiente delle risorse non solo tempo. L'anno scorso, anche, abbiamo guardato alla fine del semestre in programmazione web. E infatti, lo faremo di nuovo questo anno con più set di problemi, vi introduce alle tecniche e la mentalità con la quale è possibile applicare queste competenze di programmazione a siti web, siti web dinamici, siti web che effettivamente risolvono problemi e comportarsi in modo diverso e non sono semplicemente statico siti con informazioni statiche. Il progetto finale in ultima analisi, definirà, però, il culmine del corso per gli studenti, in cui sarete sfidati a realizzare qualsiasi cosa di interesse a voi, a patto che in qualche modo attinge le lezioni del corso. E come avete visto nel video all'inizio, concluderemo il semestre con la CS50 Hackathon, che se, non familiare, avrà inizio alle 07:00 una notte e terminerà alle 7:00 del mattino successivo. Intorno 09:00, faremo ordine in prima cena. Intorno 01:00, faremo ordine in seconda cena. E se siete ancora in piedi alle 5:00 del mattino, abbiamo sarà bus navetta vi IHOP per la prima colazione. La Fiera CS50, nel frattempo, è un evento di cui 2.000 più docenti, studenti, e personale di tutta campus sarà venire a vedere le vostre realizzazioni nel corso e la finale progetti e realizzazioni che si crea sul vostro laptop, desktop, o lampadine forse anche leggeri. Nel frattempo, le ore di ufficio e la struttura di supporto. E ora sarebbe stato un occasione migliore per portare tutto. Orario di ricevimento si svolgeranno quattro notti una settimana per più ore ogni notte con in genere da 20 a 30 del Il personale del corso di turno in una sola volta di fornire con intima one-on-one opportunità di sostegno con insiemi di problemi del corso. Tutoring troppo sarà disponibili, in particolare per gli studenti meno comfortable-- o Oserei dire almeno comfortable-- per i quali orario di ufficio non lo sono più ambiente educativo e non sono certamente il più senza stress. Soprattutto quando le scadenze sono pressanti, ti in modo proattivo l'associazione voi stessi con un membro del personale che operi con su qualche programma normale come le vostre esigenze e il loro programma permette. E il personale. Permettetemi di presentarvi Davon, Rob, e Gabriel, le teste di quest'anno. Se ognuno vuole say-- [Applausi] Parola --a. [Applausi] Davon qui è il direttore del corso, che significa nel suo ruolo a tempo pieno aiuta con l'esecuzione e logistica di CS50. Davon: Sì, ciao, ragazzi. Vedrete un sacco di me in orari d'ufficio. Ti insegnerò sezioni. E se si spara e-mail in anticipo, Io probabilmente essere la risposta. Allora ci vediamo un sacco di voi tutto il semestre. E benvenuti a CS50. DAVID J. MALAN: Ed ora Gabriel, che stesso era solo una matricola lo scorso anno, ma da un paio di anni ha stato di funzionamento la sua versione di CS50 in Brasile, per cui ha scaricato tutti content-- del corso che è essere chiaramente girato e messo online-- in modo che potesse tradurre in Portoghese e poi insegnare più di 100 dei suoi compagni di classe sul corso di un paio di anni, insegnamento nella sua lingua nativa curriculum del corso. GABRIEL: Ciao. [Applausi] GABRIEL: Ciao, sono Gabriele. Sono il TF capo del corso. E spero vi innamorerete CS50. Questo è CS50. DAVID J. MALAN: Ora per Rob. Oh, vuoi introduzione? ROB: No, non lo so. [Risate] DAVID J. MALAN: E Rob Boden. [Risate] ROB: Ciao, sono Rob. Questo è il mio quinto anno coinvolti con il corso. Ogni anno, è solo un sempre meglio di classe, così voi ragazzi sono chiaramente sta per essere impressionante. Spero che tutti voi avete divertimento con esso. Ho intenzione di divertirsi con essa. Così vediamo in giro. DAVID J. MALAN: E il tempo non permetterà noi-- [Applausi] Il tempo non ci permetterà di introdurre tutti sul palco e tutti i loro colleghi che stanno acquistando classi di oggi. Ma mi permetta di introdurre Belinda e CS50 Puzzle Giorno, che attende questo prossimo Sabato, che è il primo dei grandi eventi scala del corso. Questo uno in particolare significato a martellare a casa il punto che l'informatica è in ultima analisi, non sulla programmazione, ma piuttosto sul problem solving, più in generale. E Puzzle Day, come avrete v, vi porterà ei tuoi compagni di classe together-- speriamo che questo Sabato. BELINDA: OK. Ciao, ragazzi. Quindi grazie. Così come il nostro capitano illustre Detto questo, il mio nome Belinda. Sono al secondo anno a Quincy House. Io, come voi ragazzi, presi CS50 l'anno scorso, ci è piaciuto molto. Ho un debole per voi ragazzi della terza fila. E sono orgoglioso di dire, ora sono impegnata in una relazione con CS50 [incomprensibile]. Ok. Quella era la mia versione zoppo di una barzelletta. In ogni caso, in modo da andare avanti, volevo solo invitare voi ragazzi tutti alla i-lab, o orticaria HBS. Stiamo per essere avere Puzzle Giorno 12:00-03:00. Ed è una grande opportunità per voi ragazzi per incontrare i tuoi compagni di amici CS, risolvere alcuni enigmi non-CS, come il capitano citato, e anche mangiare qualche cibo gratuito, guadagnare alcuni premi impressionante, come carte regalo, $ 75 per persona, e also-- che cosa era? Wii U o qualcosa del genere? Wii U? Sì. Per la nostra lotteria. Impressionante. Quindi mi atterrò in giro dopo le lezioni. E se voi ragazzi avete qualsiasi domande, fatemi sapere. DAVID J. MALAN: E vedrai, al di là questo non c'è niente da fare oggi. Il primo problema impostato uscirà Venerdì. Ma per portarci a casa oggi, mi piacerebbe introdurrà specificamente per una più membro dello staff, Colton Ogden qui, le cui mani sono ora protetto sopra di voi con questo controller MIDI a martellare a casa il punto più che la scienza del computer, anche, ha applicabilità ben oltre l'ingegneria e STEM e l'informatica in sé, estendere anche a tali domini come la musica. Colton ha gentilmente offered-- ho pensato uno di loro stava per fissare la messa a fuoco. Andrea, se potessimo evocare fuoco qui solo per un attimo. Cosa Colton ha fatto in anticipo è il programma questo dispositivo, questo pad di pulsanti che vedete nella foto qui, come controller MIDI, in base al quale ciascuno di questi pulsanti è collegato a una particolare nota musicale o un suono, più in generale una registrazione, tale che giocando modelli di questi bottoni, molto simile pattern di bit, può rappresentare altro concetti di livello superiore. Riuscirà alla fine per portarci a casa oggi? Senza ulteriori indugi, se potremmo abbassare le luci, e accendere lo schermo dietro Colton. PUBBLICO: Woo! DAVID J. MALAN: Questo è CS50. [GIOCO MUSICA] [Applausi] Questo è tutto per CS50. Ci vediamo Venerdì. Alcuni torta vi aspetta nel transetto. [GIOCO MUSICA]