[RUMORE DI SOTTOFONDO] Funziona? PATRICK Rebeschini: Si può iniziare. OK. Grande. Iniziamo. Così è il mio più grande piacere di dare il benvenuto a tutti voi qui oggi per la prima lezione di, beh, Introduzione di Informatica e Programmazione. Conosciuto anche come CS50 o ben, CPSC 100, ufficialmente qui a Yale. Quindi non potremmo essere più eccitati di dare il benvenuto a tutti voi qui. Il mio nome è Patrick Rebeschini. Sono l'istruttore capo per la classe. Sto qui che rappresenta un gruppo di circa 60 membri del personale che funzionerà con voi per tutto il semestre. Questo numero è quasi 60 di noi. Eppure, lungo la straordinaria livello degli impegni che abbiamo messo in questo classe, rende CS50 la classe alla Yale University che offre il massimo livello di sostegno a tutti voi. E non potremmo essere più orgogliosi di offrendo questa classe di nuovo qui. In realtà, come si vedrà presto l'esperienza, CS50 è molto più di una classe. Si tratta di una comunità. E si farà parte presto di questa comunità. Questo è il secondo anno che Yale sta offrendo questa classe. Stiamo costruendo sull'estrema successo dello scorso anno, in cui per la prima volta, qui in questa università, assistente di apprendimento di laurea sono state adottate nelle aule. Tutto è iniziato con questa classe l'anno scorso. Quindi, come si sa, la classe viene insegnato in collaborazione con l'Università di Harvard. Per insegnare questo corso siamo relying-- possiamo contare sulla grande esperienza di David Malan e il team di Harvard. Così David è stato l'insegnamento CS50 per bene, 10 anni. E ogni anno è stato spingendo i confini e migliorando l'esperienza scolastica. Anche in questo caso, non potremmo essere più felici di continuare questa collaborazione con loro. Infatti, uno degli la maggior parte delle parti interessanti, Dirò di correre questa classe ora, sia a Harvard e qui a Yale, è la davvero incredibile fertilizzazione incrociata di idee, volto a migliorare la esperienza di apprendimento a tutti voi. Così come risultato di questo ampio collaborazione tra i due università, CS50 è orgogliosa di annunciare la nuova versione di quest'anno con cambiamenti notevoli. David sarà tutto dirci su di loro ora. Quindi please-- questo essere Detto questo, si prega di unirsi a me e benvenuto per dare un grande applauso ad accogliere David e team di Harvard qui a Yale. [APPLAUSI] DAVID MALAN: Grazie. Grazie. Questo è CS50, Harvard University di e l'introduzione della Yale University per l'intellettuale aziende di informatica e l'arte della programmazione. E ciò significa che questo corso in ultima analisi, è di risolvere i problemi. Infatti molti di voi potrebbe sono usciti dal liceo o hanno trascorso gli ultimi due anni chiedendosi che cosa alcuni dei tuoi amici ha fatto l'anno scorso o in altre classi. Eppure, la realtà è, non importa quello che fare alla fine della giornata in questa classe, che sta per essere circa la soluzione dei problemi. E come tale, forse prendere qualche rassicurazione nel fatto che il 73% degli studenti che prendere questa classe, sia qui a Yale e ad Harvard, non hanno mai preso una classe CS prima. Quindi, se siete seduti qui a il pubblico oggi chiedendo il motivo per cui si è seduti qui tra il pubblico di oggi, o forse semplicemente seguito insieme ad alcuni amici, o forse sei stato un poco curioso di sapere cosa informatica e programmazione, realizzare che la maggior parte dei tuoi compagni di classe a sinistra ea destra di voi sono molto nello stesso demografico. E in effetti, se guardiamo le statistiche scorso anno all'interno del corpo studentesco di CS50, sia qui e ad Harvard, il 58% degli studenti si descrivono come meno confortevole. 9% è più comodo. E poi il 33% è da qualche parte nel mezzo. E non c'è una definizione formale di quali mezzi questi secchi. È una sorta di sai che sei meno confortevole se siete. Ti senti un po 'a disagio con forse essere in classe. Tu non sei del tutto sicuro se un computer classe di scienze è in definitiva per voi, e rendersi conto che si è in ottima compagnia. E infatti la classificazione, e la valutazione, e il feedback, e tutto questo struttura di supporto nella classe è in definitiva molto individualizzato. Più che la maggior parte qualsiasi altra classe di progettazione. E in effetti, ciò che in definitiva le questioni in questa classe non è tanto dove si finisce up rispetto agli altri, ma dove, in settimana 11 o l'ultimo, e relativa a te stesso in settimana 0 qui il nostro primo. Che cosa vuol dire? Ebbene, questo mezzo di quelli 73% di studenti l'anno scorso che non aveva mai preso una classe CS prima, dalla inizio del semestre hanno sono stati dilettarsi in una lingua chiamato Scratch, che noi stessi vedrà qui oggi. E per la fine del semestre aveva sono andati attraverso questa intera lista di sfide. Partendo con un linguaggio chiamato c. L'implementazione, ciò che è a prima vista, che va per essere un po 'una sfida per alcuni, ma abbastanza gratificante una volta che si ottenere Super Mario rimbalzo su e giù una piramide implementato, anche se, con un solo qualcosa chiamato ASCII art. L'implementazione dello scorso anno di successo quali gli studenti l'anno scorso poi ha fatto dopo che è stato attuare il loro proprio cifrario di Cesare e cifrario Vigenère. Così algoritmi di crittografia con la quale si potrebbe informazioni scramble e poi decodificare informazioni per inviare messaggi segreti. Il gioco del 15. Se vi ricordate da infanzia o qualche favore di partito, che giochino di plastica in cui ci si sposta i numeri su, giù, sinistra e destra per cercare di farli in ordine, in realtà attuare quel gioco e risolvendo la logica necessaria lì. E poi abbiamo sguazzato in forensics scorso anno. Quindi entro la metà del semestre, gli studenti che non avevano mai utilizzato le loro tastiere a tal fine prima, sono stati la scrittura di software recuperare, per così dire, JPEG o fotografie che abbiamo avuto accidentalmente cancellato da una fotocamera digitale scheda di memoria dalla fotocamera. Recupero di messaggi segreti dall'interno di un'immagine bitmap, e altri tali tipi di grafica. Abbiamo poi la transizione a dare tutta la classe di un dizionario. Solo un file di testo molto grande con 150.000 parole inglesi. E tutti è stata contestata in qualche modo di leggere, per così dire, quelle parole in memoria. Nella memoria del computer. E poi rispondere alle domande della forma, è questa una parola? Si tratta di una parola? Si tratta di una parola? In realtà solo attuazione un correttore ortografico. E poi sfidandosi altro con un grande board-- una classifica per vedere chi potrebbe usare la minor quantità di memoria, nel minor tempo per in realtà il controllo ortografico documenti di grandi dimensioni. Siamo passati da allora a attuazione di quelli proprio server web. Quindi non fare le pagine web in lingue come HTML e CSS, se si ha familiarità. Ma in realtà attuazione il server che ascolta su internet per le richieste da parte di browser e poi rispondere a tali richieste. Poi attuazione nostra e-commercio come sito web, dove gli studenti possono comprare e vendere azioni. Disegno in tempo quasi reale quotazioni di borsa da Yahoo Finanza. E consentendo agli studenti di vedere come il loro portafoglio sviluppa. E poi finalmente un mash up di Google News e Google Mappe in cui gli studenti dal termine entro la fine termini ha avuto la possibilità di cliccare, e tondo, e di ricerca su una mappa di Google. E poi vedi tutti gli articoli di notizie che sono prossimale a quelle particolari aree. Così veramente va da zero a 60. E lungo la strada con quello che avevamo l'anno scorso chiamato, le aggiunte di hacker. Che aumentano la barra oltre per quelli di voi che potrebbero benissimo avere una buona quantità di esperienza essere in quel 9% di più comodo. Così si rendono conto che non c'è un soffitto molto alto anche all'interno di quelli sfide per gli studenti proveniente da un background diverso. Perché alla fine il giorno, siamo in ultima analisi, focalizzata semplicemente su questo. Ma che cosa fa questo Cioè, la soluzione dei problemi? Quindi cerchiamo di proporre che abbiamo distilliamo in questo modo. Quindi, la soluzione dei problemi è davvero proprio questo tipo di immagine. Così hai input per qualche problema, qualcosa che si vuole realmente risolvere. L'obiettivo è quello di ottenere uscite, una soluzione a questo problema. E poi in mezzo è ciò che noi chiameremo una scatola nera. Non necessariamente conosce o addirittura cura cosa c'è dentro quella scatola nera. Tutto quello che sai è che quando si alimentano di ingresso in esso, si spera ottenere l'uscita o una soluzione da esso. E mentre Oggi vedremo sia a ingressi e uscite, faremo a lungo termine, e il corso di tutto il semestre, concentrarsi su ciò che c'è dentro quella scatola. E in essa si trovano qualcosa chiamato algoritmi. Istruzioni passo passo per effettivamente risolvere alcuni problemi. Ma che cosa è un esempio di alcuni input? Quindi forse una cosa semplice al All'inizio di ogni anno scolastico, qualcuno potrebbe desiderare di prendere presenze. Così si potrebbe fare uno, due, tre, quattro, cinque, sei, e come faccio a tenere traccia di tali informazioni. Potrei andare appena uno, due, tre, quattro, cinque, sei. E basta usare una sorta di singole cifre. Oppure avrei potuto effettivamente registrare questo termine un po 'di più. E come faccio a rappresentare tutti gli esseri umani in questa stanza? Beh, potrei fare qualcosa di simile, OK. Vedo una sola persona. Tutto ok. Vedo un'altra persona, un terzo, e così via. Ma nessuno conta persone piace questo. Quindi, letteralmente, la maggior parte di noi se siamo anche andando a disegnare qualcosa a tutti, sono probabilmente andando a andare uno due tre quattro, forse ottenere un po 'di fantasia, cinque, sei, sette, otto, nove, dieci e così via. E questo è in realtà un sistema chiamato unario. Uno, come Uno che implica uno, dove si basta avere una lettera dell'alfabeto. Hai appena avuto questo carattere cancelletto. E io, per l'efficienza, appena disegnato questi segni hash, in ultima analisi, come linee rette. Ma ho potuto li ho disegnato come figure bastoncino. Dove rappresentare una persona, un ingresso, Ho solo disegnare un bastone figura o un cancelletto. Ma questo non è tutto ciò che espressiva. Se tutto quello che ho è questi hash marchi, lasciate figure stilizzate da solo, come potrei rappresentare qualcosa come il numero 15? O 15 persone nella stanza? Avrei potuto fare qualcosa di simile 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. Semplicemente non scala molto bene. Come gli ingressi diventano grandi, abbiamo bisogno di un sistema migliore di questo. E si scopre che il sistema che usano i computer non è poi così diversa da quello che io e te sappiamo. In realtà, la maggior parte delle persone in questa stanza, anche se siete tra quelli meno comodo, non necessariamente sapere come il vostro Mac o PC funziona davvero, probabilmente avete almeno sentito parlare, che sotto il cofano sono 0 e 1 di. Il cosiddetto sistema binario. Così in effetti, i computer sono più che solo riferimenti che servono nel loro vocabolario, ma non tanto di un vocabolario come noi esseri umani. In effetti, noi esseri umani non usano binario. Bi significa 2, 0 e 1. Ma decimale, deca che significa 10, da 0 a 9. Così abbiamo molto più espressivo capacità nel nostro mondo umano normale. Ma direi che questi sistemi, binario e decimale, e tutto tra e oltre, sono in realtà tutti molto familiari. Ad esempio, si consideri questo esempio qui, 123. Quindi questo è davvero, naturalmente, un numero che conosciamo come 123. Ma tutto quello che ho appena disegnato è stato solo questo modello di simboli, glifi per così dire. Una specie di forme sul bordo di gesso. Ma perché abbiamo immediatamente e intuitivamente cogliere questo come 123? Beh, se si erano come me in grado di scuola, probabilmente imparato che questo è il Colonna 1s, questa è la colonna 10s, questa è la colonna 100s. E perché è così utile? Beh, è ​​semplice aritmetica voi ora fare per ottenere da un modello di simboli ad un certo numero si capisce intuitivamente. È ciò che, 100 volte 1, e poi 10 volte 2, e 1 volte 3, che ovviamente è solo 100, e questo è 20, e questo è tre. E così, se aggiungiamo quelli together-- ah. Così sta il tipo di ragionamento dietro perché questo insieme di simboli significa qualcosa di reale e numerico. Ebbene, i computer fanno la stessa identica cosa, ma hanno solo possono contare più in alto uno. Mentre ero in grado di contare alto come tre. E infatti, se ho continuato ad andare potevo arrivare fino a nove in questo sistema. I computer hanno solo zeri e quelli di loro alfabeto. Che cosa vuol dire? Beh, significa solo che se un computer vuole rappresentare, dire il numero 0, magari usando tre characters-- tre lettere dell'alfabeto così dire, che è come un computer rappresenta 0. Quindi non tutto ciò che spaventoso finora. E 'esattamente quello che noi umani avrebbero fatto. E infatti, la maggior parte di noi solo farebbe ignorare gli zeri iniziali in ogni caso. Un computer, se vuole per memorizzare il numero 1, risulta sta per fare questo. E un computer per memorizzare il numero 2 non è andando a fare il sistema unario, che ho accennato in precedenza. In realtà è intenzione di fare questo. E questo è probabilmente dove il modello inizia a diventare meno evidente per la maggior parte delle persone. Questo è 2, questo è 3. Curiosamente, questo è ora 4. E ora lo fa davvero sembrano essere forse criptico, ma non è se si considera ciò binario realmente significa. Significa che avete due le lettere del vostro alfabeto. Così due caratteri possibili per ogni segnaposto. Quindi, questo significa davvero stiamo andando avere bisogno di un posto 1s, o il luogo 2s, un luogo 4s e poi 8, e 16, 32 e 64. E qual è la differenza c'è? Come questi sono 1, 2, 4, 8, 16, 32, 64. E prima che avessimo 110, 100.000, 10.000. Qual è la somiglianza c'è? E qual è il motivo? Sì. Studente: potenze di 2 invece di potenze di 10. DAVID MALAN: Sì. Potenze di 2, invece di potenze di 10. E così, se volevo continuare andare, 8, 16 e così forth-- ma ora se si dispone di questo tipo di indizio, ora il sistema binario è in realtà abbastanza semplice. Perché questo modello di 0 di nel mondo dei computer 0? Bene, perché si tratta di 4 volte 0, 2 volte 0, 1 volte 0 e si ottiene 0. Perché questo è il numero 1? Stesso ragionamento, ma ora abbiamo avere un 1 nella colonna 1. Perché è questo 2? Abbiamo un 1 nella colonna 2s. E come allora mi rappresento dire, il numero 7 in binario? Di 'più forte. STUDENTE: Tre 1s. DAVID MALAN: Tre 1s. Quindi 1, 1, 1, perché abbiamo solo bisogno 4 più 2 più 1 mi dà 7. Tutto ok. Quindi da lì come facciamo rappresentare 8 con 3 segnaposto? Sì. STUDENTE: 1, 0, 0, 0. DAVID MALAN: Sì 1, 0, 0, 0. Eppure forse, mi tipo di tecnicamente bisogno per aggiungere un altro segnaposto alla scheda. Se voglio andare bene che ho davvero bisogno di fare qualcosa di simile. Così ho effettivamente bisogno di usare ora la colonna 8s, e va bene. Ma la cosa curiosa di computing è che che sta andando a costare qualcosa. Hai bisogno di più RAM nel computer ora. Hai bisogno di più memoria perché avete bisogno di qualcosa fisico per memorizzare che ulteriore bit, per così dire. cifre binarie. E infatti tutto quello che è successo qui, come il sistema decimale, se continuare ad aggiungere numeri sempre più in alto e su, andiamo a 5-6 a 7-8 è come portare il 1, letteralmente. E poi tutto il resto risale fino a zero. Ma come possiamo realmente rappresentiamo queste cose fisicamente in un computer? Ebbene, alla fine della giornata, l'unica ingresso fisico che va nel mio computer qui è il cavo di alimentazione, in modo da elettricità o elettroni dalla parete. E allora come posso ottenere da qualcosa fisico come quello di realtà che rappresenta un'idea come questo, invece. Ebbene, che cosa potevamo fare? Potremmo considerare che, va bene, forse se l'elettricità fluisce Ho potuto conservare e tenere su di esso. E se sto tenendo su certa energia elettrica, che è solo andando a arbitrariamente rappresentare un 1. E se staccare la spina e non c'è niente, si sa che è solo andando per rappresentare arbitrariamente un 0. Quindi, se qualcosa c'è, 1. Se non c'è, 0. Oppure si può fare questo un po 'più visiva. Qui è un 0. Non c'è niente di interessante in corso su circa la parte posteriore del mio cellulare. Ma se mi permetto un po ' po 'di energia elettrica di fluire, anche se è un po 'brillante qui, la torcia è andato via. Così sto immagazzinare una carica e ergo, questo telefono rappresenta oggi un 1. Così 0 1. Quindi, con 1 iPhone quanto in alto posso contare utilizzo di questo tipo di approccio? Voglio dire a 1. Non è tutto ciò che convincente. Allora, cosa altro potevamo fare? Beh vediamo, è chiunque su loro telefono in questo momento che ho potuto prendere in prestito? Chiunque abbia un telefono con una torcia costruito in? Posso prendere in prestito? Non ho bisogno che venga sbloccato. Tutto ok. Grazie. Mi permetta di prendere in prestito questo. Tutto ok. Quindi, se ora mi scorrere verso l'alto e qui, cosa sto rappresentando ora? Sì. Quindi è un tre perché questo è nella Colonna 1s, questo è nella colonna 2s. Quindi 1 + 2 fa 3. E poi se cerchiamo di ottenere davvero creative-- Oh, grazie. Molto preventiva. Tutto ok. Ora ho tre iPhone. Tutto ok. E ora questo-- non lo farò fare qualsiasi oltre questo. Che cosa sono io rappresento ora? A soli sette. Ma avevo bisogno fisicamente più memoria in questo caso. Ma questo è tutto quello che è. Si può pensare a quello che sta succedendo on-- grazie you-- all'interno del telefono come solo essere un interruttore che è essere acceso e spento. E se hai mai sentito parlare il transistor di parola. Oppure, se hai mai sentito il commercializzazione parlano Intel Inside, che sta parlando al tipo di hardware che è all'interno del vostro computer. Intel rende CPU, unità centrali di elaborazione, che sono come il cervello all'interno del computer. E queste CPU e cose che sono connessi di avere un sacco di minuscoli interruttori. Milioni, miliardi di interruttori che può essere sia acceso o spento. Quindi i computer, per fortuna, come i nostri Mac e PC, può contare modo superiore 7 o 8 perché hanno modo più di tre o quattro bit. Modo più dell'equivalente del tre torce elettriche che abbiamo appena avuto. Ma ora questo inizia a diventare abbastanza interessante rapidamente. Se ora voglio essere effettivamente in grado di fare qualcosa di più interessante, Voglio essere in grado di saltare a qualcosa di simile. Così ASCII, non è davvero un utile Acronimo, ma American Standard Code per scambio di informazioni. Significa solo, alcuni anni fa noi esseri umani hanno deciso, Sai cosa, vogliamo essere in grado di fare più con i computer che semplici numeri. Noi non vogliamo che solo essere calcolatrici costosi, vorremmo essere in grado di fare cose come elaborazione testi, anche se molto semplice. Più tardi abbiamo avuto e-mail e altri tali mezzi di comunicazione. E così il mondo ha deciso alcuni anni fa secondo questo sistema ASCII, sai cosa? In alcuni tipi di programmi di ogni volta che si vedere l'equivalente del numero 65, come il modello di bit. E potremmo fare il matematica qui sul bordo. Il modello di bit che rappresentano 65. Non pensare ad esso come 65 in decimale. Pensate a come arbitrariamente, ma a livello globale, costantemente come la capitale UN. E poi il mondo deciso, sai una cosa? Prendiamo un altro modello di bit. E se vedremo mai il il numero 66, diciamo solo supporre che questo è il capitale B. Fast forward al H e io, se si vede 72 o 73, che dovrebbe essere H e un I, rispettivamente. E così finché tutta mondo è d'accordo su questo. In modo che quando si riceve una e-mail, o si otterrebbe un file su una chiavetta USB, o qualcosa di simile quando che-- si vede che modello di bit, si sa che dovrebbe essere questo lettera o qualche altra lettera. Ma è specifico contesto, a destra. Un programma di email potrebbe interpretare queste cose come personaggi, ma una calcolatrice grafica o calcolatrice potrebbe rappresentare o interpretare queste cose, naturalmente, come lettere. Quindi, con questo detto, poco revisione rapida. Questa è forse una di tre caratteri e-mail che è stato inviato a me. Sotto il cofano è tutto in 0 e 1, ma noi non ci interessa. Stiamo per iniziare a astratto sopra i 0 e 1 per le lettere. E se vedo un modello di 0 e 1 che davvero rappresentare 72, suggerimento, suggerimento, 73, e poi 33, qual è il messaggio? STUDENTE: [INAUDIBLE] DAVID MALAN: Quindi, se si pensa indietro solo un momento fa, HI era il messaggio che stavo cercando di comunicare qui perché H è 72, Mi è 73, e ora 33-- non avrebbe necessariamente conoscere in anticipo, ma si scopre se effettivamente vedere di più del grafico e il sistema che l'umanità concordato anni fa, è solo un punto esclamativo. E infatti, vi è un modello di simboli e numeri per ogni personaggio che si potrebbe avere sulla tastiera. Tutto ok. Diamo astratto ulteriormente. Se non vogliamo avere solo cose come numeri e lettere, in realtà vogliamo implementare la grafica. Beh, se hai mai sentito l'acronimo RGB. È un po 'datato al momento, ma è ancora un po 'lì. RGB è di colore rosso, verde, blu. Ed è solo un sistema di di dire, si sa che cosa, usiamo tre serie di bit. Un insieme di 8 bit, un altro gruppo di 8 bit, e un altro gruppo di 8 bit. E usiamo quei bit per memorizzare quanto abbiamo rosso vuole sul nostro schermo, quanto verde vogliamo sul nostro schermo, e quanto blu vogliamo sul nostro schermo. E questo significa solo che se si avere un lot-- un numero grande per il rosso, questo significa che mi danno un sacco di rosso. Se si dispone di un numero grande per verde, mi danno un sacco di verde. E se avete solo un po ' di blu o di un piccolo numero come 33, dammi un po 'di blu. E se vi capita di combinare questi tre grandezze, per così dire, si ottiene questo-- si riesce a malapena a vedere su il proiettore qui, ma questa torbida tonalità di colore giallo o marrone. Ma questo per dire, utilizzando tale modello di 8 più 8 plus plus 8-- quel modello di 24 bit è come un computer sarebbe memorizzare quella tonalità di giallo in un puntino un pixel sullo schermo. Così siamo passati da 0 e 1 in decimale numeri alle lettere dell'alfabeto. O, più interessante, punti colorati. Beh, che ovviamente poi viene dopo? Beh, che è un'immagine che si vedi su Facebook o entrare in una e-mail? O simili? Qual è la definizione tecnicamente di un'immagine? Sì. Qual è l'immagine composta da se guardare molto vicino al vostro schermo? Sì. E 'solo un insieme di pixel. In realtà, se si prende il laptop forse più tardi, e guardare veramente da vicino a seconda it-- in quanto costoso il portatile è e quanto alta qualità dello schermo è, si potrebbe benissimo vedere tutti i puntini sullo schermo. E quei punti o pixel, che significa che c'è 24 bit che rappresentano ogni pixel in quel fotografia che si vede su Facebook, o che hai appena preso sul vostro iPhone di recente. E così è così che si ottiene a cose come la grafica. Ebbene, che cosa è un video? Un video è solo un insieme di elementi grafici volano dallo schermo di nuovo e ancora e ancora. E così i video in realtà, sono solo i modelli di bit che rappresentano griglie, righe e colonne di punti, volando dell'immagine sullo schermo, dopo immagine, a immagine, pseudonimo Film. Quindi questo è tutto per gli ingressi e le uscite. Tutto quello che abbiamo ora è un ipotesi che, si sapere che cosa, se vogliamo un computer per rappresentare le informazioni, abbiamo un sistema per farlo. Possiamo farlo con 0 e 1s alla fine della giornata. Ma possiamo astratto, così a parlare, in cima a quella in modo da rappresentare più cose interessanti. E qui in avanti in CS50, ed in informatica, più in generale, ci troviamo ora sulle spalle di tutte le persone che è venuto prima di noi che hanno capito che fuori. E ora solo supporre che i computer può rappresentare ingressi e uscite. Ma ora diamo in realtà fare qualcosa con loro. Quindi, un algoritmo è solo un insieme di istruzioni, passo dopo passo, per risolvere qualche problema. E che cosa potrebbe un tale problema sia. Quindi questa è una vecchia scuola La tecnologia, una rubrica telefonica. E dentro di una rubrica telefonica è un tutta una serie di nomi e numeri. E quei nomi sono generalmente in ordine alfabetico. Quindi, se ho voluto trovare qualcuno in questa rubrica come Mike Smith, che cosa è un tipico umano intenzione di fare? Beh, si potrebbe semplicemente aprire in su, guarda la prima pagina. Non vedo Mike Smith. Girare alla seconda pagina, Non vedo Mike Smith. E solo andare avanti e andare. E 'questo approccio graduale corretta? Sì. È un po 'stupido, a destra. E 'inefficiente, a destra. Perché sta andando a prendere per sempre per arrivare a Mike, ma è corretto. Perché se Mike è qui Io davvero trovarlo. Quindi, che cosa è un po 'più persona ragionevole intenzione di fare? Potrebbero ancora aperta al fronte, e forse volare attraverso la rubrica telefonica due pagine alla volta. Due, quattro, sei, otto. Non posso davvero fisicamente farlo molto bene. Ma in teoria, questo dovrebbe essere due volte più veloce, due pagine alla volta. È questo algoritmo corretto? STUDENTE: [INAUDIBLE] DAVID MALAN: Non necessariamente. Buona. Perché quel avvertimento? STUDENTE: Perché potrebbe essere in uno delle pagine che si sta per saltare. DAVID MALAN: Sì. Quindi, anche se ho sempre più vicino. E se fosse solo per caso, dalla cattiva fortuna, inserita tra le due pagine che sto volando sopra? Quindi abbiamo bisogno di una correzione per questo. Abbiamo effettivamente bisogno di poi dire, aspetta un minuto, forse se andiamo troppo lontano, forse se ci ha colpito la sezione a T, per T venendo dopo Smith, allora dovremmo almeno raddoppiare indietro almeno una pagina. Così risolvibile, ma non vi è una questione condizionale lì. Quindi è due volte più veloce, ma si potrebbe raddoppiare di nuovo solo un po '. Ma nessuno nella sua stanza, anche se in realtà non più usare elenchi telefonici, sta per cominciare dall'inizio. Che cosa hai intenzione di fare alla ricerca di Mike Smith? Hai intenzione di andare o meno alle S di. Oppure, se non si hanno veramente il foglietto sulla carta, si sta andando ad andare almeno all'incirca a metà. E non certo per la parte anteriore del libro. Si sta andando a guardare in basso. E matematicamente probabilmente siete andando a vedere la sezione M, che è più o meno nel mezzo. E poi si sta andando a realizzare, ciò che è vero? Dove è Mike? STUDENTE: [INAUDIBLE] DAVID MALAN: Sì. Così è finita su questo lato. E quindi cosa si può fare? Ebbene, sia in senso figurato e letterale si può strappare il problema a metà una volta? E allora sai che si può buttare questa metà del problema di distanza. E ora siamo lasciati con fondamentalmente lo stesso problema, ma è la metà più grande. E così ora qual è il set di istruzioni? Qual è l'algoritmo per la ricerca di Mike Smith? E 'esattamente la stessa cosa. Ora, questo sembra essere il M sezione e questa è la sezione Z, ma la fondamentale formula è sempre la stessa. Vai all'incirca a metà, guardare in basso, oh, accidenti. Ora sono nella sezione T, Sono andato troppo lontano. Ma anche qui si può applicare la stessa logica. la metà del tiro del problema via e ora siamo sinistra con un problema che è un quarto della dimensione. E possiamo ripetere, e possiamo ripetere, e siamo in grado di ripetere fino a quando teoricamente c'è solo una pagina a sinistra su che Mike sia è o non è. Così che cosa è così potente di questa idea? Voglio dire, dopo tutto, è abbastanza intuitivo. Nessuno sta per iniziare al All'inizio della rubrica telefonica e flip 1.000 pagine per trovare Mike Smith. La maggior parte tutti in questa stanza sta andando a fare più o meno questo tipo di algoritmo salvo la lacerazione. E allora perché l'abbiamo fatto? Beh, prendere in considerazione l'efficienza. Prendere in considerazione solo quanto meglio questo algoritmo è stato suddividendolo nelle sue parti componenti. Così che cosa ho fatto? Ho preso l'elenco telefonico. E un informatico, e un programmatore, più in generale, si scopre, sta andando per iniziare a contare tutto a 0. Perché? Beh, è ​​un po 'strano che noi esseri umani contiamo, in generale, partire da uno. Perché quello che è il più piccolo numero Possiamo rappresentare basato chiaramente anche sul nostro vecchio matematica scuola elementare? Beh, è ​​stato 0, se è in decimale o binario. E così vedrete nel mondo di informatica e programmazione, in particolare, si parte contando tutto da 0. Così ho preso il telefono libro passo 0. Ho intenzione di aprire al mezzo della rubrica telefonica. E questo è davvero un espressione di quello che ho fatto. E poi la fase due era un'occhiata ai nomi. Punto tre è un po ' diversa concettualmente. Sto chiedendo una domanda io stesso. Se Smith è tra i nomi, Ho intenzione di prendere una decisione. Se lui è tra i nomi, poi ho intenzione di chiamare Mike. E ho intenzione di prendere una decisione sulla base di tale informazione. Tuttavia, se non, se Smith è precedenza nel libro a fianco, Ho intenzione di aprire a metà della metà sinistra del libro. E poi ecco la bravura, Ho intenzione di tornare alla fase due. Ho intenzione di ordinare di stare in piedi sulle mie spalle e basta ripetere il lavoro passato ho fatto. Ma il lavoro che ho lasciato è meno, e meno, e meno. Ma è ancora andare a lavorare. Ma se Mike, invece, è tardi nel libro a destra, Ho intenzione di aprire a metà della metà destra del libro, per poi tornare al punto due. Ma c'è in realtà un quarto scenario. Mike sia qui, o qui, o qui, or-- STUDENTE: Non c'è. DAVID MALAN: Non c'è. E in effetti, se non prevediamo questa quarta ed ultima scenario il nostro programma potrebbe essere buggy o viziato in qualche modo. Altrimenti, uscire nel caso in cui non abbiamo trovato Mike affatto. E in effetti, se hai mai notato il vostro impiccagione del computer, o tutti di una parola improvvisa o qualche altro programma appena si chiude improvvisamente, e qualche volta ti errore messaggio letteralmente è che. Questo programma chiuso improvvisamente. Può essere per qualsiasi numero di ragioni. Ma a volte è qualcosa di semplice come questo. Il programmatore umano che ha scritto che il software non si rendono conto che, oh, c'è un avanti cosa che può realmente accadere. E se non si scrive codice per catturare quel quarto scenario, è davvero inaspettato volte ciò che il computer potrebbe effettivamente fare. Ora chiamiamolo un alcune di queste cose. Quindi, in giallo qui, avere termini evidenziati che d'ora in poi siamo solo andando a chiamare funzioni. Funzioni nel mondo di programmazione sono proprio come le azioni, dichiarazioni di azioni. Così pick up, aperto a, guardare a, chiamata, aperto, aperto, uscire. Questa è una funzione, una procedura, un'azione, qualsiasi numero di sinonimi avrebbe funzionato pure. Ora, che cosa sono queste le cose ora in giallo? Se il resto, se il resto, se altrimenti, questi sono ciò stiamo andando a chiamare condizioni di programmazione, o rami, decisione punti, se si vuole. Ma come fai a sapere che la forcella in mezzo alla strada a prendere, per così dire? Abbiamo bisogno di mettere in evidenza i termini a destra lì, che sono questi domande si No. Questi veri e propri falsi domande. Smith tra i nomi? Smith in precedenza nel libro? Smith più tardi nel libro? Queste sono domande a che vi è un sì o no, o equivalentemente vero, o falso, o equivalentemente, uno o zero risposta. E intanto c'è solo un ultimo pezzo. Questo qui ha che tipo di effetto? O se non si programma prima, come è possibile descrivere quello che passo sette e 10 stanno facendo? Cosa hai detto? STUDENTE: Un passo ricorsivo. DAVID MALAN: Un passo ricorsivo. Sì, in sostanza. E 'tecnicamente iterativo qui se si ha familiarità. Ma torneremo a questo. Ma che sta facendo chiaramente qualcosa. Ancora una volta, è inducendo un ciclo, un ciclo, destra. Si sta letteralmente andando indietro a qualche passo in precedenza. E così in effetti, questo sta andando a implementare una sorta di ciclo. Ma non avete intenzione di ottenere bloccato in questo all'infinito, a destra. Perché se siete costantemente il controllo è Mike qui, oa sinistra, o non qui, alla fine lui non sta per essere lì. E si può solo uscire del tutto come per l'ultima riga. Quindi questo è tutto per il vocabolario. E questo era quello che ci generalmente chiamare il codice pseudocodice. Non è un linguaggio vero e proprio. E 'solo molto concisa inglese, ma comunica il punto. Non c'è struttura formale qui. Basta usare è poco parole, ma parole come chiare come si può comunicare la vostra idea. Ora, come buona è che l'algoritmo e quanto meglio è? Beh, non dobbiamo entrare nella specifiche di numeri o niente come quello. Ma possiamo guardare al forma di questa soluzione. Quindi, se ci limitiamo a disegnare qualche trama xy qui sull'asse orizzontale qui. Diciamo solo chiamare la dimensione del problema. E un informatico sarebbe tipicamente utilizzare n come variabile qui. Così n pagine, o n persone nella stanza, o qualunque essa sia si sta cercando di contare. E poi sull'asse verticale sulla sinistra, che sarebbe il tempo di risolvere. Quindi, quanti secondi lo fa mi prendere per trovare Mike Smith? O quanti passi ci vuole? Quanti giri pagina ci vuole? Ecco, questo è quanto costa me in tempo per risolvere un problema. E potremmo trarre la prima algoritmi di pendenza, se si vuole, come appena tale linea retta in rosso. E io chiamerò n. Perchè n? Perché è proprio questo uno a una relazione? Beh, se Verizon o qualunque compagnia telefonica aggiunge una pagina di più per la rubrica telefonica del prossimo anno, che potrebbe spingere Mike uno altro passo più vicino alla fine, a seconda di dove quella pagina è. E così l'effetto potrebbe solo essere di aggiungere un secondo di più. O ancora una pagina di turno. Un rapporto uno a uno. Per contro, il secondo algoritmo. Quanto più veloce è stato che intuitivamente? Dove sono andato due pagine alla volta? Sì. STUDENTE: [INAUDIBLE] DAVID MALAN: Sì. Così sta andando ad essere due volte più veloce. E vorremmo disegnare quella qui a seconda della scala. È ancora una linea retta, ma inferiore alla linea rossa. Perché per qualche numero di pagine, se prende si questo molti passaggi con il primo algoritmo, sta andando a prendere la metà come molti passaggi con il secondo. E così la linea gialla descrivendo il secondo algoritmo è solo andare a essere al di sotto di esso. Ma ciò che è veramente potente è quello di pensare alla terza e ultima, e incredibilmente più intuitivo algoritmo, che ha questa forma. Tecnicamente noi chiameremmo questa una curva logaritmica. Log base 2 di n in questo caso. Ma questo non ha molta importanza. Ciò che conta è davvero il fondamentalmente forma diversa che ha. E si può considerare quanto sia molto più breve di questa linea davvero è nel lungo periodo. E 'in costante aumento. Essa non appiattirsi perfettamente. Ma cresce mai così molto più lentamente come il problema diventa sempre più grande. E si può pensare in questo way-- se Verizon non lo fa solo aggiungere una pagina anno successivo, ma raddoppia il numero di pagine del libro di telefono, il primo algoritmo potrebbe prendere il doppio di molti passi. Se si tratta di 1.000 pagine questo anno, 2.000 pagine l'anno prossimo, Mike potrebbe essere che molto più lontano. Quindi è 1.000 misure supplementari per trovarlo. Il secondo algoritmo potrebbe essere solo 500 in più passi per trovare lui perché ancora una volta, Sto volando attraverso di essa due alla volta. Ma per quanto riguarda il terzo algoritmo? Se Verizon raddoppia la dimensione della rubrica il prossimo anno dal 1000 al 2000 pagine, quanti più passaggi è il mio terzo algoritmo andando a prendere? Sì, è uno solo. E questa è la potente idea. Si può prendere 1.000 pagina morso su questo problema in una volta. E ora, se si considera uno scenario stupido, ma questo tipo di parla al potenza di questo tipo di intuition-- se una rubrica telefonica ha avuto, come, quattro miliardi pagine, si sente come un problema molto grande. E in effetti, potrebbe portami quattro miliardi di pagina si rivolge a trovare Mike Smith in quel caso con il primo algoritmo. Ma quanti passi è vero prendere nel terzo algoritmo per trovare Mike tra quattro miliardi di pezzi di carta? Così quattro miliardi di strappare a metà. Si ottiene due miliardi. Poi un miliardo, poi 500 milioni, 250 milioni, 125 million-- ma si sente come questo è andando a prendere un po '. Potrei aver bisogno di 32 dita a contare così in alto. Ma è davvero come pochi come 32 lacrime pagina. Si può andare da quattro miliardi a una pagina di divisione il numero originale di Pagine in mezzo 32 volte fino a quando si è lasciato con solo che sola pagina. Ora, naturalmente, sto barare qui. Non è che ci sono solo di essere sorta di stupido interamente con i primi due algoritmi. Sto barare in un certo senso, o in realtà sto sfruttando una supposizione. Ciò che era vero per la rubrica telefonica nella sua forma originale che ha permesso mi uso per anche questo terzo algoritmo? Sì? PUBBLICO: E 'stato alfabetizzato. DAVID MALAN: E 'stato ordinato alfabeticamente, giusto? Se fosse solo in caso ordine, questo è uno spreco del tempo, tutta questa conversazione. Devo guardare ogni pagina se è in ordine casuale per trovare Mike Smith prima che io può concludere lui è lì o no. E così l'abbiamo angolo hanno tagliato è che non ho scontato che qualcun altro questo caso ha fatto il lavoro per me. E così che alla fine invita la domanda, bene, aspetta un minuto. Come si fa a ordinare 1.000 pagine di nomi e numeri? Questo è in realtà una diversa problema, qualcosa ci torneremo in futuro. Ma quando si pensa a siti web come Facebook e Google per Gmail e le cose come Google propri indici di ricerca, quando si dispone di milioni o miliardi di pezzi di dati che vengono memorizzati in questi giorni, searching-- e per non parlare l'ordinamento quei problems-- è in definitiva una sfida a se stessa. E in effetti, questo allora è solo una di quelle sfide che ci troveremmo di fronte a. Così ora facciamo un attimo e dare un'occhiata a CS50 se stessa e vi darà un senso di cosa c'è in serbo questo semestre. In effetti, se non l'hai già fatto, non dare un'occhiata a questo URL. E come accennato Patrick a, quest'anno siamo facendo un investimento significativo tutto tanto più a sostegno del corso struttura in termini di TA e il CA, l'orario di ufficio, sezioni disponibilità, e materiale digitale on-line, pure. Infatti, in termini di corso di lezione, siamo qui oggi. E le aspettative questo anno ufficialmente del corso sono assistere ad oggi, del corso ultima conferenza, e un corso più o meno a metà del semestre con ogni conferenza in mezzo messo a disposizione in genere su un pomeriggio di Venerdì on-line, sia per gli studenti di Yale e studenti di Harvard quest'anno. Infatti, uno degli cambiamenti fondamentali è che stiamo adottando in Harvard un paradigma molto come abbiamo fatto qui lo scorso anno e ora quest'anno, in modo che allo stesso modo, abbiamo ancora film più delle lezioni del corso a Cambridge ma renderli disponibili in precedenza di quanto abbiamo fatto in passato in modo che quelli di you-- se vorrebbe, per esempio, ottenere un vantaggio sui materiali il primo fine settimana piuttosto rispetto al secondo fine settimana, avrai accesso a questi tipi di materiali, ricercabile, integrabile, hyperlinkable alle risorse correlate tutte le precedenti. In termini di argomenti, per darvi un senso di trajectory-- del corso e alcune di queste potrebbero essere gergo per ora, ma non per molto, tranquilli. Si comincerà oggi, in ultima analisi, con guardando una programmazione linguaggio chiamato Scratch. Ci transizione da allora in poi la prossima settimana per qualcosa che si chiama C e poi guardando un altro edificio blocchi per risolvere i problemi, cose chiamate array e algoritmi, come usiamo la memoria a nostro vantaggio e svantaggi, e cose come strutture di dati, e poi verso la coda della classe guardando machine learning e guardando un altro linguaggio chiamato Python, come funziona il web, come Internet più in genere funziona, protocolli come HTTP, linguaggi per database come SQL, JavaScript per il web, e, infine, legando tutte allo stesso tempo. E così effettivamente, al fine della giornata, non imparare in questa classe Scratch o C o Python o SQL o JavaScript. Sarà invece più in generale imparare l'informatica e le fondamenta dello stesso, e si vuole imparare a programmare in qualsiasi numero di questi lingue lungo la strada. Così in effetti, uno degli obiettivi del corso, alla fine, è di togliere tutto il corso della ruote di formazione da parte di queste ultime settimane in modo che dopo questo, è possibile tornare al proprio fields-- se tale è o è Non informatica o ingegneria, nel naturale scienze, arti, lettere, o beyond-- e portare alcune di queste Le idee di corso e questo campo di idee e pratiche competenze per il proprio dominio al fine di risolvere i problemi in esso. Quello che faremo qui nel frattempo nella maggior parte dei giovedì dopo oggi è con le teste del corso leader ciò che noi chiameremo procedure dettagliate di set il problema del corso. Così ogni settimana quando ci hanno un problema insieme, faremo camminare attraverso in una posizione in questo modo le sfide del corso, che vi offre alcuni suggerimenti e trucchi e tecniche di progettazione. Ma se non sei in grado per fare quelli di persona, realizzare quegli stessi risorse saranno incorporati da uno del corso di assistenti nel problema si pone, come bene. Il problema imposta di quest'anno, a differenza lo scorso anno, in base al feedback, sarà ancora rilasciato il venerdì. Ma piuttosto che essere dovuto la successiva Venerdì, dando in tal modo solo sette giorni, sarà effettivamente essere dovuto 10 giorni più tardi. E in effetti, questo significa che faranno si sovrappongono per un week-end. Ma speriamo quest'anno soprattutto questa volontà permettono agli studenti, per gestire meglio flusso e riflusso nei loro programmi, che si tratti di accademici o extracurriculars o l'atletica o della stagione di medio termine. È possibile caricamento frontale o posteriore-load la vostra settimana concentrandosi su CS50 basa il carico di corso attuale del proprio settimana. Il problema si pone coprirà una vasta gamma di lingue, anche se ci concentreremo prevalentemente nella fase iniziale su C prima di allora in poi ci concentriamo su una maggiore il livello, più web-centric lingue. E poi un paio di domande frequenti qui-- si dovrebbe prendere una classe come CS50 come primo anno? Quindi, assolutamente. E in effetti, non è necessariamente qualcosa si dovrebbe rinviare fino a quando hai tagliato i denti su altri tipi di classi. Ma piuttosto, prendere in considerazione che per molti studenti, me compreso back in the day, questo è un campo molto familiare, soprattutto se si non ha mai fatto prendere un CSA AP o qualcosa di simile al liceo. Ma rendersi conto che nella fase iniziale, che si tratti di questo corso o qualche altro corso introduttivo, Ora è davvero il momento migliore, Credo che, di trovare qualche nuovo percorso o qualche nuovo interesse accademico, pure. E poi prendendo con altri courses-- così una delle differenze chiave qui rispetto a Harvard è che solo noi prendere quattro corsi a semestre a Harvard per qualche ragione. E voi ragazzi davvero tirare fuori alcuni 36 corsi in totale nel corso dei tuoi quattro anni, che significa generalmente quattro o cinque classi. E io credo che sia abbastanza giusto dire e declinano CS50, in base alla progettazione, è probabilmente non il tipo di classe che si dovrebbe in genere prendere con altri quattro corsi per un totale di cinque perché pset sono da design abbastanza intensa. In effetti, anche io imparai questo nel giorno. Non vorrei descrivere CS50 e informatica, programmazione come tanto difficile come è solo tempo. Non è il genere di cose dove dopo cena, può tornare al dormitorio camera, sedersi, e iniziare concentrandosi sulla pset pensare, va bene, Vado botto questo fuori stasera e poi mossa al mio prossimo argomento il giorno successivo. A volte basta colpito un muro. Hai bug nel codice. Non necessariamente sapere come risolvere qualche problema. E una delle caratteristiche chiave di la programmazione per me fino ad oggi è appena sorta di bisogno di prendere un passo indietro a volte, a dormire su di esso o pensare su di esso nel corso di una corsa o di qualche altra attività, e poi tornare al fresco. E basta queste finestre di tempo. E in effetti, è per questo che abbiamo allungato la quantità di tempo disponibile per gli insiemi di problema quest'anno e anche, a tale URL Ho messo in precedenza da cosa c'è di nuovo in questo semestre, rifilato il problema imposta in modo che sono fondamentalmente non meno rigoroso, e le takeaway non sono meno, ma c'è molto meno materia anteriore, molto meno noia che è necessario fare al anteriore di ogni problema proposto come si vedrà, prima di poter in realtà immergersi nella carne di esso. Quindi rendersi conto che questi e altri cambiamenti sono all'orizzonte per accogliere meglio gli studenti, ma in ultima analisi, per essere sicuri che i take away sono infatti il ​​più alto possibile. Così, mentre più lavoro di quanto non potrebbe essere in una classe tipica, ci auguriamo che i ritorni per voi e il takeaway per voi e le competenze e le idee con la quale si esce sono tanto più attraente come risultato. E per farti there-- e questo è uno dei punti salienti, come accennato Patrick earlier-- è struttura di sostegno del corso. Quindi non solo CS50 ha una delle la più grande personale corso del campus. Ha anche uno dei più la maggior parte di laurea. In effetti, l'anno scorso CS50 Era la prima classe di avere un corpo docente universitario. E testimonia che il successo fare ora molti altri corsi all'interno di Yale CS avere quella, pure. E per gli studenti, in particolare, saranno questi TAs e assistenti dei corsi supporterà un intero rete di risorse di supporto, Tra di loro sezioni o recitazioni, opportunità settimanali di avere discussioni più intime e recensioni di materiale di mira per le diverse tracce, per gli studenti meno comodo, più confortevole, o una via di mezzo. Questi seguiranno la disponibilità di le lezioni di diversi giorni alla settimana il lunedì e il martedì. E poi ufficio hours-- uno-a-uno opportunità di aiuto da parte della CA corso e TA sarà il mercoledì e il giovedì e la domenica alle multipla volte, tutte saranno pubblicati sul sito web del corso, ancor più rispetto allo scorso anno, pure. Ma qual è la chiave per CS50, se Non certamente un po 'insolita, è la cultura del corso che abbiamo cercato di coltivare, sia in Cambridge per molti anni e ora la maggior parte di recente a New Haven. E infatti, venendo questa Sabato, se non avete sentito parlare, è Giorno CS50 Puzzle, che ha niente a che fare con l'informatica ma è interamente progettato per inviare un messaggio che l'informatica è di risolvere i problemi. E in effetti, se si desidera socio con uno o due o tre amici e formare una squadra per CS50 Puzzle Giorno, date un'occhiata le inserzioni che si trovano sulla via d'uscita. E tre ore di pizza e puzzle e premi attendono. E infatti, per la prima volta quest'anno, non si terrà in collaborazione con Harvard. Sarà qui in modo indipendente a Yale. Quindi tenere d'occhio per quelli se non lo avete. La maggior parte ogni Venerdì nel semestre Non cerchiamo di fare una grande classe sentire piccolo e portare circa 50 studenti a pranzo con il personale del corso, con ex-alunni, amici da industria a parlare A proposito di ciò che la vita è come dopo un classe come CS50 e nel corso degli estati e dopo la laurea. Quindi tenere d'occhio per inviti a questo. Per la prima volta mai quest'anno abbiamo tenere la prima mai codifica CS50 concorso, una opportunità di opt-in opzionale di metà semestre, dopo tutti noi hanno avuto circa sei o sette settimane di programmazione in C alle spalle per competere, se si desidera così prego-- di nuovo su teams-- cercando di risolvere il maggior numero di sfide come si può in programmazione con amici tuoi contro gli altri. E verso la coda del semestre volontà abbiamo noleggio alcuni autobus, in realtà trascorrere del tempo a Cambridge, se si desidera unirvi a noi, per la cosiddetta CS50 hackathon. Alle 19:00 inizieremo. Intorno 21:00, avremo la pizza. Intorno 01:00, avremo burritos. E chiunque ancora sveglio sulla a casa in autobus intorno alle 5:00 del mattino, ci fermeremo per frittelle all'IHOP sulla strada home-- un'opportunità di 12 ore per immergere te stesso con i compagni e lo staff nel progetto finale del corso, che è un'opportunità ad andare ben oltre il problema insiemi del corso e progettare e implementare più nulla di vostro interesse, che alla fine sarà descritto qui a Commons. La prima fiera mai CS50 ultimo anno, una mostra di fine semestre o la celebrazione di quello che tutti nella classe aveva compiuto, specialmente quelli, ancora una volta, che è andato da niente da qualcosa, da zero a 60, avendo precedenti conoscenze e presentante, in ultima analisi, qualcosa per tutta la città universitaria e, se on-line, il mondo a vedere, pure. Ora, questi qui sono solo alcuni dei TA e CA che rende CS50 possibile. Mi permetto di invitare ogni di tale personale che sono qui per salire sul palco, così come le teste del corso, per offrire alcune parole di ispirazione, pure. ANDI: Ciao, ragazzi. Can you guys mi senti? Grazie per averci seguito in questa bella, piovoso pomeriggio di Giovedi. Il mio nome è Andi. Sono un junior a Berkeley. E insieme con Stelios e l'estate, ci sarà il vostro insegnamento di tre testa assistenti per questo prossimo anno. Quindi, credo, spettacolo di hands-- quanti di voi non hanno alcuna intenzione di essere un CS importante né veramente immersioni in profondità in informatica come un importante qui? Eccezionale. È geniale. Quindi sono in realtà un affari globali e scienza cognitiva importante. Ho letteralmente venuto a Yale con l'intento di non dover guardare un numero mai più in vita mia. Quando sono arrivato a Yale, questo è stato qualcosa che non è mai stato sul mio radar. Volevo conoscere la poesia. Volevo conoscere affari internazionali. Volevo conoscere acquerello. Sì, offriamo una classe su disegni ad acquerello. Ma non sono mai stato veramente interessato in qualche cosa STEM relativo. Ma poi il vecchio mi ha, più mi rendevo conto che ogni campo davvero in qualche senso impiega informatica, o, se non di informatica, di calcolo. Infatti, per il mio globale Affari progetto chiave di volta, stiamo usando analisi dei dati per analizzare gli attacchi terroristici per Boko Haram in Nigeria. E così come si può vedere, a prescindere di quello principale finisce per perseguire o che cosa i vostri interessi qui a Yale sono, la programmazione e le fondamenta di qualsiasi competenze sono super utile. E CS50 realtà è ben attrezzato per tipo di dare molte delle sue risorse a, indipendentemente dalla come si sta comodi o come si è interessati nel perseguire la classe. Estate di andare a parlare un po ' po 'di quello che voi ragazzi siete andando a conoscere quest'anno. ESTATE: Hi, everyone. Sono Estate Wu. Sono un junior in Morse. E io in realtà iniziato come uno studente CS50 me stesso. Così tre anni fa, ero su un anno sabbatico. Non avevo mai preso un CS classe al liceo, ma ho pensato che nel mio tempo libero, sarebbe bello imparare a codice. Così ho fatto una rapida ricerca su Google, guardato per quello che era disponibile on-line, e ho visto questo video con Muppets e DJ e siti web freddi. Ero come, voglio imparare a farlo. Così ho preso il corso, ed io appena caduto nell'amore con esso. Ma mi ricordo di essere così geloso della ragazzi che hanno potuto partecipare alla Hackathon, partecipare Puzzle Giorno, partecipare ufficio ore, ricevere aiuto da TA in persona. E così non avrei mai immaginato che avrei avuto la possibilità da qui coinvolti in il percorso che prima schiera Mi interessa di computer scienza e motivo Sono un informatica importante oggi. Quindi ti avverto, questa classe sta per allungare voi. E 'intenzione di sfidare voi. Ma è anche andando a ti insegnano come fare le cose che non avete mai immaginato che si poteva. STELIOS: Hi, everyone. Il mio nome è Stelios. Sono un junior a Branford College e un importante CS. Sono anche da Athens, Greece. Davvero non vedo l'ora a soddisfare tutti voi, chattare con te in sezione, a orario d'ufficio, a venerdì pranzi. Sono molto eccitato perché abbiamo messo tanto impegno nella creazione di un supporto unico Struttura per tutti voi per rendere la vostra esperienza con corso il migliore possibile. E spero che, anche se la maggior parte di non è stato probabilmente preso un CS Naturalmente prima, spero che sia CS50 per voi è quello scintille interesse per proseguire del computer la scienza in futuro, come ha fatto con così molte persone in passato. Quindi grazie per essere qui, felice di vedere voi. Jason Hirschhorn. JASON HIRSCHHORN: Ciao a tutti. Il mio nome è Jason Hirschhorn. Io vivo in Silliman. E sono andato a Harvard come un undergrad e laureato in studi sociali e minored in informatica. E uno dei miei ruoli principali qui è quello di sostenere questo meraviglioso personale come tutti sostengono. In realtà, questo non è tutti. Ci sono 55 studenti e laureati qui per supportare tutti voi. E oserei dire uno dei migliori parti del corso per voi tutto è sempre a lavorare con loro, conoscere loro, arrivare a vederli, sia in CS50 e al di fuori di questo semestre CS50 e per molti semestri a venire. Così si spera ti prende il Naturalmente, perché si spera arrivare a interagire con il meraviglioso personale che abbiamo sul palco. SPEAKER: Bene, lasciami finire dicendo che sarà divertente. DAVID MALAN: Beh, grazie a tutta la nostra squadra. Mi permetta di abbassare le luci e permettere un po 'della nostra squadra, sia da Cambridge e New Haven, dire ciao come file fuori questi ragazzi. E dopo che potremo passare a il primo dei nostri impegni programmazione con questo linguaggio chiamato Scratch. Così grazie al team. Cerchiamo di abbassare le luci e sentire da pochi altri. [APPLAUSI] [RIPRODUZIONE VIDEO] -La Missione del CS50 è di farvi più a suo agio con un modo totalmente nuovo di pensare, questa mentalità computazionale. -E Fatto informatica interessante, che è qualcosa che non ho davvero capito è stato possibile fino a quando ho preso la classe. -I Era come, whoa. Sono davvero tradurre i miei pensieri in un computer in questo momento. -Anche Se non si dispone di alcun background in informatica o qualsiasi esperienza, questo è in realtà la classe per voi. -Quindi Voglio assolutamente i miei studenti a poco eccitarsi informatica. Non solo di programmazione, ma pensare come un informatico è davvero quello che voglio cercare di insegnare la mia matricola. -CS50 È difficile e gratificante. -Un'esperienza. -Extravaganza. -E Ci sta portando al livello successivo. [RIPRODUZIONE DI BRANI MUSICALI] -Le TF sono, credo, la linfa vitale del corso. -Sono Entusiasti di avere i miei studenti Sto aiutando ha quel aha momento di realizzare quello che stanno effettivamente cercando da fare, per capire come fare un pset. -CS50 È sicuramente un percorso difficile. Ma a differenza di qualsiasi altro corso davvero a Yale, ha una così grande, comunità solidale. -Non Assolutamente no bisogno di sapere nulla di codifica per essere in grado per partecipare al corso. -E 'Sorprendente vedere quanto lontano la gente viene in un semestre. -Non Sono stati solo seduto in la vostra camera imparare a codice, ma era molto più di una classe. E 'stata un'esperienza. -Il Modo migliore per imparare i concetti e per elaborarli è da insegnare agli altri. -Qual È la divisione di telefono? [RIPRODUZIONE DI BRANI MUSICALI] -E Questo è CS50. [RIPRODUZIONE DI BRANI MUSICALI] -Questo È CS50. -Ho un problema? Strappo a metà. [RIPRODUZIONE DI BRANI MUSICALI] Buttalo via. DAVID MALAN: Va bene. Quindi cerchiamo di tackle-- in un po ' bit, per inciso, è stata questa tradizione per qualche ragione per 10 anni per servire la torta al inizio e la fine del CS50. Così si attende alla fine del Oggi, oltre a syllabi, sarà un po 'di torta come pure, e il personale del corso per dire ciao. Ma ora, di lasciare che la transizione alla prima delle nostre lingue, in cui passeremo davvero solo una settimana e un problema impostato su questo dominio, Scratch. E troverete se hai programmato prima, molti delle idee e del possibilità sono familiari. Ma troverete che è divertente lungo la strada di capire esattamente come tradurre alcune delle idee che già conosci a questo particolare ambiente per impressionare davvero la tua famiglia e amici con il vostro lavoro, che può andare online, se lo desiderano, dopo. E se non avete precedente esperienza e sono tra la maggioranza dei studenti meno confortevoli, rendersi conto che molte delle idee che abbiamo appena esplorato con le cose reality-- come elenchi telefonici e presenze e così forth-- tradurre abbastanza bene a un computer, ma non se si utilizza, Inizialmente, un linguaggio come questo. Quindi questo è un programma scritto in un linguaggio chiamato C. E passeremo un bel po ' di tempo in C, in ultima analisi. Ma le probabilità sono, questo avrà un aspetto un po ' criptico per voi al primo sguardo. In realtà, c'è un sacco di strano sintassi, parentesi, parentesi angolari, parentesi graffe, citazioni, e punti e virgola. E in effetti, se ci si immerge in programmazione per la prima volta guardando e cercando di creare roba come questo, onestamente, si ottiene così impantanato così spesso in solo stupido minuzia che non ha nulla intellettualmente interessante a questo proposito. Ma immaginate se si potesse creare questo stesso program-- che, come si potrebbe tipo di inferire, probabilmente stampe "Ciao, mondo", un modo o nell'altro. Siamo in grado di distillare la stessa idea in solo due pezzi del puzzle, se si vuole. Infatti, Scratch è interessante perché è questo linguaggio grafico. È possibile trascinare e rilasciare questi pezzi di un puzzle che solo interlock se ha senso logico per farlo. E così nel Scratch, vedremo presto, questo è come si potrebbe implementare la stessa programma, con solo due pezzi del puzzle che praticamente fare quello che dicono. Ma vedremo tra un momento che alcuni degli elementi costitutivi che abbiamo accennato in precedenza e pochi altri sono tutto ciò che in ultima analisi, stanno andando a costituire alcuni dei nostri primi programmi. Stiamo per avere le cose come functions-- solo azioni che fanno qualcosa, come dire ciao, mondo. Stiamo per avere cicli, cose che inducono cicli più e più volte, proprio come noi ha fatto un momento fa con la ricerca per Mike Smith. Le variabili, come in algebra, se si hanno xoy, in grado di memorizzare un numero. Ebbene, in un programma, si può effettivamente memorizzare più di semplici numeri. È possibile memorizzare le parole e le frasi e la grafica e altre cose ancora. espressioni booleane, appena questions-- sì o no, vero o falso. Condizioni, le decisioni per la preparazione sulla base di tali risposte sì / no. E poi le cose come amatore array e le discussioni ed eventi e qualsiasi numero di altri caratteristiche, ma tutte mappa molto bene per molto blocchi friendly come questo. Questo sta per essere una funzione, un pezzo di puzzle viola che dice basta ciò che il suo nome è-- in questo caso, dire. E poi spesso, non c'è una scatola bianca che si può digitare o trascinare un certo valore in. E questo è ciò che è generalmente chiamato un argomento o di un parametro. E 'un modo di alterare il comportamento predefinito di un puzzle piece o una funzione in modo che lo fa qualcosa su misura per voi come dire, ciao, mondo o ciao, Andy o ciao, Jason o qualche altra frase, invece. Se si vuole dire che un lot-- letteralmente forever-- si può prendere un altro pezzo di puzzle chiamato per sempre e appena inserita la due insieme in questo modo. E quel ciclo, come l'immagine suggerisce, significa solo dire ciao, mondo per sempre, Ancora e ancora e ancora. Oppure, se si desidera solo fare un numero finito di volte, come 50 volte, ci sara 'un altro puzzle pezzo per che-- ripetere 50 volte. Nel frattempo, se si desidera avere una variabile in questa lingua siamo su cui giocare, è possibile utilizzare un blocco arancione come questo. E questa variabile I arbitrariamente Ho chiamato per intero. E ho appena impostato è uguale a 0. E così forse io, in questo case-- questo variable-- rappresenta il punteggio di qualcuno in un gioco. Si inizia a zero, e ogni volta che si fare un gol o qualcosa del genere, si ottiene un punto supplementare. È possibile porre domande in Scratch. Se il drag and drop di puzzle pezzi in un momento come questo, si possono porre domande del tipo: bene, io meno di 50? Forse avete bisogno di 50 punti per vincere. E quindi questo sarebbe la domanda che ci si chiede. Oppure, più in generale, si potrebbe dire è x meno di y, dove ci sono due variabili in gioco? Ora, questo è un sacco più grande a prima vista, ma in realtà non è affatto più complessa. Questo è solo una combinazione di condizioni e variabili e le espressioni booleane per chiedere tre questions-- è x meno y? Se è così, diciamo così. Dire, x è minore di y. Altrimenti, se x è maggiore di y, altrimenti x deve essere uguale a y. E mentre con Mike Smith, ci sono stati quattro scenari, qui nel mondo dei numeri, x è o inferiore, superiore o uguale a. Tutto quello che abbiamo sono tre forchette in mezzo alla strada. E poi c'è amatore pezzi del puzzle come questo per cose come gli array, dove stiamo sarà in grado di memorizzare informazioni. Stiamo andando a vedere i blocchi che consentono di implementare più thread, Un'altra caratteristica useremo, e poi anche qualcosa chiamato eventi. Ma prima di arrivare a questo punto e creare ancora, in ultima analisi, la nostra personalizzato parti di puzzle, diamo in realtà aprire il programma stesso. Quindi questo è Scratch. E 'disponibile presso scratch.mit.edu. E tu sei il benvenuto a giocare ora o più tardi, pure. Questo sembra essere la versione offline. Per le persone che non lo fanno necessariamente avere grande internet, è possibile scaricare il stesso software, pure. E non c'è davvero solo tre componenti di questo software. In alto a sinistra di lo schermo è il tipo di fase che Scratch, che per impostazione predefinita si presenta come un gatto, vive dentro. Egli può spostarsi verso l'alto, in basso, a sinistra ea destra e fare qualsiasi numero di altre cose, e può guardare un qualsiasi numero di modi base sui costumi che si assegnano a lui. Ma questo è ciò che chiameremo un sprite, una sorta di personaggio. E si può avere più personaggi, come vedremo tra poco. In mezzo ora sono tutti questi rompicapo pezzi e queste categorie o pallet loro. Quindi in questo momento, ho cliccato su Motion. E così io sto vedendo tutto il movimento legati pezzi del puzzle o blocchi, così funzioni che hanno a che fare con salendo, in basso, a sinistra oa destra o qualche altra operazione. Ma se ho cliccato sugli sguardi, si potrebbe vedere le cose come il blocco di dire che abbiamo visto solo un momento fa. E se clicco per il controllo, si vedrà cose come la ripetizione e la sempre e il blocco if che abbiamo visto un momento fa. E in modo da trovare che ci limiteremo a grattiamo la superficie di alcune delle puzzle di pezzi insieme, ma è tutto abbastanza intuitivo e il punto e fare clic. Infatti, è stato progettato Scratch per gli studenti più giovani per contribuire a dare loro uno sbocco per il pensiero creativo. Eppure meravigliosamente, è un meraviglioso trampolino di lancio per esattamente le idee che andremo a esplorare in C e Python e JavaScript, anche. Sul lato destro, infine, qui è questo, la cosiddetta zona script. E questo è solo la tabula rasa con che si inizia a scrivere un programma. E sarò esattamente questo. Ora, mi capita di sapere dove sono le cose perché ho fatto un paio di volte. Ma so che sotto la categoria Eventi, c'è questo blocco qui-- quando la bandiera verde cliccato. E notare se io diminuire e nel qui sul palco, vita Scratch all'interno di questo piccolo mondo di forma rettangolare, in cima che è un verde bandiera e un segnale di stop rosso. Quindi, andare e fermarsi, rispettivamente. E così quello che voglio fare quando si fa clic su quella bandiera verde? Ebbene, lasciami andare a che appare categoria. E mi permetta di andare avanti e trascinare e rilasciare questo. E notare, non appena si arriva vicino, sono una sorta di magnetico. Quindi, se ora ho lasciato andare, non si blocca insieme bello e pulito. E ho intenzione di andare avanti e dire qualcosa di simile ciao, mondo per due secondi. Mi permetta di diminuire e fare clic ora il bandiera verde, e dire ciao, mondo. Tutto ok. Ecco, questo è tutto bello e buono. Non tutto ciò che eccitante. Facciamo un po 'più carino. E so che in anticipo, Scratch accade a venire con alcune cose carine come questa. Così giocare meow suono fino a cottura. Quindi cerchiamo di fare questo. [MIAO] Ah, questo è adorabile. E se lo scatto again-- [MIAO] E di nuovo. [MIAO] Ma io continuo a dover rianimare Scratch. Ma posso fare meglio di questo. Perché non è sufficiente trascinare tre di questi. E ora è tre volte più adorabile. [Miagolando] OK, in realtà, è un po 'inquietante. Quindi abbiamo bisogno di una via di mezzo c'è. Se vado a controllo, sembra che c'è in realtà un blocco di attesa. E così notare se mi passa il mouse sopra there-- e mi permetta di rendere questo un po 'più grande. Se mi passa il mouse, sta andando a scattare in posizione. Quindi, attendere un secondo, attendere un secondo. Diamo ha colpito di nuovo bandiera verde. [Miagolando] OK, un po 'più naturale, ma non molto efficiente. Quindi questo è corretto se il mio programma di obiettivo è stato meow tre volte. Ma non è molto ben progettato. I tipi di tagliare alcuni angoli. Ho avuto un po 'pigro. Che cosa si sente like-- cosa mi sembra di aver fatto male, diresti? Sì? Sì, nel mezzo. PUBBLICO: usato più la memoria di quello che era necessario perché si sta utilizzando tanti linea diversa. DAVID MALAN: Sì, così più linee. E non sarebbe necessariamente di memoria, anche se potrebbe essere visto come in questo modo. Ma è definitely-- c'è ridondanza. E io letteralmente tipo di trascinata e lasciò cadere le stesse cose. E se tipo di extrapolate-- se Non è ovvio qui-- bene, come sarebbe Mi meow 30 volte? Vorrei trascinare e rilasciare, come, 30 più coppie di pezzi del puzzle. E sicuramente, c'è un modo migliore. E abbiamo visto un modo migliore. Cosa sarebbe intuitivamente essere il modo migliore? Sì, basta utilizzare un ciclo. No copia e incolla. E in effetti, in qualsiasi momento questo semestre se si avvia ritrovarsi trascinando, o realmente copia e incolla, pericolosa abitudine di entrare in causa questo non è solo molto gestibile. Per esempio, se voglio cambiare il suono di qualcosa d'altro, Devo cambiare ora in tre posizioni invece di uno solo. Perché in effetti, se io rompere questo away-- Sono solo andando a disaccoppiare in quel modo. Mi permetta di prendere un blocco di ripetizione, e quindi fare clic su tre, digitare tre, gettare un po 'di questi via da solo lasciando andare. E poi notarlo non sembra si adatta, ma magneticamente, sta andando a scatto non solo in posto ma crescere per adattarsi alla forma. Quindi, questo è un bene. E ora se clicco gioco. [Miagolando] Molto bella. Tutto ok. E ora è molto facile da cambiare, anche perché posso solo modificare un numero in un unico luogo. Ma anche questo non è tutto ciò che interessa. Diamo in realtà hanno Scratch non meow, ma si muove. Lasciami andare a Motion e spostare 10 passi all'interno di-- urla, mi permetta di risolvere il problema. Dammi muovere 10 steps-- in realtà, non facciamolo ripetere. Mi permetta di prendere un blocco di controllo, e effettuare le seguenti operazioni per sempre. Per sempre, spostare 10 passi. E fare clic su Play. OK. Ma per fortuna, si ferma. In caso contrario, i bambini sarebbe ottenere molto turbato quando una sorta di perdono il loro gatto. Ma almeno posso trascinare indietro nello schermo. Ma questo non è tutto ciò che grande di un gioco o di animazione. Sarebbe bello se forse ha rimbalzato fuori dal bordo. Quindi cosa facciamo? Che costrutto abbiamo bisogno di avere Scratch decidere di rimbalzo, pensi, anche se non hai mai visto Scratch prima? Sì, in parte posteriore. PUBBLICO: Avete bisogno di un se il blocco o if-then. DAVID MALAN: Sì, così alcuni tipo di blocco o se if-then. Quindi, in realtà, ne abbiamo uno di questi qui. So so se: mi permetta di ottenere liberarsi del movimento. Mi permetta di ingrandimento in modo che sia più grande. Così come su questo. Per sempre, se Sensing-- Noi non abbiamo visto prima. Ho bisogno di una espressione booleana. E si scopre se tocca che cosa? Se toccando il bordo, cosa voglio fare? Beh, se torno a Motion, Risulta, oh, posso girare intorno. Mi permetta di trascinare questo qui. Perché non andare avanti e girarsi di 180 gradi? Ed ora, vorrei solo muovere alla fine. Ho potuto mettere il movimento al all'inizio o alla fine. Ma logicamente, ogni volta che si muove, io voler controllare, sto toccando il bordo? Sto toccando il bordo? Sto toccando il bordo? In modo che logicamente mi giro in caso affermativo. Quindi cerchiamo di colpire il gioco. OK. Quindi è un po 'buggy, per così dire. E un bug è solo un errore in un programma per computer. Ma almeno si sta lavorando. E infatti, posso andare a qui. E permettetemi di fare non 10 passi ad un tempo, ma questo è tutto animazione è. Questo è tutto un cartone o anche un film è. Mi permetta di spostare 20 passi alla volta. Così 20 volte il numero di cose stanno accadendo una volta o due volte come molti, in questo caso. E lui si muove più velocemente. Mi permetta di cambiare a 30. 100. 1.000. E sta andando veramente veloce. E questo è-- sì, OK. Così ora stiamo solo scherzi con esso. OK, così buggy. Ma lo si può trascinare fuori strada qui. Ma possiamo fare più divertimento con questo, anche. Che ne dite di questo-- lui è a testa in giù. Ma si scopre Scratch-- e vi è in realtà, Devo smentire, non accademico valore a ciò che sto per fare. Ma se apro il microfono, andiamo lui fermarsi e fare qualcosa del genere. Ahia! [RIDERE] E 'stato adorabile. Grazie. Ora, questo è ciò che la mia voce sembra che quando grido ouch. Non credo che abbiamo preso la tua risata. Va bene. Mi permetta di salvare questo come "ahi". Salviamo questo come "ahi". E ora andremo agli script. E ora mi need-- vediamo, Sound. Oh, riprodurre ouch suono. Quindi, se io sto toccando il bordo, mi permetta prima commedia ahi, e poi girarsi. E adesso lo ha messo in mezzo. [Dicendo "OUCH"] Due volte più veloce. OK. Ma è letteralmente fare quello che sto dicendo. Così è infatti corretto, è solo un po 'fastidioso in fretta. Quindi aggiungiamo qualcosa più interessante a questo. Lasciatemi in realtà aprono uno che ho fatto in anticipo, giustamente chiamato Pet la Cat, che fa questo. Ecco lo script qui. Che cosa è questa intenzione di fare in termini inglesi? Che cosa è questo progettato per fare? Sì, andiamo some-- sì? PUBBLICO: quando si accarezzare il gatto, miagola. DAVID MALAN: Sì, così quando si accarezzare il gatto, sta andando a miagolare. In altre parole, non c'è ora un eterno ciclo ancora, combinato con una condizione, combinata con una espressione booleana, combinato con una coppia di funzioni, l'effetto di cui, una volta io gioco questo programma, è nulla succede fino a quando ho spostare il cursore sempre più vicino e più vicino e- [MIAO] Poi è come accarezzare il gatto. [MIAO] Solo una volta che effettivamente spostare il cursore su di lui. Ora, ho anche scatenato non domestico il gatto, che fa questo, invece. [Miagolando] Così ha appena costantemente miagolando. [Miagolando] Ma se ho troppo close-- [Miagolando] [RUGGITO] Così come fa questo lavoro? Ora devo solo un bidirezionale bivio. Se toccando il puntatore del mouse, quindi riprodurre il suono leone. Altrimenti basta riprodurre il suono Meow, e quindi attendere tre secondi in modo che è una specie di fare molto tranquillamente. Tutto ok. Ecco, questo è la combinazione alcune altre idee ancora. Diamo uno sguardo a questo esempio Ho sbattuto fino chiamati fili. E questo è fondamentalmente differente in quanto leve una caratteristica di molti linguaggio di programmazione chiamato fili, la capacità di un programma di letteralmente fare due cose contemporaneamente. In effetti, in questi giorni se si sta utilizzando Google Docs o Microsoft Word, e il documento è costantemente essere eseguire il controllo ortografico, anche, come si type-- o colpire Comando-P o Control-P e qualcosa di stampa, è la stampa mentre si continua a digitare. Programmi oggi può davvero fare di più le cose in una volta, proprio come in Scratch Qui. Così qui, ho due sprites ora, un uccello e un gatto. E se clicco su ciascuno dei quelli caratteri uno alla volta, Vedo in questo momento l'uccello del script in alto a destra. Ora vedo il gatto. Bird, gatto. Così ciascuno di loro hanno il loro script. Ma preavviso, cosa pezzo di puzzle Hanno entrambi cominciare? Quando bandiera verde cliccato. E uccello, quando la bandiera verde cliccato. Così, quando scatto la bandiera verde, entrambi questi script o programmi stanno andando a correre in parallelo. E si noterà che l'uccello è solo senza pensare che rimbalza fuori dal bordo. Il gatto è stato programmato in modo chiaro con un vantaggio strategico. E-- [RUGGITO] Tutto ok. Così il gatto catturato l'uccello in questo caso. Perché? Beh, avviso prima dobbiamo solo l'uccello solo senza pensare di andare a questa posizione iniziale, e poi per sempre, se non toccare il gatto, basta spostare. E se siete ai margini, di rimbalzo. E basta spostare. E se siete ai margini, di rimbalzo. Ma il gatto, nel frattempo, ha una certa logica aggiuntiva che dice questo-- prima, solo così che questo non è completamente polarizzato contro l'uccello, noto che ho usato un pezzo di puzzle verde lì che in realtà raccoglie un numero casuale. Una caratteristica di molte lingue è quello di dare voi numeri casuali o pseudocasuali. Quindi in questo caso, il gatto inizialmente sceglie un numero casuale tra, come, 90 gradi e 180 gradi, in sostanza, così che c'è un po 'di varianza. E poi per sempre, se commovente l'uccello, riprodurre il suono leone. In caso contrario, basta puntare verso l'uccello. Puntare verso l'uccello. Point verso l'uccello, che è un pezzo di puzzle a se stessa in questo caso. Beh, possiamo fare un'altra cosa qui. Mi permetta di aprire il programma eventi qui. E qui abbiamo di nuovo due sprite, che sembrano questi due pupazzi qui. E ciò che è interessante è questo. Il ragazzo arancione ha questo set di pezzi del puzzle qui. Sempre fare il following-- se la barra spaziatrice viene premuto, poi dire, Marco, e poi trasmettere un avvenimento. E nel frattempo, il ragazzo blu qui ha Questa poi quando si riceve l'evento, dire Polo. Così si scopre in Scratch e in altre lingue, ci sono modi per due programmi o due script, in questo caso, intercomunicare modo che quando ha colpito la barra spaziatrice, dice Marco. E l'altro sente che, per così parla, e dice Polo in risposta. Così si può scrivere programmi che effettivamente interagire in questo modo. E se faccio questo uno invece, Posso anche aggiungere le variabili, solo utilizzando uno sprite in questo caso. Questo è particolarmente fastidioso. [BARKING SEAL] Ora, notate a destra abbiamo un po 'di logica aggiuntiva qui. Come faccio a interrompere questo sigillo di abbaiare? [BARKING SEAL] Sembra che sul destro lato è ciò che è la riproduzione del suono. Ma è solo la riproduzione di un suonerà se ciò che è vero? Se un arancio variable-- block-- sordina è pari a zero. Come faccio a cambiare in sordina per essere 1, nel senso vero, fanno di questo sordina? A quanto pare, l'altro script, posso premere la barra spaziatrice, e ora si ferma. Così possiamo avere questa intercomunicazione attraverso script, così, da solo la condivisione di una variabile tra i due come questo. Ora, questo non è tutto ciò che interessa. Andiamo avanti e fare questo e si combinano molte di queste idee con questo programma Qui. Prima di farlo, però, Che ne dite di un volontario? Mi permetta di prendere la pressione fuori di me, perché io in realtà non giocare a questo gioco. Diamo qualcuno che non hanno visto prima. Bisogna stare bene a venire sul palco qui, sulla macchina fotografica. OK, andiamo su. Molto coraggioso. Come ti chiami? IDRIS: Idris. DAVID MALAN: Siamo spiacenti? IDRIS: Idris. DAVID MALAN: Idris, piacere di conoscerti. Vieni su. E ora, sul proprio cellulare telefono, si gioca Pokemon GO? IDRIS: No. DAVID MALAN: Davvero? IDRIS: Sì. DAVID MALAN: OK. Tutto ok. Bene, piacere di conoscerti. Vieni su. Nemmeno io. Quindi dovremo capire insieme come giocare a questo, che qualcuno in realtà è andato e attuati in Scratch cambiando il gatto essenzialmente diversi personaggi tutti insieme. E se a tutto schermo questo qui, stiamo andando vedere il seguente gioco insieme. Ancora caricamento, ancora carica. Dai. Mi permetta di fare questo. Dai. Questo gioco è così grande che si è schiantato. Stand-by. Prova questo ancora una volta. Dai. Tutto ok. Ecco quà. OK. Bandiera verde. Quindi qui si va. [RIPRODUZIONE DI BRANI MUSICALI] Scegliere il livello di mezzo qui. Clicca il ragazzo blu lì. Tutto ok. Ed è possibile utilizzare la freccia keys-- su, giù, sinistra, destra. Ora, consideriamo come noi questo-- e poi andare dopo il carattere lì. Sì. E ora cliccare lui con il mouse. O si. Mossa. Dov'è la freccia? Ecco qui. Quindi cliccare su lì. Sì. Tutto ok. Così ora, mi hanno detto di avere una Poké Ball, che se clic su di esso, si farà. Molto bene. In pratica per oggi, ha trovato questa versione del gioco di in realtà non è molto difficile. Quindi, se si vuole andare di nuovo qui, camminare fino a questo Poké Ball. E poi andare a girare a destra. Prova a cliccare su di esso. Oh, in realtà, questo è il negozio, a quanto pare. OK così vicino che. Mai fatto prima. Forse andare fino a questa cosa qui. Oh, ci si va. Aspetta, c'è una laggiù. Oh, c'è un altro. OK. Giù. Sì, fare clic su. OK, questo è molto carino. OK, molto ben fatto. Questo gioco non è molto difficile. OK. Complimenti. Qui, abbiamo un CS50 palla antistress per voi. Ma consideriamo per un attimo cosa alcuni degli take away ci sono. Più facile che il gioco vero e proprio, a quanto pare. Ma tutto quello che abbiamo in corso qui è un personaggio che probabilmente ha qualche tipo del circuito associato. Non è un gatto. E 'questo personaggio, invece. E questo ciclo è appena costantemente dicendo, se la freccia premuto, se freccia verso il basso premuto, se freccia sinistra o destra premuta freccia premuto, spostarsi verso l'alto o verso il basso o verso sinistra o verso destra. O se c'è un altro pezzo del puzzle ci che dice quando si tocca un altro sprite, quando si tocca uno dei personaggi per la Poké Ball, se toccante, poi fare questo. Quindi, tutte le idee che abbiamo state usando finora davvero può solo essere applicato in questo particolare contesto di giocare a questo gioco, pure. Lasciami andare avanti e tirare Su di un altro qui, in effetti. Lasciami andare avanti e tirare fino, diciamo, questo. Questo è qualcosa che remixato. Realizzato da uno dei nostri studenti a Cambridge, e poi ho attraversato e ha cambiato praticamente ogni istanza di Harvard a Yale questa volta. Qualcuno vuole competere contro i Ivies qui in un altro accumulo di tutte queste idee? Vieni giù, sì. Come ti chiami? DINA: Dina. DAVID MALAN: Adina? DINA: Dina. DAVID MALAN: Dina, vieni giù. Va bene, Dina. Quindi, questo gioco diventa più difficile e più difficile, perché in questo gioco, c'è variabili in uso pure che sono costantemente tenere traccia di quale livello si è in gioco. Piacere di conoscerti. Vieni qui intorno. E così l'obiettivo qui è quello di ordinare di rendere il vostro modo attraverso un labirinto che questo studente implementato. E proprio per preparare il terreno, ogni di queste immagini sullo schermo è proprio sprite, il suo carattere. Quindi questi erano da gatti di default, ma lo studente li cambiato ai vari loghi edere qui. E allora vedrai che proprio utilizzando condizioni e loop e funzioni e di più, si ottiene questo. [RIPRODUZIONE DI BRANI MUSICALI] [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Sì, ok. Sì, andare avanti. In primo luogo è molto facile livello. Hai appena avuto modo di andare laggiù. Ma ancora una volta, considerare, questo è solo un ciclo di ascolto per la freccia keys-- Su giù sinistra destra. E ora un blocco di rilevamento. Molto bella. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Molto bella. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Molto bella. Abbastanza facile, Crimson. Tutto ok. Levels-- uh-oh. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] E ancora, in questi tre creste di Harvard, basta logica dicendo che se sul bordo, rimbalzo. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] OK, quello che stai facendo è più interessante perché. Molto bella. Molto bella. Uh Oh. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Credo che bisogna sacrificare te stesso. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Veloce! [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Bello. Va bene. Otterrete esso. Si si! Molto bella. [INCORAGGIA] [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Bello! [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Fatto. Dai! In secondo luogo per ultimo livello. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Tutto ok. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Sì. Buon uso di variabili qui. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Sì. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Bello. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Va bene. Abbiamo avuto modo di arrivare alla fine. Là. Oh! [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Potrebbe funzionare oggi in ritardo, ma sta andando essere valsa la pena. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Puoi farlo! Sì! [INCORAGGIA] [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Questo è davvero difficile. [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Vi daremo altre due vite. Puoi farlo? [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO"] Tutto ok. Che ne dite di una grande rotonda di applausi comunque. You got a seconda di ultimo livello. Grazie. [APPLAUSI] Quindi questo è solo per dire quanto si può fare con questo genere di cose. E rendersi conto, anche, che quando pezzi del puzzle non exist-- e in effetti, questo sta per essere uno dei poteri con il primo problema set e beyond-- è quello di effettivamente creare il proprio. E questo è solo un frammento di uno degli esempi sarete in grado di giocare con on-line, dove se non avete costruito in Scratch qualcosa di simile a un pezzo di puzzle tosse, si può effettivamente fare da soli. E così tutti questo e molto altro vi aspetta. E proprio per dipingere una finale immagine di ciò che è davvero avanti in serbo per la classe per voi, sulla base di alcune immagini da compagni di classe passato, mi permetta di abbassare le luci per l'ultima volta e vi mostrerà CS50. [RIPRODUZIONE DI BRANI MUSICALI] Tutto ok. Questo è tutto per CS50. La torta è ora servito. [RIPRODUZIONE DI BRANI MUSICALI]