1 00:00:00,000 --> 00:00:03,440 >> [GIOCO MUSICA] 2 00:00:03,440 --> 00:01:57,217 3 00:01:57,217 --> 00:02:00,710 >> [Applausi] 4 00:02:00,710 --> 00:02:05,700 5 00:02:05,700 --> 00:02:09,669 >> DAVID J. MALAN: Questo è CS50, Introduzione di Harvard 6 00:02:09,669 --> 00:02:12,370 per l'intellettuale imprese di informatica 7 00:02:12,370 --> 00:02:14,180 e l'arte della programmazione. 8 00:02:14,180 --> 00:02:17,530 Ora, se siete tra quelli che ogni anno sono seduti qui 9 00:02:17,530 --> 00:02:21,450 con un po 'di nervi nella vostra mente, come ad che non pensi tu appartieni qui, 10 00:02:21,450 --> 00:02:24,270 si pensa che la maggior parte chiunque seduti intorno a te 11 00:02:24,270 --> 00:02:27,730 sa molto più di te, è davvero più comodo di voi al computer di 12 00:02:27,730 --> 00:02:30,430 scienza o computer più in generale, realizzare 13 00:02:30,430 --> 00:02:36,140 che il 78% degli studenti che ora prendere CS50 non hanno alcuna esperienza precedente. 14 00:02:36,140 --> 00:02:39,570 >> In effetti, c'è 100 punti lì sul display, 78 dei quali 15 00:02:39,570 --> 00:02:43,540 sono verde fisso, il che significa, se siete tra quella demografica, 16 00:02:43,540 --> 00:02:46,420 sono in buona compagnia qui in avanti. 17 00:02:46,420 --> 00:02:50,320 E se siete invece tra i 22% degli studenti CS50 che lo fanno davvero 18 00:02:50,320 --> 00:02:53,920 avere precedente esperienza, sia in liceo o qualche altro programma, 19 00:02:53,920 --> 00:02:56,430 rendersi conto che anche voi, sarà essere messo in discussione nel corso. 20 00:02:56,430 --> 00:02:59,930 >> Non solo abbiamo diverse tracce per gli studenti meno confortevole e più 21 00:02:59,930 --> 00:03:03,789 confortevole simili in sezioni, abbiamo hanno anche i cosiddetti edizioni degli hacker 22 00:03:03,789 --> 00:03:06,080 di più problema stabilisce che sarà una sfida per gli studenti 23 00:03:06,080 --> 00:03:09,650 con questa esperienza supplementare esplorare materiale simile 24 00:03:09,650 --> 00:03:12,140 ma da un più prospettiva sofisticato. 25 00:03:12,140 --> 00:03:13,900 >> Ma che cosa è la scienza del computer? 26 00:03:13,900 --> 00:03:17,750 Beh, in ultima analisi, ciò che sta per importa come esplorare questo campo non è 27 00:03:17,750 --> 00:03:20,500 tanto dove si finisce rispetto ai vostri compagni di classe, 28 00:03:20,500 --> 00:03:25,350 ma dove ti sei finiscono in settimana 12 rispetto a dove si inizia qui 29 00:03:25,350 --> 00:03:26,720 in settimana lo zero. 30 00:03:26,720 --> 00:03:31,850 Ora di computer science-- bene, cerchiamo di chiamare la scienza della computation-- 31 00:03:31,850 --> 00:03:35,910 dove il calcolo è davvero solo un modo elegante per dire, prendendo alcuni input, 32 00:03:35,910 --> 00:03:39,460 producendo qualche uscita, e così facendo da algoritmi in esecuzione, 33 00:03:39,460 --> 00:03:43,700 set di istruzioni per risolvere qualche problema su quei fattori 34 00:03:43,700 --> 00:03:48,460 per produrre un output o soluzione a cui si è interessati. 35 00:03:48,460 --> 00:03:51,310 >> Così abbiamo avuto di recente occasione di viaggiare fuori 36 00:03:51,310 --> 00:03:53,170 in California per incontrare con una allieva. 37 00:03:53,170 --> 00:03:54,650 Il suo nome è Susan Wojcicki. 38 00:03:54,650 --> 00:03:57,190 E lei vorrebbe parlare a voi qui sul video 39 00:03:57,190 --> 00:04:01,690 a testimoniare quanto sia applicabile anche solo un assaggio di PC 40 00:04:01,690 --> 00:04:03,770 scienza alla livello introduttivo può essere. 41 00:04:03,770 --> 00:04:06,870 Anche se non si va a perseguire l'informatica come un campo, 42 00:04:06,870 --> 00:04:09,330 o anche di ingegneria, o STEM più in generale, 43 00:04:09,330 --> 00:04:12,360 si vedrà, infatti, come un certo Naturalmente così influenzato la sua vita. 44 00:04:12,360 --> 00:04:16,630 E lei appena preso quando lei era un anziano qui a Harvard College. 45 00:04:16,630 --> 00:04:19,482 >> Se potessimo abbassare le luci per Susan. 46 00:04:19,482 --> 00:04:20,690 SUSAN Wojcicki: Ciao, mondo. 47 00:04:20,690 --> 00:04:22,100 Sono Susan Wojcicki. 48 00:04:22,100 --> 00:04:24,110 Sono il CEO di YouTube. 49 00:04:24,110 --> 00:04:29,150 E ho preso CS50 quando ero un anziano di Harvard nel 1990. 50 00:04:29,150 --> 00:04:31,220 Mi è stato effettivamente una storia e la letteratura importante. 51 00:04:31,220 --> 00:04:36,760 >> E la mia Junior estate, Mi sono reso conto che forse 52 00:04:36,760 --> 00:04:39,060 voluto imparare qualcosa di computer. 53 00:04:39,060 --> 00:04:40,930 E così, sono tornato. 54 00:04:40,930 --> 00:04:42,500 Ho preso CS50. 55 00:04:42,500 --> 00:04:46,940 E 'stata dura, ma è stato il più di classe incredibile ho preso. 56 00:04:46,940 --> 00:04:49,630 >> E 'cambiato il modo penso a tutto. 57 00:04:49,630 --> 00:04:55,810 E quando mi sono laureato ad Harvard nel 1990, sono andato a Silicon Valley. 58 00:04:55,810 --> 00:04:57,140 E ho trovato un lavoro. 59 00:04:57,140 --> 00:05:00,150 E ho lavorato in tecnologia da allora. 60 00:05:00,150 --> 00:05:02,650 DAVID J. MALAN: Ora che cosa Susan non ha menzionato in questo video, 61 00:05:02,650 --> 00:05:05,340 che era effettivamente nel suo garage che Google stesso è stato 62 00:05:05,340 --> 00:05:07,420 fondata da Larry e Sergey. 63 00:05:07,420 --> 00:05:11,169 >> Ora abbiamo raggiunto ai nostri amici a code.org, un'organizzazione che 64 00:05:11,169 --> 00:05:13,460 lo scorso anno è stato persone che si particolarmente 65 00:05:13,460 --> 00:05:16,520 entusiasta di informatica e programmazione, in particolare. 66 00:05:16,520 --> 00:05:20,590 Ma vale la pena notare che la programmazione non è informatica per sé. 67 00:05:20,590 --> 00:05:22,090 L'informatica non è la programmazione. 68 00:05:22,090 --> 00:05:24,560 Piuttosto la programmazione è solo un tool-- con cui tutti voi 69 00:05:24,560 --> 00:05:27,510 sarà fin troppo bene familiare da end-- del semestre 70 00:05:27,510 --> 00:05:30,650 tale che non è possibile applicare solo per i corsi futuri CS 71 00:05:30,650 --> 00:05:33,670 ma a qualunque campi dove sei venuta, in discipline umanistiche, 72 00:05:33,670 --> 00:05:36,090 scienze sociali, naturali scienza, o simili. 73 00:05:36,090 --> 00:05:39,740 >> Infatti, consentire pochi altri alunni e dei loro colleghi 74 00:05:39,740 --> 00:05:43,400 di parlare l'applicabilità del campo che attende. 75 00:05:43,400 --> 00:05:52,340 76 00:05:52,340 --> 00:05:57,350 >> BILL GATES: avevo 13 anni quando ho prima avuto accesso a un computer. 77 00:05:57,350 --> 00:06:00,485 >> Jack Dorsey: I miei genitori mi ha comprato un Macintosh nel 1984 78 00:06:00,485 --> 00:06:01,640 quando avevo otto anni di età. 79 00:06:01,640 --> 00:06:02,990 >> Mark Zuckerberg: ero in prima media. 80 00:06:02,990 --> 00:06:04,670 >> SPEAKER 1: ho imparato a codificare in un college. 81 00:06:04,670 --> 00:06:09,080 >> RUCHI Sanghvi: Primo anno, prima semestre, Introduzione alla Computer Science. 82 00:06:09,080 --> 00:06:11,850 >> BILL GATES: Ho scritto un programma che ha giocato tic-tac-toe. 83 00:06:11,850 --> 00:06:14,100 >> DREW HOUSTON: credo che fosse abbastanza umili origini. 84 00:06:14,100 --> 00:06:16,370 Credo che il primo programma Ho scritto chiesto cose come, 85 00:06:16,370 --> 00:06:17,820 qual è il tuo colore preferito? 86 00:06:17,820 --> 00:06:18,696 Oppure, quanti anni hai? 87 00:06:18,696 --> 00:06:21,070 ELENA SILENOK: in primo luogo ho imparato come fare un cerchio verde 88 00:06:21,070 --> 00:06:23,670 e un quadrato rosso appare sullo schermo. 89 00:06:23,670 --> 00:06:25,420 Gabe Newell: la prima volta che ho effettivamente avuto 90 00:06:25,420 --> 00:06:27,360 qualcosa di venire e dire, ciao, mondo. 91 00:06:27,360 --> 00:06:29,710 E ho fatto un computer farlo. 92 00:06:29,710 --> 00:06:30,850 Era semplicemente incredibile. 93 00:06:30,850 --> 00:06:33,224 >> Mark Zuckerberg: Imparare al programma di non iniziare 94 00:06:33,224 --> 00:06:35,450 come vogliono imparare tutta la scienza del computer 95 00:06:35,450 --> 00:06:38,630 o cercando di padroneggiare questo disciplina o qualcosa di simile. 96 00:06:38,630 --> 00:06:41,591 E 'appena iniziato perché ho voluto fare questa cosa semplice. 97 00:06:41,591 --> 00:06:44,340 Volevo fare qualcosa che è stato divertente per me e le mie sorelle. 98 00:06:44,340 --> 00:06:46,399 >> E ho scritto questo piccolo programma. 99 00:06:46,399 --> 00:06:48,440 E poi fondamentalmente solo aggiunto un po 'di esso. 100 00:06:48,440 --> 00:06:49,930 E poi quando ho avuto bisogno per imparare qualcosa di nuovo, 101 00:06:49,930 --> 00:06:52,210 Ho guardato in su, sia in un libro o su internet, 102 00:06:52,210 --> 00:06:53,240 e poi ha aggiunto un po 'di esso. 103 00:06:53,240 --> 00:06:56,300 >> DREW HOUSTON: Non è proprio a differenza di suonare uno strumento o qualcosa 104 00:06:56,300 --> 00:07:00,007 o praticare uno sport. 105 00:07:00,007 --> 00:07:01,090 DAVID J. MALAN: Va bene. 106 00:07:01,090 --> 00:07:04,120 Quindi cerchiamo ora effettivamente immergersi in un po 'più profonda. 107 00:07:04,120 --> 00:07:07,430 Quali sono questi ingressi e uscite che stiamo parlando qui? 108 00:07:07,430 --> 00:07:09,110 >> Così come su qualcosa di semplice? 109 00:07:09,110 --> 00:07:12,120 Probabilmente sapere, anche se si dispone di nessuna familiarità con l'informatica 110 00:07:12,120 --> 00:07:16,570 di sorta, che i computer utilizzano in qualche modo e capisce solo zero e uno. 111 00:07:16,570 --> 00:07:20,500 Ma come può eventualmente essere dato come desktop e laptop egualmente molto di oggi 112 00:07:20,500 --> 00:07:21,280 può fare? 113 00:07:21,280 --> 00:07:24,310 >> Il DNA del giorno, l'unico alfabeto che capiscono 114 00:07:24,310 --> 00:07:26,410 è uno zero o uno. 115 00:07:26,410 --> 00:07:27,470 Beh, considerare questo. 116 00:07:27,470 --> 00:07:30,840 Noi, esseri umani, tendiamo a utilizzare il sistema decimale. "Dec" che significa 10. 117 00:07:30,840 --> 00:07:33,970 E questo è il 10 perché abbiamo 10 cifre, da 0 a nove. 118 00:07:33,970 --> 00:07:36,180 >> Ora i computer, per contrasto, tendono ad usare binario. 119 00:07:36,180 --> 00:07:37,270 "Bi" che significa due. 120 00:07:37,270 --> 00:07:39,560 Quindi tendono a utilizzare solo zero e uno. 121 00:07:39,560 --> 00:07:42,680 Ma si scopre, che anche solo con zeri e quelli, che 122 00:07:42,680 --> 00:07:45,900 è sufficientemente grande alfabeto con cui rappresentare più 123 00:07:45,900 --> 00:07:48,490 qualsiasi pezzo di dati che si desidera, che si tratti di un numero, 124 00:07:48,490 --> 00:07:52,100 che si tratti di una lettera, che si tratti di un grafico o video sullo schermo. 125 00:07:52,100 --> 00:07:57,140 >> Si consideri, per esempio, come noi umani tipicamente interpretare questo numero qui. 126 00:07:57,140 --> 00:08:00,010 Questo è solo tre cifre, uno, due, tre. 127 00:08:00,010 --> 00:08:04,570 Ma sappiamo che questo numero innato ora come 123. 128 00:08:04,570 --> 00:08:05,510 Ma perché? 129 00:08:05,510 --> 00:08:07,570 >> Beh, se si pensa di nuovo forse a scuola elementare, 130 00:08:07,570 --> 00:08:11,700 probabilmente vi è stato insegnato a pensare di questi numeri come essere in colonne, 131 00:08:11,700 --> 00:08:14,700 dove l'uno è nell'ordine delle centinaia luogo, i due è collocati decine, 132 00:08:14,700 --> 00:08:16,360 e il tre è nel posto quelli. 133 00:08:16,360 --> 00:08:17,790 Perché è che in realtà utile? 134 00:08:17,790 --> 00:08:19,665 Beh, pensare alla super semplice aritmetica 135 00:08:19,665 --> 00:08:22,219 che tutti noi siamo stati facendo ormai da anni. 136 00:08:22,219 --> 00:08:24,510 In effetti, se hai uno nel posto di centinaia, 137 00:08:24,510 --> 00:08:29,610 fate i conti rapido 100 volte 1 più 10 volte 2-- 138 00:08:29,610 --> 00:08:33,059 perché due sono a decine posto-- oltre 1 volte 3-- 139 00:08:33,059 --> 00:08:34,830 perché tre è nel posto quelli. 140 00:08:34,830 --> 00:08:37,039 Così, naturalmente, se in realtà moltiplicare questo fuori, 141 00:08:37,039 --> 00:08:39,600 quello che stiamo realmente rappresentare con questo pattern-- 142 00:08:39,600 --> 00:08:46,150 due sulle tre ruote è 100 più 20 più 3, che, naturalmente, è 123. 143 00:08:46,150 --> 00:08:51,130 >> Ora binario, e computer davvero, fondamentalmente parlare la stessa lingua 144 00:08:51,130 --> 00:08:51,680 che facciamo. 145 00:08:51,680 --> 00:08:53,400 Hanno solo un alfabeto più piccolo. 146 00:08:53,400 --> 00:08:57,100 Così i computer hanno solo zeri e quelli a loro disposizione. 147 00:08:57,100 --> 00:09:02,500 Così, mentre noi umani abbiamo essenzialmente potenze di 10 in ciascuna di queste places-- 148 00:09:02,500 --> 00:09:06,810 10 allo zero, 10 a quello, dieci ai due, dandovi 110 e 100 149 00:09:06,810 --> 00:09:07,700 rispettivamente. 150 00:09:07,700 --> 00:09:12,140 >> Poiché i computer hanno solo due valori possono comprendere, zero e uno, 151 00:09:12,140 --> 00:09:16,600 devono usare valori diversi in queste colonne, uno, due, quattro. 152 00:09:16,600 --> 00:09:20,480 E se abbiamo mantenuto andando, otto, 16, 32, 64, e così via. 153 00:09:20,480 --> 00:09:24,220 Ma il modello e la mentalità è esattamente lo stesso. 154 00:09:24,220 --> 00:09:27,340 >> Così da questa logica, chiunque, come sarebbe Vado circa che rappresenta il numero 155 00:09:27,340 --> 00:09:28,530 uno in binario? 156 00:09:28,530 --> 00:09:33,080 Se non hai mai nemmeno pensato di questo prima, che cosa è il vostro intestino dire? 157 00:09:33,080 --> 00:09:33,777 >> PUBBLICO: One. 158 00:09:33,777 --> 00:09:34,610 DAVID J. MALAN: One. 159 00:09:34,610 --> 00:09:35,660 Esattamente. 160 00:09:35,660 --> 00:09:38,100 Abbiamo solo bisogno di un uno nel quelli posto perché gli zeri 161 00:09:38,100 --> 00:09:40,610 sufficiente a dare noi né quattro né due. 162 00:09:40,610 --> 00:09:42,440 Quindi, una volte uno fa uno. 163 00:09:42,440 --> 00:09:43,940 Ora le cose si fanno un po 'interessante. 164 00:09:43,940 --> 00:09:46,830 Se voglio rappresentare in binario Il numero two-- ma, 165 00:09:46,830 --> 00:09:49,790 ancora una volta, anche se non hai mai parlata questa lingua prima, 166 00:09:49,790 --> 00:09:54,680 come facciamo noi rappresentiamo in binario il valore che gli esseri umani sanno come due? 167 00:09:54,680 --> 00:09:55,570 Zero uno zero. 168 00:09:55,570 --> 00:09:57,620 Basta mettere quello nella colonna che si desidera. 169 00:09:57,620 --> 00:09:59,560 >> Ora si sta facendo abbastanza facile probabilmente ora. 170 00:09:59,560 --> 00:10:02,950 Quindi, se voglio rappresentare sulle tre ruote non vi è alcuna colonna di tre. 171 00:10:02,950 --> 00:10:06,770 Così, ancora una volta, ora posso aggiungere questi valori insieme mettendo uno qui. 172 00:10:06,770 --> 00:10:10,320 Quindi 2 volte 1 più 1 volte 1 è, ovviamente, 3. 173 00:10:10,320 --> 00:10:13,480 >> Ora le cose si fanno un po 'di divertimento in che quelli che ora diventano zeri. 174 00:10:13,480 --> 00:10:15,480 E per rappresentare quattro, ottengo questo. 175 00:10:15,480 --> 00:10:19,310 E se incrementiamo lentamente qui-- che sarebbe cinque. 176 00:10:19,310 --> 00:10:20,700 Questo sarebbe di sei. 177 00:10:20,700 --> 00:10:22,100 Questo sarebbe sette. 178 00:10:22,100 --> 00:10:25,310 >> Ma ora mi sembra di avere incorrere in un problema. 179 00:10:25,310 --> 00:10:30,520 Come potrei fare per rappresentare eight-- sarebbe il valore successivo. 180 00:10:30,520 --> 00:10:31,900 Sì, così abbiamo bisogno di un nuovo bit. 181 00:10:31,900 --> 00:10:33,899 E, anzi, se avete sentito questa frase prima, 182 00:10:33,899 --> 00:10:37,380 bit, questo è solo l'abbreviazione di cifra binaria, zero o uno. 183 00:10:37,380 --> 00:10:41,520 >> E così mi capita di rappresentare solo tre di questi bit qui. 184 00:10:41,520 --> 00:10:44,900 Ma se ho avuto modo di registrare, tre diversi bit, ma quattro, 185 00:10:44,900 --> 00:10:47,250 sicuramente avrei potuto rappresentare otto, nove e poi, e poi 186 00:10:47,250 --> 00:10:49,400 10, e anche più in alto. 187 00:10:49,400 --> 00:10:52,140 >> Ma che poi chiama in questione come possiamo 188 00:10:52,140 --> 00:10:54,540 andare su di rappresentare questi cose, in primo luogo. 189 00:10:54,540 --> 00:10:56,950 E 'una cosa da disegnare li qui su un vetrino, 190 00:10:56,950 --> 00:11:00,660 ma come si fa a loro rappresentate se sei un dispositivo meccanico? 191 00:11:00,660 --> 00:11:04,390 Che cosa è un computer facendo per rappresentano gli ingressi e le uscite che 192 00:11:04,390 --> 00:11:09,020 fondamentalmente definire computazione alla fine della giornata? 193 00:11:09,020 --> 00:11:12,090 >> Beh, che dire qualcosa super semplice come questo? 194 00:11:12,090 --> 00:11:13,200 E 'solo una lampadina. 195 00:11:13,200 --> 00:11:15,460 E posso attivare questo lampadina per andare avanti 196 00:11:15,460 --> 00:11:17,920 girando un po 'di energia elettrica su elettroni e permettendo 197 00:11:17,920 --> 00:11:22,585 di fluire attraverso, che cambia stato o il suo valore, per così dire. 198 00:11:22,585 --> 00:11:24,460 Per esempio, questo è una lampada vecchia scuola scrivania 199 00:11:24,460 --> 00:11:27,250 qui con uno di questi lampadina all'interno di esso. 200 00:11:27,250 --> 00:11:29,940 E in questo momento non è davvero fare qualcosa di utile. 201 00:11:29,940 --> 00:11:32,680 Ma non appena mi collego in una presa elettrica 202 00:11:32,680 --> 00:11:36,390 e quindi utilizzare questo switch-- o possiamo anche chiamarlo un transistor 203 00:11:36,390 --> 00:11:39,970 o pensare ad esso come such-- Ora posso rappresentare sia 204 00:11:39,970 --> 00:11:44,120 questo valore, dove la lampadina del ovviamente off, o questo valore. 205 00:11:44,120 --> 00:11:46,060 Questo valore o questo valore. 206 00:11:46,060 --> 00:11:47,520 Questo valore e così via. 207 00:11:47,520 --> 00:11:51,220 >> Quindi, all'interno di un computer, presumibilmente, sono molto più piccoli pezzi di hardware, 208 00:11:51,220 --> 00:11:52,970 ma che alla fine del giorno hanno semplicemente 209 00:11:52,970 --> 00:11:55,360 utilizzare electricity-- forse catturare it-- 210 00:11:55,360 --> 00:11:59,730 e poi o mantenere qualcosa o tenere qualcosa fuori. 211 00:11:59,730 --> 00:12:02,021 Naturalmente, questo non è particolarmente interessante da fare 212 00:12:02,021 --> 00:12:03,270 con una sola lampadina. 213 00:12:03,270 --> 00:12:06,726 >> In realtà, quanto in alto posso contare in binario con questa lampada da scrivania qui? 214 00:12:06,726 --> 00:12:07,420 >> PUBBLICO: One. 215 00:12:07,420 --> 00:12:08,545 >> DAVID J. MALAN: One, giusto? 216 00:12:08,545 --> 00:12:11,020 Ho bisogno di più lampade da scrivania se io effettivamente desidera contare superiore. 217 00:12:11,020 --> 00:12:12,210 Ma possiamo fare di meglio. 218 00:12:12,210 --> 00:12:14,460 Perché le lampadine che abbiamo messo in queste cose 219 00:12:14,460 --> 00:12:17,730 sono lampadine realtà amatore che ieri avrebbe permesso. 220 00:12:17,730 --> 00:12:20,310 E sono in realtà lampadine in rete. 221 00:12:20,310 --> 00:12:23,160 E mazzi di società fare queste cose in questi giorni. 222 00:12:23,160 --> 00:12:25,190 >> Ma si scopre che questa in particolare 223 00:12:25,190 --> 00:12:27,680 è dotato di una funzione di cui è possibile cambiare i colori. 224 00:12:27,680 --> 00:12:30,810 Così, per esempio, se si ornata vostra stanza del dormitorio 225 00:12:30,810 --> 00:12:33,200 con alcuni di questi luce lampadine, a seconda del vostro umore, 226 00:12:33,200 --> 00:12:35,366 a seconda di chi viene in, a seconda del tempo, 227 00:12:35,366 --> 00:12:37,360 a seconda del tempo di giorno, si può effettivamente 228 00:12:37,360 --> 00:12:40,300 cambiare i colori le lampadine nella vostra camera. 229 00:12:40,300 --> 00:12:43,740 E questo è perché questi luce bulbi e altri simili hanno ciò che è 230 00:12:43,740 --> 00:12:48,010 chiamato API, un'applicazione interfaccia di programmazione, che 231 00:12:48,010 --> 00:12:50,920 è un argomento con il quale sarete bene conoscenza entro la fine del semestre. 232 00:12:50,920 --> 00:12:53,710 >> E questo è solo una fantasia, modo criptico per dire, 233 00:12:53,710 --> 00:12:57,570 è possibile programmare questi luce lampadine di fare la vostra offerta. 234 00:12:57,570 --> 00:13:00,360 È possibile inviare messaggi proprio come te, un essere umano, 235 00:13:00,360 --> 00:13:03,640 può inviare un messaggio a un server web dicendo, dammi notizie di oggi 236 00:13:03,640 --> 00:13:05,110 o darmi la mia email. 237 00:13:05,110 --> 00:13:08,010 >> È possibile inviare più arcane messaggi a queste lampadine 238 00:13:08,010 --> 00:13:09,700 per dire, accendere e spegnere. 239 00:13:09,700 --> 00:13:11,370 Ma non è tutto così interessante. 240 00:13:11,370 --> 00:13:14,280 Si può dire, accendere rosso, accende verde, accendere blu, 241 00:13:14,280 --> 00:13:15,990 tutti con la stessa lampadina. 242 00:13:15,990 --> 00:13:20,990 E si può anche, con un po 'di più savvy, dire, trasformare se stessi al blu 243 00:13:20,990 --> 00:13:24,710 quando è una giornata uggiosa esterno, per esempio. 244 00:13:24,710 --> 00:13:27,910 Si può effettivamente applicare la patch in API tempo e scoprire 245 00:13:27,910 --> 00:13:32,260 che tempo fa, o il tempo di giorno, o altri tali trigger. 246 00:13:32,260 --> 00:13:35,550 >> Quindi, in realtà, due dei Propri membri dello staff del CS50, 247 00:13:35,550 --> 00:13:38,827 Dan Bradley e Ansel Duff qui, gentilmente procurato 248 00:13:38,827 --> 00:13:40,410 noi un sacco di queste lampadine. 249 00:13:40,410 --> 00:13:42,910 E hanno costruito CS50 di prime lampadine mai binari, 250 00:13:42,910 --> 00:13:46,850 dove siamo rappresentati qui-- con questi giocoso poco magnets-- 251 00:13:46,850 --> 00:13:49,780 i vari segnaposto noi accennato solo un po 'fa. 252 00:13:49,780 --> 00:13:52,572 >> Quindi fin qui è il quelli posto, due, quattro. 253 00:13:52,572 --> 00:13:54,030 E non abbiamo visto più in alto. 254 00:13:54,030 --> 00:13:55,613 Ma, naturalmente, sono potenze di due. 255 00:13:55,613 --> 00:13:59,490 Otto, 16, 32, 64, e 128. 256 00:13:59,490 --> 00:14:03,320 Quindi, se io ora voglio essere un po 'più elaborato che usando questo interruttore vecchia scuola, 257 00:14:03,320 --> 00:14:07,310 Ho qui su questo iPad un super semplice interfaccia 258 00:14:07,310 --> 00:14:10,440 che Dan Bradley, un ex studente e ora insegna compagni, 259 00:14:10,440 --> 00:14:13,510 programmato utilizzando il linguaggio HTML e JavaScript, che 260 00:14:13,510 --> 00:14:15,685 sono markup e programmazione lingue rispettivamente. 261 00:14:15,685 --> 00:14:17,560 E si può probabilmente see-- anche in back-- 262 00:14:17,560 --> 00:14:21,670 c'è un grande vantaggio e un meno grande, più un pulsante per ciascuna di queste lampadine. 263 00:14:21,670 --> 00:14:25,740 E che questo sta per me lasciare non è, per esempio, fare clic sul segno più 264 00:14:25,740 --> 00:14:28,250 e ora rappresentano, di Naturalmente, quale numero? 265 00:14:28,250 --> 00:14:28,750 Uno. 266 00:14:28,750 --> 00:14:30,220 E posso colpirlo di nuovo. 267 00:14:30,220 --> 00:14:31,480 Due. 268 00:14:31,480 --> 00:14:32,800 Tre. 269 00:14:32,800 --> 00:14:33,950 Quattro. 270 00:14:33,950 --> 00:14:35,200 Cinque. 271 00:14:35,200 --> 00:14:36,360 Six. 272 00:14:36,360 --> 00:14:36,880 Sette. 273 00:14:36,880 --> 00:14:40,740 >> E qui ora arriviamo che rollover, ma abbiamo un quarto bit questa volta, 274 00:14:40,740 --> 00:14:42,180 così ora abbiamo otto. 275 00:14:42,180 --> 00:14:44,000 Così abbiamo potuto farlo per un bel po 'di tempo. 276 00:14:44,000 --> 00:14:46,530 Infatti, per inciso, quanto in alto possiamo contare? 277 00:14:46,530 --> 00:14:48,318 Chiunque? 278 00:14:48,318 --> 00:14:49,270 >> PUBBLICO: 255. 279 00:14:49,270 --> 00:14:51,420 >> DAVID J. MALAN: 255, giusto? 280 00:14:51,420 --> 00:14:54,900 Non preoccupatevi troppo della matematica per ora, ma questo è un numero abbastanza decente. 281 00:14:54,900 --> 00:14:59,140 Ma in realtà non vincolata solo quanti pezzi di informazioni, 282 00:14:59,140 --> 00:15:01,760 come una lettera, o una grafica che potremmo rappresentare. 283 00:15:01,760 --> 00:15:02,697 >> Ma non importa, per ora. 284 00:15:02,697 --> 00:15:04,530 Ho intenzione di andare avanti e li spegne. 285 00:15:04,530 --> 00:15:09,670 E se potessi, vorrei chiedere un volontario, il nostro primo volunteer-- 286 00:15:09,670 --> 00:15:11,342 oh, hello-- sul palco. 287 00:15:11,342 --> 00:15:14,050 Il problema è che devi essere confortevole appare, come si chiaramente 288 00:15:14,050 --> 00:15:17,421 sono di fronte a tutti i tuoi compagni di classe, nonché su internet. 289 00:15:17,421 --> 00:15:20,420 E mi permetta di guardare un po 'oltre the-- come circa qui in camicia bianca? 290 00:15:20,420 --> 00:15:20,920 E mano. 291 00:15:20,920 --> 00:15:22,071 Andiamo su. 292 00:15:22,071 --> 00:15:22,820 Come ti chiami? 293 00:15:22,820 --> 00:15:23,760 >> PUBBLICO: Jackie. 294 00:15:23,760 --> 00:15:24,718 >> DAVID J. MALAN: Jackie. 295 00:15:24,718 --> 00:15:25,820 Jackie, vieni su. 296 00:15:25,820 --> 00:15:29,820 Così che cosa c'è anche su questo iPad è un pulsante chiamato Game Mode. 297 00:15:29,820 --> 00:15:32,570 E questa modalità di gioco è andando a mi permetta di ingresso 298 00:15:32,570 --> 00:15:35,780 in anticipo un particolare decimale numero, i numeri che gli esseri umani sono 299 00:15:35,780 --> 00:15:36,760 familiarità con. 300 00:15:36,760 --> 00:15:39,820 E allora sarete sfidati qui per utilizzare i pulsanti 301 00:15:39,820 --> 00:15:42,140 da un top-- per ciascuno di questi bulbs-- 302 00:15:42,140 --> 00:15:45,050 per capire in realtà fuori il modello di lampadine 303 00:15:45,050 --> 00:15:46,970 che rappresenta il numero in questione. 304 00:15:46,970 --> 00:15:47,790 >> E mi dispiace, quello che era ancora il tuo nome? 305 00:15:47,790 --> 00:15:48,250 >> PUBBLICO: Jackie. 306 00:15:48,250 --> 00:15:48,620 >> DAVID J. MALAN: Jackie. 307 00:15:48,620 --> 00:15:48,920 Bene. 308 00:15:48,920 --> 00:15:49,740 Piacere di conoscerti. 309 00:15:49,740 --> 00:15:54,580 >> Quindi lasciami andare avanti e programma per il mondo a vedere il numero 15. 310 00:15:54,580 --> 00:15:56,360 Ci teniamo piccolo in un primo momento qui. 311 00:15:56,360 --> 00:15:58,240 E ho intenzione di entrare in Modalità Gioco. 312 00:15:58,240 --> 00:16:01,160 E ho intenzione di indicare, ci darà il numero 15. 313 00:16:01,160 --> 00:16:01,900 >> Ok. 314 00:16:01,900 --> 00:16:05,510 E ora con tutti watching-- se volete stare forse in questo modo, 315 00:16:05,510 --> 00:16:09,970 perché sarà la linea up-- andare avanti e attivare o disattivare i pulsanti otto lungo la parte superiore 316 00:16:09,970 --> 00:16:12,530 per attivare i bulbi sul o fuori come si vede in forma. 317 00:16:12,530 --> 00:16:13,530 >> PUBBLICO: OK. 318 00:16:13,530 --> 00:16:17,720 >> DAVID J. MALAN: E no barare colpendo oltre 15 volte. 319 00:16:17,720 --> 00:16:19,275 Oh, ci accingiamo a farlo. 320 00:16:19,275 --> 00:16:20,069 >> PUBBLICO: Oh, aspetta. 321 00:16:20,069 --> 00:16:20,610 Mi dispiace tanto. 322 00:16:20,610 --> 00:16:22,660 >> DAVID J. MALAN: È anche possibile attivare le lampadine su individualmente 323 00:16:22,660 --> 00:16:24,076 con ciascuno di questi pulsanti in alto. 324 00:16:24,076 --> 00:16:24,844 PUBBLICO: Oh, OK. 325 00:16:24,844 --> 00:16:27,429 Quindi sarebbe like-- 326 00:16:27,429 --> 00:16:28,220 DAVID J. MALAN: OK. 327 00:16:28,220 --> 00:16:29,100 Così ora abbiamo otto. 328 00:16:29,100 --> 00:16:31,280 Quindi cerchiamo di pausa per il pubblico di impegnarsi qui. 329 00:16:31,280 --> 00:16:34,300 Che numero è Jackie attualmente rappresentano? 330 00:16:34,300 --> 00:16:34,800 11. 331 00:16:34,800 --> 00:16:35,730 Così ci siamo quasi. 332 00:16:35,730 --> 00:16:38,360 333 00:16:38,360 --> 00:16:39,630 E eccellente. 334 00:16:39,630 --> 00:16:41,487 Quindi abbiamo il nostro primo vincitore. 335 00:16:41,487 --> 00:16:42,445 Complimenti. 336 00:16:42,445 --> 00:16:48,200 >> E abbiamo pensato che avremmo avuto alcuni omaggi favolosi. 337 00:16:48,200 --> 00:16:50,860 Se vuoi essere uno di questi Dormitorio qui nel campus, 338 00:16:50,860 --> 00:16:56,126 te si può avere un progetto finale usando ora questa API, grazie a Jackie. 339 00:16:56,126 --> 00:16:57,050 Così now-- 340 00:16:57,050 --> 00:16:58,902 >> [Applausi] 341 00:16:58,902 --> 00:17:01,690 342 00:17:01,690 --> 00:17:04,839 >> --se abbiamo potuto, ancora una tale intorno di questo. 343 00:17:04,839 --> 00:17:07,690 Oh, ora tutti vogliono alcune lampadine. 344 00:17:07,690 --> 00:17:11,790 Per la cosiddetta edizione hacker, stiamo andando a rampa fino a-- oh, 345 00:17:11,790 --> 00:17:12,770 sì, senza impegno. 346 00:17:12,770 --> 00:17:16,010 Penso che si stia arrivando adesso se la tua mano sta andando verso il basso. 347 00:17:16,010 --> 00:17:16,800 Come ti chiami? 348 00:17:16,800 --> 00:17:17,424 >> PUBBLICO: Alex. 349 00:17:17,424 --> 00:17:19,440 DAVID J. MALAN: Alex, vieni qui. 350 00:17:19,440 --> 00:17:26,190 Così per Alex, ci accingiamo a programma in un numero leggermente più grande. 351 00:17:26,190 --> 00:17:27,790 Forse in ordine. 352 00:17:27,790 --> 00:17:29,110 Il numero 50. 353 00:17:29,110 --> 00:17:29,744 >> PUBBLICO: OK. 354 00:17:29,744 --> 00:17:31,660 DAVID J. MALAN: Ma, come I said-- e si potrebbe 355 00:17:31,660 --> 00:17:33,580 voglio stare qui così che i pulsanti allineati 356 00:17:33,580 --> 00:17:37,115 come si expect-- ma ho fatto chiamare questo l'edizione di hacker. 357 00:17:37,115 --> 00:17:47,125 So-- buona fortuna! 358 00:17:47,125 --> 00:17:48,416 >> [Risate] 359 00:17:48,416 --> 00:17:58,570 360 00:17:58,570 --> 00:18:02,050 >> Sarete in grado di trasformare li fuori se you-- OK. 361 00:18:02,050 --> 00:18:02,880 Eccellente. 362 00:18:02,880 --> 00:18:03,675 Meraviglioso. 363 00:18:03,675 --> 00:18:04,341 Complimenti. 364 00:18:04,341 --> 00:18:08,730 >> [Applausi] 365 00:18:08,730 --> 00:18:10,355 Suppongo che dovrei pagare. 366 00:18:10,355 --> 00:18:11,830 Congratulazioni a Alex pure. 367 00:18:11,830 --> 00:18:12,330 Ok. 368 00:18:12,330 --> 00:18:15,550 >> Così il takeaway finale ecco si spera, francamente, 369 00:18:15,550 --> 00:18:18,109 il simplicity-- il semplicità con cui 370 00:18:18,109 --> 00:18:20,650 è possibile ottenere qualche bella luce bulbi, apparentemente in [incomprensibile]. 371 00:18:20,650 --> 00:18:23,000 Ma essi rappresentano, in ultima analisi, le stesse idee 372 00:18:23,000 --> 00:18:26,310 con cui noi esseri umani siamo già fin troppo familiare. 373 00:18:26,310 --> 00:18:28,660 Così che cosa potrebbe essere il prossimo passo sia nella progressione 374 00:18:28,660 --> 00:18:30,920 di cercare di fare qualcosa interessante con i dati 375 00:18:30,920 --> 00:18:34,950 e rappresentano gli ingressi che non sono solo numeri ma sono forse lettere o più? 376 00:18:34,950 --> 00:18:37,820 >> Beh, si scopre che il mondo dei computer, per molti anni, 377 00:18:37,820 --> 00:18:43,300 semplicemente adottato un arbitrario, ma un standard costante che mappa i numeri 378 00:18:43,300 --> 00:18:44,610 a lettere dell'alfabeto. 379 00:18:44,610 --> 00:18:47,120 Ad esempio, qui è un estratto da tale mappatura. 380 00:18:47,120 --> 00:18:48,350 Si chiama Ascii. 381 00:18:48,350 --> 00:18:53,220 A-S-C-I-I. E questo è semplicemente un tabella che associa letters-- maiuscolo 382 00:18:53,220 --> 00:18:56,600 in questo case-- in numeri decimali. 383 00:18:56,600 --> 00:18:57,890 >> Ma qual è l'implicazione? 384 00:18:57,890 --> 00:19:01,090 Beh, se si vuole realmente rappresentare qualcosa di simile a una mail o un testo 385 00:19:01,090 --> 00:19:03,310 su una pagina web, è ovviamente vogliono mostrare 386 00:19:03,310 --> 00:19:06,100 le lettere umane del alfabeto, non numeri. 387 00:19:06,100 --> 00:19:09,140 Quindi, a seconda della contesto del programma 388 00:19:09,140 --> 00:19:12,600 che un utente sta utilizzando, se è un browser web o client di posta elettronica, 389 00:19:12,600 --> 00:19:16,090 numeri possono certamente essere interpretati come lettere. 390 00:19:16,090 --> 00:19:20,290 Vale a dire, i modelli di bit può facilmente essere interpretato come lettere. 391 00:19:20,290 --> 00:19:24,700 >> E così quello che possiamo avere è la lettera A essere 392 00:19:24,700 --> 00:19:28,410 rappresentato come 65, B essere rappresentato come 66. 393 00:19:28,410 --> 00:19:30,900 Quindi, se abbiamo un super parola breve, come ciao, 394 00:19:30,900 --> 00:19:35,740 ciò che un computer sarebbe in ultima analisi, negozio in decimale, ma in realtà in binario, 395 00:19:35,740 --> 00:19:40,070 utilizzando una sequenza di bit, sfruttando un po 'di energia elettrica, in qualche modo, 396 00:19:40,070 --> 00:19:44,010 sarebbero i due numeri 72 e 73. 397 00:19:44,010 --> 00:19:46,780 >> Ma il modello di bit che rappresenta quei valori. 398 00:19:46,780 --> 00:19:49,820 Quindi questi sono allora come possiamo rappresentare i nostri ingressi e uscite. 399 00:19:49,820 --> 00:19:52,630 E basti dire, possiamo fare rappresentazioni più complesse 400 00:19:52,630 --> 00:19:56,450 in ultima analisi, con cose come grafica, video, musica e altro ancora 401 00:19:56,450 --> 00:19:58,190 come vedremo in seguito questo termine. 402 00:19:58,190 --> 00:20:00,630 >> In modo che lascia solo allora algoritmi, questi insiemi 403 00:20:00,630 --> 00:20:03,490 di istruzioni con cui stiamo risolvere i problemi reali. 404 00:20:03,490 --> 00:20:05,820 Stiamo passando in input ad algoritmi. 405 00:20:05,820 --> 00:20:09,630 E questi algoritmi producono Uscite, uscite spera corretti 406 00:20:09,630 --> 00:20:14,160 e, si spera, anche, efficiente raccolte uscite. 407 00:20:14,160 --> 00:20:16,890 In altre parole, è una cosa di implementare qualcosa correttamente. 408 00:20:16,890 --> 00:20:20,790 E 'un'altra cosa da implementare qualcosa di bene o in modo efficiente. 409 00:20:20,790 --> 00:20:23,690 >> Per esempio, una dimostrazione che siamo affezionati nel corso 410 00:20:23,690 --> 00:20:24,460 è questo uno. 411 00:20:24,460 --> 00:20:26,345 Ma queste cose sono sempre sempre più difficile da trovare. 412 00:20:26,345 --> 00:20:28,930 Ma questa è davvero una vecchia scuola rubrica, all'interno della quale 413 00:20:28,930 --> 00:20:32,580 sono più di 1.000 pagine di nomi e numeri di telefono. 414 00:20:32,580 --> 00:20:34,830 E se volevo guardare in alto qualcuno in questa rubrica, 415 00:20:34,830 --> 00:20:38,640 Potrei semplicemente fare un algoritmo molto ingenuo. 416 00:20:38,640 --> 00:20:42,150 Potrei aprire la prima pagina, e Potrei cominciare a cercare, ad esempio, qualcuno 417 00:20:42,150 --> 00:20:43,130 di nome Mike Smith. 418 00:20:43,130 --> 00:20:46,160 E se lui non è il primo pagina, vado avanti per la seconda, 419 00:20:46,160 --> 00:20:49,120 e poi alla terza, e poi al quarto, e così via, 420 00:20:49,120 --> 00:20:51,430 fino a quando ho finalmente trovato Mike Smith. 421 00:20:51,430 --> 00:20:53,010 >> Ora è che l'algoritmo giusto? 422 00:20:53,010 --> 00:20:53,896 >> PUBBLICO: Sì. 423 00:20:53,896 --> 00:20:54,248 >> DAVID J. MALAN: Già. 424 00:20:54,248 --> 00:20:56,039 Se lui è lì, io alla fine lo troverete. 425 00:20:56,039 --> 00:20:58,820 Ma non è probabilmente molto efficiente, non certo veloce, 426 00:20:58,820 --> 00:21:01,200 perché, mio ​​Dio, perché sono sprecare il mio tempo flipping 427 00:21:01,200 --> 00:21:04,500 attraverso tutte queste pagine quando potevo certamente farlo fisicamente più veloce? 428 00:21:04,500 --> 00:21:08,210 >> Ebbene, una leggera ottimizzazione, in modo da parlare, potrebbe non essere una pagina alla volta, 429 00:21:08,210 --> 00:21:11,610 ma due, quattro, sei, otto, 10. 430 00:21:11,610 --> 00:21:12,725 Ancora corretta? 431 00:21:12,725 --> 00:21:14,030 >> PUBBLICO: No. 432 00:21:14,030 --> 00:21:17,040 >> DAVID J. MALAN: Quindi no, se io per esempio saltare su Mike Smith. 433 00:21:17,040 --> 00:21:20,530 Ma finché io indietro pedale una pagina, se lo Overshoot, 434 00:21:20,530 --> 00:21:25,240 forse potremmo correggere ciò che altrimenti potrebbe essere un Gotcha. 435 00:21:25,240 --> 00:21:26,020 >> Ma è meglio? 436 00:21:26,020 --> 00:21:27,469 È più veloce? 437 00:21:27,469 --> 00:21:28,010 Voglio dire, sì. 438 00:21:28,010 --> 00:21:30,950 E 'letteralmente due volte più veloce se faccio due pagine alla volta. 439 00:21:30,950 --> 00:21:35,720 Quindi, se ho inizialmente avuto 1.000 pagine, ora devo solo a capovolgere 500 volte, 440 00:21:35,720 --> 00:21:39,429 insufficiente, le 1.000 pagine per ottenere potenzialmente nel caso peggiore 441 00:21:39,429 --> 00:21:41,220 alla fine del telefono libro, dove qualcuno 442 00:21:41,220 --> 00:21:44,380 come Mike Smith o qualcuno con un nome più tardi potrebbe in realtà essere. 443 00:21:44,380 --> 00:21:46,540 >> Ma, naturalmente, ci gli esseri umani certamente non sono 444 00:21:46,540 --> 00:21:49,250 intenzione di fare questo, certamente non a questo punto della nostra vita. 445 00:21:49,250 --> 00:21:51,454 Che cosa è un ragionevole umana probabile intenzione di fare? 446 00:21:51,454 --> 00:21:52,870 PUBBLICO: Proseguire dritto per The9 di S. 447 00:21:52,870 --> 00:21:53,860 DAVID J. MALAN: Vai direttamente alla S di? 448 00:21:53,860 --> 00:21:55,563 Come vado dritto al S di? 449 00:21:55,563 --> 00:21:57,342 >> PUBBLICO: Rip a metà. 450 00:21:57,342 --> 00:21:59,050 DAVID J. MALAN: Beh, non c'è nessuna marcatura. 451 00:21:59,050 --> 00:22:02,116 Quindi, sì, se ci sono stati davvero un'etichetta o una linguetta adesiva per S, 452 00:22:02,116 --> 00:22:03,240 dovremmo saltare proprio lì. 453 00:22:03,240 --> 00:22:05,420 Ma è abbastanza innocuo. 454 00:22:05,420 --> 00:22:08,480 Quindi il meglio che posso fare è di circa alla sezione S o forse grossolanamente 455 00:22:08,480 --> 00:22:09,650 nel mezzo. 456 00:22:09,650 --> 00:22:12,110 Ma il takeaway chiave now-- e l'intuizione 457 00:22:12,110 --> 00:22:14,430 che hai preso per concesso per anni probably-- 458 00:22:14,430 --> 00:22:17,103 è che ciò che si fa ora sapere di questo problema? 459 00:22:17,103 --> 00:22:19,320 >> PUBBLICO: [incomprensibile] 460 00:22:19,320 --> 00:22:22,290 >> DAVID J. MALAN: Mike Smith è sicuramente non in questa metà del problema 461 00:22:22,290 --> 00:22:25,600 perché Smith arriva dopo la metà che è grosso modo la sezione M, 462 00:22:25,600 --> 00:22:26,510 sembra essere. 463 00:22:26,510 --> 00:22:30,340 Così come forse avrete già visto a Visitas, possiamo ora letteralmente 464 00:22:30,340 --> 00:22:31,737 strappare questo problema a metà. 465 00:22:31,737 --> 00:22:32,320 PUBBLICO: Woo! 466 00:22:32,320 --> 00:22:33,690 DAVID J. MALAN: E ' sempre più facile e più facile. 467 00:22:33,690 --> 00:22:34,666 [Applausi] 468 00:22:34,666 --> 00:22:36,618 Ci si va. 469 00:22:36,618 --> 00:22:39,060 [Risate] 470 00:22:39,060 --> 00:22:41,870 E ora fondamentalmente avere lo stesso problema, 471 00:22:41,870 --> 00:22:43,866 ma è letteralmente a metà così grande. 472 00:22:43,866 --> 00:22:45,240 Sto ancora cercando di Mike Smith. 473 00:22:45,240 --> 00:22:47,950 E oserei dire, posso ancora cercarlo nello stesso modo, 474 00:22:47,950 --> 00:22:51,200 suddividere il problema in metà ancora una volta, strappando il problema di nuovo 475 00:22:51,200 --> 00:22:54,140 in mezzo, che ora mi lascia con un problema un quarto della dimensione, 476 00:22:54,140 --> 00:22:58,710 gettare drammaticamente che mezzo di distanza, e ripetere più e più volte questo processo 477 00:22:58,710 --> 00:23:01,150 e di nuovo, guardando verso il basso in ogni punto di vedere 478 00:23:01,150 --> 00:23:03,400 se Mike Smith è su la pagina in questione. 479 00:23:03,400 --> 00:23:06,190 >> Ora, se faccio questo diritto, in ultima analisi, mi trovo 480 00:23:06,190 --> 00:23:11,085 con una sola pagina in cui Mike Smith è se è davvero nella rubrica. 481 00:23:11,085 --> 00:23:13,510 Certo, potevo non chiamare di nuovo Mike. 482 00:23:13,510 --> 00:23:18,800 Ma il punto qui è che se abbiamo iniziato con 1.000 pagine, il mio primo algoritmo, 483 00:23:18,800 --> 00:23:21,620 capovolgere la pagina, forse 1.000 times-- decisamente meno perché è 484 00:23:21,620 --> 00:23:26,430 un nome S e non un nome di Z, ma come ben 1.000 pagine potenzialmente. 485 00:23:26,430 --> 00:23:27,590 >> Secondo algoritmo, meglio. 486 00:23:27,590 --> 00:23:28,480 500 pagine. 487 00:23:28,480 --> 00:23:31,230 In terzo algoritmo, però, quanti passi è vero 488 00:23:31,230 --> 00:23:35,520 prendere per dividere una pagina 1.000 rubrica a metà del genere? 489 00:23:35,520 --> 00:23:37,000 10, prendere o lasciare. 490 00:23:37,000 --> 00:23:40,770 Così solo da sfogliare che rubrica, immersioni e conquistando, 491 00:23:40,770 --> 00:23:46,130 per così dire, 10 volte, farò la mia strada verso il basso per una sola singola pagina. 492 00:23:46,130 --> 00:23:48,880 >> E così possiamo cogliere questa intuizione ora un po 'graficamente 493 00:23:48,880 --> 00:23:51,320 se si considera questo super semplice grafico. 494 00:23:51,320 --> 00:23:55,470 Siamo sulla x-asse o orizzontale l'asse, è la dimensione del mio problema, 495 00:23:55,470 --> 00:23:57,100 il numero di pagine nella rubrica. 496 00:23:57,100 --> 00:23:59,040 E informatici generalmente desidera chiamare 497 00:23:59,040 --> 00:24:02,180 la dimensione di un problema n, dove n è solo una variabile che 498 00:24:02,180 --> 00:24:04,310 represents-- in questo case-- numero di pagine. 499 00:24:04,310 --> 00:24:07,412 >> L'asse y verticale, o, qui è sarà il tempo per risolvere, 500 00:24:07,412 --> 00:24:09,870 forse il numero di giri di pagina, forse il numero di secondi 501 00:24:09,870 --> 00:24:11,960 o minuti, a prescindere l'unità di misura è. 502 00:24:11,960 --> 00:24:14,337 E così questa linea rossa rappresenta il primo algoritmo, 503 00:24:14,337 --> 00:24:16,670 perché c'è un 1-1 rapporto tra il numero 504 00:24:16,670 --> 00:24:18,880 di pagine e la quantità di tempo che ci vuole. 505 00:24:18,880 --> 00:24:22,240 >> Se Verizon raddoppia il numero di pagine nella rubrica il prossimo anno, 506 00:24:22,240 --> 00:24:24,590 la mia corsa tempo-- l' tempo necessario per l'esecuzione 507 00:24:24,590 --> 00:24:27,610 che prima algorithm-- raddoppia nel caso peggiore. 508 00:24:27,610 --> 00:24:30,690 Ma il secondo algoritmo, dove sto girando da due, 509 00:24:30,690 --> 00:24:33,650 richiede meno tempo per un determinato problema di portata. 510 00:24:33,650 --> 00:24:36,090 Quindi, se ho questo molti Avviso pagine qui-- 511 00:24:36,090 --> 00:24:38,870 che la linea gialla suggerisce meno tempo per risolvere. 512 00:24:38,870 --> 00:24:42,490 E infatti, rappresenta, diremo, n più di due. 513 00:24:42,490 --> 00:24:47,717 >> Ma che cosa è la forma del terzo e la curva finale andando a guardare come? 514 00:24:47,717 --> 00:24:50,800 Sì, è davvero andando a look-- I non so cosa stavi per dire. 515 00:24:50,800 --> 00:24:52,300 Ma vediamo cosa stavi per dire. 516 00:24:52,300 --> 00:24:53,280 >> PUBBLICO: Come quella. 517 00:24:53,280 --> 00:24:57,060 >> DAVID J. MALAN: Sta andando a guardare come questo, un exactly-- slope-- logaritmica 518 00:24:57,060 --> 00:24:59,770 per cui si dispone di questa curiosa pendenza. 519 00:24:59,770 --> 00:25:01,235 Non è più una linea retta. 520 00:25:01,235 --> 00:25:05,000 E cosa c'è di interessante a tale proposito è che anche se il grafico sta tagliata, 521 00:25:05,000 --> 00:25:07,790 si può estrapolare in importa che quella linea verde non è 522 00:25:07,790 --> 00:25:10,060 andando ad aumentare altezza più di tanto 523 00:25:10,060 --> 00:25:13,500 come si procede ulteriormente stabilisce che asse orizzontale. 524 00:25:13,500 --> 00:25:15,890 >> Infatti, Verizon, per esempio, potrebbe raddoppiare 525 00:25:15,890 --> 00:25:19,100 il numero di pagine del telefono Prenota tra quest'anno e il prossimo anno 526 00:25:19,100 --> 00:25:22,140 da 1.000 a 2.000 pagine, ma niente di grave. 527 00:25:22,140 --> 00:25:24,960 Con questa terza e ultima, c'è un algoritmo intuitivo 528 00:25:24,960 --> 00:25:26,209 di dividere e conquistare. 529 00:25:26,209 --> 00:25:29,000 Sta andando a prendere me come molti altri passi il prossimo anno di trovare qualcuno 530 00:25:29,000 --> 00:25:29,700 come Mike Smith? 531 00:25:29,700 --> 00:25:30,560 >> PUBBLICO: One. 532 00:25:30,560 --> 00:25:31,230 >> DAVID J. MALAN: C'è solo una. 533 00:25:31,230 --> 00:25:34,430 E possono quadruplicare esso, è andando a prendere me solo due passi più 534 00:25:34,430 --> 00:25:35,210 e così via. 535 00:25:35,210 --> 00:25:38,730 E quindi questo è testamento proprio come alcuni design accurato 536 00:25:38,730 --> 00:25:42,437 e qualche apprezzamento per quello che gli ingressi sono in grado di fare ancora meglio. 537 00:25:42,437 --> 00:25:44,270 Ora stiamo barando un po 'nel senso 538 00:25:44,270 --> 00:25:46,350 che stiamo sfruttando un presupposto. 539 00:25:46,350 --> 00:25:48,500 Qual è la mia ipotesi la nostra rubrica 540 00:25:48,500 --> 00:25:52,720 che mi ha permesso di dividere e conquistare in questo modo intuitivo e ancora corretta? 541 00:25:52,720 --> 00:25:53,705 >> PUBBLICO: [incomprensibile] 542 00:25:53,705 --> 00:25:54,580 DAVID J. MALAN: Già. 543 00:25:54,580 --> 00:25:55,440 Così è stato ordinato. 544 00:25:55,440 --> 00:25:57,392 E 'stato ordinato alfabeticamente in base l'azienda rubrica. 545 00:25:57,392 --> 00:26:00,100 Se fosse in ordine casuale, che sarebbe un inferno di una rubrica, 546 00:26:00,100 --> 00:26:02,850 ma di certo non sarebbe si presta per l'algoritmo 547 00:26:02,850 --> 00:26:05,950 Ho usato, perché si farebbe mai appena capita di fronte Mike Smith 548 00:26:05,950 --> 00:26:09,210 se hai tenuto dividere in metà in questo modo per caso. 549 00:26:09,210 --> 00:26:12,060 >> Quindi cerchiamo di formalizzare ora ciò che è chiaramente intuitiva. 550 00:26:12,060 --> 00:26:13,950 Quindi qualcosa chiamato pseudocodice è dove ci 551 00:26:13,950 --> 00:26:15,780 iniziare alcuni dei nostri problemi iniziali. 552 00:26:15,780 --> 00:26:20,410 E questo è un modo generico di descrivere un algoritmo o un programma per computer, 553 00:26:20,410 --> 00:26:24,150 non usare C o C ++, o Java, o di qualunque lingua specifica, 554 00:26:24,150 --> 00:26:27,430 ma usando solo inglese, con che qualsiasi essere umano potrebbe essere familiare. 555 00:26:27,430 --> 00:26:31,220 >> E potremmo scrivere lo pseudocodice per questo problema come segue. 556 00:26:31,220 --> 00:26:33,520 Fase uno, prendere l'elenco telefonico. 557 00:26:33,520 --> 00:26:35,840 Fase due, aperta al centro della rubrica. 558 00:26:35,840 --> 00:26:37,730 Fase tre, guardare i nomi. 559 00:26:37,730 --> 00:26:40,630 Fase quattro, se Smith è tra names-- 560 00:26:40,630 --> 00:26:42,960 >> E ora questo è un costrutto interessante. 561 00:26:42,960 --> 00:26:44,290 E 'un punto di decisione. 562 00:26:44,290 --> 00:26:47,920 E 'un bivio, se si si, un ramo, per così dire. 563 00:26:47,920 --> 00:26:50,810 Quindi ho intenzione di rientrare solo per convenzione step-- 564 00:26:50,810 --> 00:26:53,950 non five-- che deve per esempio, io chiamerò Mike. 565 00:26:53,950 --> 00:26:57,290 Quindi questo rientro, totalmente convenzione umana arbitraria, ma è 566 00:26:57,290 --> 00:27:01,160 semplicemente lo scopo di trasmettere semanticamente che se Smith è tra i nomi, 567 00:27:01,160 --> 00:27:03,310 poi dovrei chiamare Mike. 568 00:27:03,310 --> 00:27:06,630 >> Nel frattempo, al punto sei, preavviso che il rientro è andato. 569 00:27:06,630 --> 00:27:10,980 Quindi il resto è l'altra forcella in strada, l'altra strada potrei percorrere. 570 00:27:10,980 --> 00:27:14,130 Quindi, altrimenti, se Smith è in precedenza nel libro, che cosa è 571 00:27:14,130 --> 00:27:16,964 il mio prossimo passo probabilmente ad essere qui? 572 00:27:16,964 --> 00:27:18,380 PUBBLICO: Si va a sinistra. 573 00:27:18,380 --> 00:27:21,004 DAVID J. MALAN: Sì, in modo da andare a la metà sinistra della rubrica. 574 00:27:21,004 --> 00:27:24,140 Buttare via la metà destra se Smith è in precedenza nel libro. 575 00:27:24,140 --> 00:27:27,140 Così aperto a metà la metà sinistra del libro. 576 00:27:27,140 --> 00:27:30,240 >> E poi passo otto, andare alla riga tre. 577 00:27:30,240 --> 00:27:34,520 E questo è un curioso ciclo sono inducendo, una ricorsione per così dire. 578 00:27:34,520 --> 00:27:35,990 Ma più su che in futuro. 579 00:27:35,990 --> 00:27:39,590 >> Sto usando il mio stesso algoritmo, il mio stesso pseudocodice, 580 00:27:39,590 --> 00:27:43,020 per risolvere nuovamente lo stesso problema perché l'unica cosa che è cambiata 581 00:27:43,020 --> 00:27:46,550 è la dimensione del problema, non il mio obiettivo, e non la persona 582 00:27:46,550 --> 00:27:47,340 Sto cercando. 583 00:27:47,340 --> 00:27:51,610 Così posso riutilizzare l'algoritmo che ho già definito. 584 00:27:51,610 --> 00:27:53,580 >> Altrimenti se Smith è tardi in book-- si potrebbe 585 00:27:53,580 --> 00:27:56,200 guess-- aperto a metà la metà destra del libro. 586 00:27:56,200 --> 00:27:58,350 E ancora, andare alla riga tre. 587 00:27:58,350 --> 00:28:01,480 Else-- qual è la riga finale in questo programma sta per essere? 588 00:28:01,480 --> 00:28:03,580 Se lui non è tra i nomi sulla pagina sono 589 00:28:03,580 --> 00:28:06,870 su, se non è prima in il libro, e non più tardi di 590 00:28:06,870 --> 00:28:09,899 nel libro, che ne so io è vero su Mike Smith adesso? 591 00:28:09,899 --> 00:28:11,190 PUBBLICO: Non è nel libro. 592 00:28:11,190 --> 00:28:12,731 DAVID J. MALAN: Non è nel libro. 593 00:28:12,731 --> 00:28:16,040 Quindi il meglio che posso fare è solo rinunciare e fermare questo programma. 594 00:28:16,040 --> 00:28:16,540 Bene. 595 00:28:16,540 --> 00:28:20,350 Quindi a questo punto, diamo un rapido giro di alcuni di ciò che attende. 596 00:28:20,350 --> 00:28:23,620 E in effetti, sto entrato qui da un numero di personale CS50. 597 00:28:23,620 --> 00:28:26,940 Se queste persone potrebbero tutti unirvi a me qui sul palco. 598 00:28:26,940 --> 00:28:28,900 >> [Applausi] 599 00:28:28,900 --> 00:28:35,280 600 00:28:35,280 --> 00:28:38,170 >> Intendiamoci, questo è solo un sottoinsieme di personale CS50, 601 00:28:38,170 --> 00:28:42,380 dal momento che ogni anno abbiamo quasi 100 personale membri in ruoli di assistenti del corso, 602 00:28:42,380 --> 00:28:44,410 insegnamento compagni, e altro ancora. 603 00:28:44,410 --> 00:28:45,700 Andiamo su. 604 00:28:45,700 --> 00:28:48,820 Così si uniranno a noi qui goffamente per un attimo 605 00:28:48,820 --> 00:28:54,230 come diamo un rapido giro di ciò che si dovrebbe aspettare qui in corso. 606 00:28:54,230 --> 00:28:59,640 >> Quindi, prima di tutto, abbiamo SAT / UNS come opzione di classificazione in corso. 607 00:28:59,640 --> 00:29:03,180 Questo è inteso deliberatamente essere un quale opzione 608 00:29:03,180 --> 00:29:05,570 se siete un po 'a disagio di essere in corso, 609 00:29:05,570 --> 00:29:09,390 e non temete failure-- anche se francamente fallimento significa danneggiare il vostro GPA, 610 00:29:09,390 --> 00:29:13,180 ottenendo un B e non un A-- che è precisamente ciò che, certamente per un gateway 611 00:29:13,180 --> 00:29:15,750 Naturalmente come CS50 e altri corsi introduttivi, 612 00:29:15,750 --> 00:29:17,540 questa opzione di classificazione ha lo scopo di consentire. 613 00:29:17,540 --> 00:29:19,930 >> Io incoraggio di tutto cuore allievi-- soprattutto 614 00:29:19,930 --> 00:29:23,090 se il fence-- per avviare la Naturalmente SAT / UNS, anche rimangono SAT / UNS. 615 00:29:23,090 --> 00:29:27,310 Ma si può certamente passare a una lettera grado dal quinto Lunedi nel periodo. 616 00:29:27,310 --> 00:29:31,560 >> Francamente, quando ho era una matricola nel 1995, 617 00:29:31,560 --> 00:29:34,630 Io stesso non ho nemmeno preso CS50 perché non ho avuto il coraggio 618 00:29:34,630 --> 00:29:36,540 al punto realmente piede in classe. 619 00:29:36,540 --> 00:29:40,020 Sembrava un dominio troppo sconosciuto a me e davvero solo 620 00:29:40,020 --> 00:29:43,080 per i miei amici, francamente, che era stato di programmazione 621 00:29:43,080 --> 00:29:45,570 dato che erano sei o forse 10 anni di età. 622 00:29:45,570 --> 00:29:48,640 Ed è stato solo perché ero in grado di prendere CS50 nel mio giorno 623 00:29:48,640 --> 00:29:52,720 nella versione equivalente di SAT / passaggio UNS-- / fallire di nuovo in giorno-- 624 00:29:52,720 --> 00:29:53,850 che anche ho preso 50. 625 00:29:53,850 --> 00:29:57,440 E un modo o nell'altro, sono di nuovo qui con voi oggi. 626 00:29:57,440 --> 00:30:00,690 >> Ora, nel frattempo che cosa altro si dovrebbe tenere a mente su 50 627 00:30:00,690 --> 00:30:01,910 è contemporanea iscrizione. 628 00:30:01,910 --> 00:30:03,785 Contrariamente alle voci che si potrebbe avere sentito, 629 00:30:03,785 --> 00:30:07,650 è possibile, infatti, contemporaneamente iscriversi in CS50 e un'altra classe che 630 00:30:07,650 --> 00:30:12,150 incontra nello stesso o qualche sovrapposizione tempo come le lezioni di CS50 proprio qui. 631 00:30:12,150 --> 00:30:16,420 Vedere il programma delle indicazioni di della sua osservanza. 632 00:30:16,420 --> 00:30:19,540 >> Lezioni frontali, nel frattempo, contrariamente a ciò che è ufficialmente nel catalogo, 633 00:30:19,540 --> 00:30:22,060 generalmente solo incontrare solo per un'ora. 634 00:30:22,060 --> 00:30:24,240 A volte si può correre un po 'lungo. 635 00:30:24,240 --> 00:30:26,800 Ma tenere a mente che il obiettivo in lezioni di CS50 636 00:30:26,800 --> 00:30:28,980 è quello di fornire con una panoramica concettuale, 637 00:30:28,980 --> 00:30:31,830 si spera alcune dimostrazioni, forse anche alcuni omaggi, 638 00:30:31,830 --> 00:30:34,390 di ciò che attende per la settimana che segue. 639 00:30:34,390 --> 00:30:37,730 >> E così in lezioni, esploreremo questi argomenti ed esempi insieme, 640 00:30:37,730 --> 00:30:41,420 portando gli studenti sul palco, e personale sul palco il più spesso possibile, 641 00:30:41,420 --> 00:30:43,740 solo per un paio di ore ogni settimana. 642 00:30:43,740 --> 00:30:47,435 Sezioni, nel frattempo, saranno offerto da queste persone qui-- molti 643 00:30:47,435 --> 00:30:50,060 di insegnare loro compagni, alcuni di loro volontà ovviamente assistants-- 644 00:30:50,060 --> 00:30:51,160 accadere settimanale. 645 00:30:51,160 --> 00:30:52,940 >> E ciò che è fondamentale per mantenere in mente è che noi 646 00:30:52,940 --> 00:30:55,920 non have-- diversamente First Notti, la musica class-- 647 00:30:55,920 --> 00:30:59,220 diverse tracce di sezioni per studenti meno confortevoli, più 648 00:30:59,220 --> 00:31:01,150 confortevole, e da qualche parte nel mezzo. 649 00:31:01,150 --> 00:31:03,559 E, francamente, sai se sei meno confortevole. 650 00:31:03,559 --> 00:31:05,600 E probabilmente sapete se sei più comodo. 651 00:31:05,600 --> 00:31:09,920 E se non siete veramente sicuri, siete per definizione, una via di mezzo. 652 00:31:09,920 --> 00:31:12,850 Così, quando arriva il momento di sezione in una settimana o giù di lì, per il programma, 653 00:31:12,850 --> 00:31:14,070 ti chiederemo questa domanda. 654 00:31:14,070 --> 00:31:16,890 E si può auto-selezione basata sul proprio livello di comfort 655 00:31:16,890 --> 00:31:22,220 e stare con allievi-- essere con verde dots-- simile a livello di comfort per voi. 656 00:31:22,220 --> 00:31:25,710 >> Nel frattempo, abbiamo un problema imposta, che in ultima analisi 657 00:31:25,710 --> 00:31:28,310 definire la tua esperienza in questo corso. 658 00:31:28,310 --> 00:31:30,370 Sono offerti in genere in più edizioni. 659 00:31:30,370 --> 00:31:34,150 Una edizione standard che ci aspettiamo più ogni studente nel corso di affrontare 660 00:31:34,150 --> 00:31:37,900 ma anche un cosiddetto edizione pirata che non offre alcuna forma di credito extra 661 00:31:37,900 --> 00:31:41,980 a titolo definitivo, ma in realtà i diritti di vanteria a dire che si è tentato e affrontato 662 00:31:41,980 --> 00:31:45,250 edizioni di hacker del corso che avvicinarsi al materiale simile 663 00:31:45,250 --> 00:31:47,370 ma da un angolo più sofisticato. 664 00:31:47,370 --> 00:31:49,480 >> Cosa offriamo per la edizione standard, per, 665 00:31:49,480 --> 00:31:51,420 ancora una volta, una maggioranza super- di studenti, non sono 666 00:31:51,420 --> 00:31:54,060 solo walk-through, che sono video guidati dal personale del corso 667 00:31:54,060 --> 00:31:57,840 che veramente si cammina attraverso la i problemi del corso ed eventuale progettazione 668 00:31:57,840 --> 00:31:58,910 implementazioni. 669 00:31:58,910 --> 00:32:01,434 E anche noi, dopo la infatti, offrono postmortem, 670 00:32:01,434 --> 00:32:03,350 per cui se ti stai chiedendo come si potrebbe avere 671 00:32:03,350 --> 00:32:05,930 o avrebbe dovuto risolvere alcuni problema, il personale docente 672 00:32:05,930 --> 00:32:08,640 vi guiderà attraverso quelli video. 673 00:32:08,640 --> 00:32:14,350 >> Nel frattempo, cosa attende troppo sono cinque giorni di ritardo e il fatto 674 00:32:14,350 --> 00:32:16,680 che noi cadere l' problema più basso punteggio set. 675 00:32:16,680 --> 00:32:20,370 Noi certamente apprezziamo che in cambio per il carico di lavoro che 50 si aspetta 676 00:32:20,370 --> 00:32:24,020 di te, la vita si mette di mezzo a volte, se non cinque volte. 677 00:32:24,020 --> 00:32:26,150 E così questo offrirà un po 'di flessibilità, 678 00:32:26,150 --> 00:32:29,400 estendere la scadenza da, diciamo, un Giovedi a mezzogiorno per un Venerdì a mezzogiorno. 679 00:32:29,400 --> 00:32:33,150 Vedere il programma per la dettagli di implementazione della stessa. 680 00:32:33,150 --> 00:32:34,702 >> Ora che cosa attende ora? 681 00:32:34,702 --> 00:32:36,660 Ed è che si verificano solo a me ora quanto tempo 682 00:32:36,660 --> 00:32:38,333 Sto avendo voi ragazzi stare qui sul palco. 683 00:32:38,333 --> 00:32:39,060 >> [Risate] 684 00:32:39,060 --> 00:32:41,867 >> DAVID J. MALAN: Ma ci arriveremo a il finale culminante in breve tempo. 685 00:32:41,867 --> 00:32:43,700 Così che cosa aspetta in termini dei set di problema? 686 00:32:43,700 --> 00:32:47,099 Beh, forse un teaser di ciò che tutti noi ha fatto l'anno scorso con i suoi predecessori. 687 00:32:47,099 --> 00:32:49,140 Nel primo set problema l'anno scorso, abbiamo introdotto 688 00:32:49,140 --> 00:32:51,630 Scratch, una grafica linguaggio di programmazione che 689 00:32:51,630 --> 00:32:54,570 permette di programmare letteralmente da trascinare e rilasciare i pezzi del puzzle, 690 00:32:54,570 --> 00:32:57,220 come questi, che sono ricorda i costrutti 691 00:32:57,220 --> 00:32:59,260 vedrà una sola settimana di conseguenza, quando si passa 692 00:32:59,260 --> 00:33:01,870 ad un più tradizionale lingua, noto come C. 693 00:33:01,870 --> 00:33:03,930 >> L'anno scorso si è proceduto a questo problema insieme, 694 00:33:03,930 --> 00:33:06,720 coinvolgendo per la crittografia, il rimescolamento delle informazioni 695 00:33:06,720 --> 00:33:10,410 per evitare che si governative o amici ' occhi che non si vuole vedere. 696 00:33:10,410 --> 00:33:12,540 Codificata in qui è un messaggio che presto si 697 00:33:12,540 --> 00:33:15,740 sarà in grado di decifrare o de-scramble. 698 00:33:15,740 --> 00:33:17,960 >> Breakout è stato un problema stabilito lo scorso anno, in cui 699 00:33:17,960 --> 00:33:21,530 si utilizzano questi nuovi programmazione trovati capacità di applicare concretamente 700 00:33:21,530 --> 00:33:24,840 un gioco wherein-- come si può ricordare da childhood-- 701 00:33:24,840 --> 00:33:28,040 l'obiettivo era quello di colpire il mattoni che si trovano in cima alla schermata 702 00:33:28,040 --> 00:33:30,190 qui, accumulando un segnare lungo la strada, 703 00:33:30,190 --> 00:33:35,460 e attuare i propri algoritmi con cui questa soluzione definitiva 704 00:33:35,460 --> 00:33:37,357 ti permette di giocare il gioco. 705 00:33:37,357 --> 00:33:39,440 Nel frattempo, nel corso della semestre, vi daremo 706 00:33:39,440 --> 00:33:43,470 un dizionario di 143.091 parole in inglese. 707 00:33:43,470 --> 00:33:46,300 E sarete sfidati scrivere un programma che 708 00:33:46,300 --> 00:33:50,260 incantesimo assegni, documenti, da caricamento che molte parole in memoria 709 00:33:50,260 --> 00:33:52,300 modo più efficiente possibile. 710 00:33:52,300 --> 00:33:54,240 Generalmente si pitting contro i tuoi compagni di classe 711 00:33:54,240 --> 00:33:56,610 se si opta in un po 'di sfida in classifica 712 00:33:56,610 --> 00:34:00,090 per vedere chi può utilizzare il minor numero secondi di tempo di esecuzione, 713 00:34:00,090 --> 00:34:03,550 e il numero minor di megabyte di memoria, 714 00:34:03,550 --> 00:34:08,659 e in realtà la messa a punto dei programmi ad essere incredibilmente efficiente delle risorse non 715 00:34:08,659 --> 00:34:09,820 solo tempo. 716 00:34:09,820 --> 00:34:13,239 >> L'anno scorso, anche, abbiamo guardato alla fine del semestre in programmazione web. 717 00:34:13,239 --> 00:34:16,230 E infatti, lo faremo di nuovo questo anno con più set di problemi, 718 00:34:16,230 --> 00:34:20,290 vi introduce alle tecniche e la mentalità con la quale è possibile applicare 719 00:34:20,290 --> 00:34:23,489 queste competenze di programmazione a siti web, siti web dinamici, 720 00:34:23,489 --> 00:34:26,639 siti web che effettivamente risolvono problemi e comportarsi in modo diverso 721 00:34:26,639 --> 00:34:30,620 e non sono semplicemente statico siti con informazioni statiche. 722 00:34:30,620 --> 00:34:32,854 >> Il progetto finale in ultima analisi, definirà, però, 723 00:34:32,854 --> 00:34:34,770 il culmine del corso per gli studenti, in cui 724 00:34:34,770 --> 00:34:37,228 sarete sfidati a realizzare qualsiasi cosa di interesse 725 00:34:37,228 --> 00:34:40,590 a voi, a patto che in qualche modo attinge le lezioni del corso. 726 00:34:40,590 --> 00:34:42,930 >> E come avete visto nel video all'inizio, 727 00:34:42,930 --> 00:34:47,340 concluderemo il semestre con la CS50 Hackathon, che se, non familiare, 728 00:34:47,340 --> 00:34:51,420 avrà inizio alle 07:00 una notte e terminerà alle 7:00 del mattino successivo. 729 00:34:51,420 --> 00:34:53,614 Intorno 09:00, faremo ordine in prima cena. 730 00:34:53,614 --> 00:34:55,489 Intorno 01:00, faremo ordine in seconda cena. 731 00:34:55,489 --> 00:34:57,490 E se siete ancora in piedi alle 5:00 del mattino, abbiamo 732 00:34:57,490 --> 00:35:00,320 sarà bus navetta vi IHOP per la prima colazione. 733 00:35:00,320 --> 00:35:04,980 >> La Fiera CS50, nel frattempo, è un evento di cui 2.000 più docenti, studenti, 734 00:35:04,980 --> 00:35:07,850 e personale di tutta campus sarà venire a vedere le vostre realizzazioni 735 00:35:07,850 --> 00:35:10,150 nel corso e la finale progetti e realizzazioni 736 00:35:10,150 --> 00:35:14,960 che si crea sul vostro laptop, desktop, o lampadine forse anche leggeri. 737 00:35:14,960 --> 00:35:17,340 >> Nel frattempo, le ore di ufficio e la struttura di supporto. 738 00:35:17,340 --> 00:35:20,480 E ora sarebbe stato un occasione migliore per portare tutto. 739 00:35:20,480 --> 00:35:24,310 >> Orario di ricevimento si svolgeranno quattro notti una settimana per più ore ogni notte 740 00:35:24,310 --> 00:35:27,710 con in genere da 20 a 30 del Il personale del corso di turno in una sola volta 741 00:35:27,710 --> 00:35:31,240 di fornire con intima one-on-one opportunità di sostegno 742 00:35:31,240 --> 00:35:33,790 con insiemi di problemi del corso. 743 00:35:33,790 --> 00:35:36,120 Tutoring troppo sarà disponibili, in particolare 744 00:35:36,120 --> 00:35:39,630 per gli studenti meno comfortable-- o Oserei dire almeno comfortable-- per i quali 745 00:35:39,630 --> 00:35:41,869 orario di ufficio non lo sono più ambiente educativo 746 00:35:41,869 --> 00:35:43,660 e non sono certamente il più senza stress. 747 00:35:43,660 --> 00:35:47,430 Soprattutto quando le scadenze sono pressanti, ti in modo proattivo l'associazione voi stessi 748 00:35:47,430 --> 00:35:51,440 con un membro del personale che operi con su qualche programma normale come le vostre esigenze 749 00:35:51,440 --> 00:35:53,850 e il loro programma permette. 750 00:35:53,850 --> 00:35:55,260 >> E il personale. 751 00:35:55,260 --> 00:36:01,020 Permettetemi di presentarvi Davon, Rob, e Gabriel, le teste di quest'anno. 752 00:36:01,020 --> 00:36:02,370 Se ognuno vuole say-- 753 00:36:02,370 --> 00:36:03,349 >> [Applausi] 754 00:36:03,349 --> 00:36:03,849 Parola --a. 755 00:36:03,849 --> 00:36:05,328 [Applausi] 756 00:36:05,328 --> 00:36:10,270 757 00:36:10,270 --> 00:36:13,220 Davon qui è il direttore del corso, che 758 00:36:13,220 --> 00:36:15,730 significa nel suo ruolo a tempo pieno aiuta con l'esecuzione 759 00:36:15,730 --> 00:36:18,424 e logistica di CS50. 760 00:36:18,424 --> 00:36:19,340 Davon: Sì, ciao, ragazzi. 761 00:36:19,340 --> 00:36:20,965 Vedrete un sacco di me in orari d'ufficio. 762 00:36:20,965 --> 00:36:22,110 Ti insegnerò sezioni. 763 00:36:22,110 --> 00:36:25,150 E se si spara e-mail in anticipo, Io probabilmente essere la risposta. 764 00:36:25,150 --> 00:36:27,670 Allora ci vediamo un sacco di voi tutto il semestre. 765 00:36:27,670 --> 00:36:29,890 E benvenuti a CS50. 766 00:36:29,890 --> 00:36:38,330 >> DAVID J. MALAN: Ed ora Gabriel, che stesso era solo una matricola lo scorso anno, 767 00:36:38,330 --> 00:36:41,820 ma da un paio di anni ha stato di funzionamento la sua versione di CS50 768 00:36:41,820 --> 00:36:44,660 in Brasile, per cui ha scaricato tutti content-- del corso 769 00:36:44,660 --> 00:36:46,890 che è essere chiaramente girato e messo online-- 770 00:36:46,890 --> 00:36:51,480 in modo che potesse tradurre in Portoghese e poi insegnare più di 100 771 00:36:51,480 --> 00:36:54,610 dei suoi compagni di classe sul corso di un paio di anni, 772 00:36:54,610 --> 00:36:57,650 insegnamento nella sua lingua nativa curriculum del corso. 773 00:36:57,650 --> 00:36:58,964 >> GABRIEL: Ciao. 774 00:36:58,964 --> 00:37:00,912 >> [Applausi] 775 00:37:00,912 --> 00:37:06,669 776 00:37:06,669 --> 00:37:07,710 GABRIEL: Ciao, sono Gabriele. 777 00:37:07,710 --> 00:37:09,340 Sono il TF capo del corso. 778 00:37:09,340 --> 00:37:10,780 E spero vi innamorerete CS50. 779 00:37:10,780 --> 00:37:12,830 Questo è CS50. 780 00:37:12,830 --> 00:37:14,697 >> DAVID J. MALAN: Ora per Rob. 781 00:37:14,697 --> 00:37:15,780 Oh, vuoi introduzione? 782 00:37:15,780 --> 00:37:16,696 >> ROB: No, non lo so. 783 00:37:16,696 --> 00:37:18,225 [Risate] 784 00:37:18,225 --> 00:37:19,475 DAVID J. MALAN: E Rob Boden. 785 00:37:19,475 --> 00:37:22,300 [Risate] 786 00:37:22,300 --> 00:37:23,800 ROB: Ciao, sono Rob. 787 00:37:23,800 --> 00:37:27,220 Questo è il mio quinto anno coinvolti con il corso. 788 00:37:27,220 --> 00:37:29,220 Ogni anno, è solo un sempre meglio di classe, 789 00:37:29,220 --> 00:37:31,550 così voi ragazzi sono chiaramente sta per essere impressionante. 790 00:37:31,550 --> 00:37:33,181 Spero che tutti voi avete divertimento con esso. 791 00:37:33,181 --> 00:37:34,430 Ho intenzione di divertirsi con essa. 792 00:37:34,430 --> 00:37:36,670 Così vediamo in giro. 793 00:37:36,670 --> 00:37:38,445 >> DAVID J. MALAN: E il tempo non permetterà noi-- 794 00:37:38,445 --> 00:37:39,670 >> [Applausi] 795 00:37:39,670 --> 00:37:41,661 >> Il tempo non ci permetterà di introdurre tutti 796 00:37:41,661 --> 00:37:44,660 sul palco e tutti i loro colleghi che stanno acquistando classi di oggi. 797 00:37:44,660 --> 00:37:47,390 Ma mi permetta di introdurre Belinda e CS50 Puzzle 798 00:37:47,390 --> 00:37:49,550 Giorno, che attende questo prossimo Sabato, che 799 00:37:49,550 --> 00:37:51,800 è il primo dei grandi eventi scala del corso. 800 00:37:51,800 --> 00:37:54,300 >> Questo uno in particolare significato a martellare a casa il punto 801 00:37:54,300 --> 00:37:57,580 che l'informatica è in ultima analisi, non sulla programmazione, ma piuttosto 802 00:37:57,580 --> 00:37:59,280 sul problem solving, più in generale. 803 00:37:59,280 --> 00:38:01,450 E Puzzle Day, come avrete v, vi porterà 804 00:38:01,450 --> 00:38:04,207 ei tuoi compagni di classe together-- speriamo che questo Sabato. 805 00:38:04,207 --> 00:38:04,961 >> BELINDA: OK. 806 00:38:04,961 --> 00:38:05,750 Ciao, ragazzi. 807 00:38:05,750 --> 00:38:06,740 Quindi grazie. 808 00:38:06,740 --> 00:38:10,120 Così come il nostro capitano illustre Detto questo, il mio nome Belinda. 809 00:38:10,120 --> 00:38:12,100 Sono al secondo anno a Quincy House. 810 00:38:12,100 --> 00:38:15,730 >> Io, come voi ragazzi, presi CS50 l'anno scorso, ci è piaciuto molto. 811 00:38:15,730 --> 00:38:17,960 Ho un debole per voi ragazzi della terza fila. 812 00:38:17,960 --> 00:38:21,384 E sono orgoglioso di dire, ora sono impegnata in una relazione 813 00:38:21,384 --> 00:38:22,300 con CS50 [incomprensibile]. 814 00:38:22,300 --> 00:38:22,799 Ok. 815 00:38:22,799 --> 00:38:26,140 Quella era la mia versione zoppo di una barzelletta. 816 00:38:26,140 --> 00:38:28,320 >> In ogni caso, in modo da andare avanti, volevo solo invitare 817 00:38:28,320 --> 00:38:31,439 voi ragazzi tutti alla i-lab, o orticaria HBS. 818 00:38:31,439 --> 00:38:33,730 Stiamo per essere avere Puzzle Giorno 12:00-03:00. 819 00:38:33,730 --> 00:38:37,680 Ed è una grande opportunità per voi ragazzi per incontrare i tuoi compagni di amici CS, 820 00:38:37,680 --> 00:38:42,780 risolvere alcuni enigmi non-CS, come il capitano citato, e anche mangiare qualche cibo gratuito, 821 00:38:42,780 --> 00:38:46,910 guadagnare alcuni premi impressionante, come carte regalo, $ 75 per persona, 822 00:38:46,910 --> 00:38:48,400 e also-- che cosa era? 823 00:38:48,400 --> 00:38:49,540 Wii U o qualcosa del genere? 824 00:38:49,540 --> 00:38:50,333 Wii U? 825 00:38:50,333 --> 00:38:51,040 Sì. 826 00:38:51,040 --> 00:38:52,330 Per la nostra lotteria. 827 00:38:52,330 --> 00:38:52,830 Impressionante. 828 00:38:52,830 --> 00:38:54,310 Quindi mi atterrò in giro dopo le lezioni. 829 00:38:54,310 --> 00:38:56,770 E se voi ragazzi avete qualsiasi domande, fatemi sapere. 830 00:38:56,770 --> 00:38:59,980 >> DAVID J. MALAN: E vedrai, al di là questo non c'è niente da fare oggi. 831 00:38:59,980 --> 00:39:01,920 Il primo problema impostato uscirà Venerdì. 832 00:39:01,920 --> 00:39:05,420 Ma per portarci a casa oggi, mi piacerebbe introdurrà specificamente per una più 833 00:39:05,420 --> 00:39:09,080 membro dello staff, Colton Ogden qui, le cui mani sono ora 834 00:39:09,080 --> 00:39:12,250 protetto sopra di voi con questo controller MIDI 835 00:39:12,250 --> 00:39:15,170 a martellare a casa il punto più che la scienza del computer, anche, 836 00:39:15,170 --> 00:39:19,130 ha applicabilità ben oltre l'ingegneria e STEM e l'informatica in sé, 837 00:39:19,130 --> 00:39:22,890 estendere anche a tali domini come la musica. 838 00:39:22,890 --> 00:39:30,590 >> Colton ha gentilmente offered-- ho pensato uno di loro stava per fissare la messa a fuoco. 839 00:39:30,590 --> 00:39:34,400 Andrea, se potessimo evocare fuoco qui solo per un attimo. 840 00:39:34,400 --> 00:39:36,780 >> Cosa Colton ha fatto in anticipo è il programma 841 00:39:36,780 --> 00:39:40,345 questo dispositivo, questo pad di pulsanti che vedete nella foto qui, 842 00:39:40,345 --> 00:39:42,470 come controller MIDI, in base al quale ciascuno di questi pulsanti 843 00:39:42,470 --> 00:39:47,080 è collegato a una particolare nota musicale o un suono, più in generale una registrazione, 844 00:39:47,080 --> 00:39:50,445 tale che giocando modelli di questi bottoni, molto simile pattern di bit, 845 00:39:50,445 --> 00:39:52,620 può rappresentare altro concetti di livello superiore. 846 00:39:52,620 --> 00:39:56,750 Riuscirà alla fine per portarci a casa oggi? 847 00:39:56,750 --> 00:39:59,540 Senza ulteriori indugi, se potremmo abbassare le luci, 848 00:39:59,540 --> 00:40:03,145 e accendere lo schermo dietro Colton. 849 00:40:03,145 --> 00:40:03,865 >> PUBBLICO: Woo! 850 00:40:03,865 --> 00:40:06,090 >> DAVID J. MALAN: Questo è CS50. 851 00:40:06,090 --> 00:40:10,518 >> [GIOCO MUSICA] 852 00:40:10,518 --> 00:42:46,018 853 00:42:46,018 --> 00:42:49,420 >> [Applausi] 854 00:42:49,420 --> 00:42:54,766 855 00:42:54,766 --> 00:42:56,450 >> Questo è tutto per CS50. 856 00:42:56,450 --> 00:42:57,950 Ci vediamo Venerdì. 857 00:42:57,950 --> 00:42:59,890 Alcuni torta vi aspetta nel transetto. 858 00:42:59,890 --> 00:43:04,046 859 00:43:04,046 --> 00:43:08,850 >> [GIOCO MUSICA] 860 00:43:08,850 --> 00:45:49,227