1 00:00:00,000 --> 00:00:03,440 >> [MUSIK SPELA] 2 00:00:03,440 --> 00:01:57,217 3 00:01:57,217 --> 00:02:00,710 >> [Applåder] 4 00:02:00,710 --> 00:02:05,700 5 00:02:05,700 --> 00:02:09,669 >> DAVID J. MALAN: Detta är CS50, Harvard University introduktion 6 00:02:09,669 --> 00:02:12,370 till den intellektuella företag av datavetenskap 7 00:02:12,370 --> 00:02:14,180 och konsten att programmeringen. 8 00:02:14,180 --> 00:02:17,530 Nu om du är bland dem som Varje år sitter här 9 00:02:17,530 --> 00:02:21,450 med lite nerver i ditt sinne, såsom att du inte tror att du hör hemma här, 10 00:02:21,450 --> 00:02:24,270 du tror att de flesta någon som sitter runt dig 11 00:02:24,270 --> 00:02:27,730 vet mycket mer än du, är verkligen bekvämare än du vid datorn 12 00:02:27,730 --> 00:02:30,430 vetenskap eller datorer mer allmänt, inser 13 00:02:30,430 --> 00:02:36,140 att 78% av de studenter som nu ta CS50 ha någon tidigare erfarenhet. 14 00:02:36,140 --> 00:02:39,570 >> I själva verket finns det 100 punkter där på displayen, 78 varav 15 00:02:39,570 --> 00:02:43,540 är fast grönt, vilket innebär att du, Om du är bland den demografiska, 16 00:02:43,540 --> 00:02:46,420 är i mycket gott sällskap här på ut. 17 00:02:46,420 --> 00:02:50,320 Och om du är i stället bland de 22% av CS50 studenter som gör faktiskt 18 00:02:50,320 --> 00:02:53,920 har tidigare erfarenhet, vare sig i gymnasiet eller något annat program, 19 00:02:53,920 --> 00:02:56,430 inse att du kommer också att utmanas i kursen. 20 00:02:56,430 --> 00:02:59,930 >> Inte nog med att vi har olika spår för studenter mindre bekväma och mer 21 00:02:59,930 --> 00:03:03,789 bekväm både i sektioner, vi också har så kallade hackers upplagor 22 00:03:03,789 --> 00:03:06,080 de flesta problem uppsättningar som kommer att utmana de elever 23 00:03:06,080 --> 00:03:09,650 med att ytterligare erfarenhet att undersöka liknande material 24 00:03:09,650 --> 00:03:12,140 men från en mer sofistikerad perspektiv. 25 00:03:12,140 --> 00:03:13,900 >> Men vad är datavetenskap? 26 00:03:13,900 --> 00:03:17,750 Tja, i slutändan, är det som kommer att materia som du utforska detta område inte är 27 00:03:17,750 --> 00:03:20,500 så mycket när du hamnar i förhållande till dina klasskamrater, 28 00:03:20,500 --> 00:03:25,350 men där du själv hamnar i vecka 12 kontra där du börjar här 29 00:03:25,350 --> 00:03:26,720 i vecka noll. 30 00:03:26,720 --> 00:03:31,850 Nu dator science-- ja, låt oss kalla det vetenskapen om computation-- 31 00:03:31,850 --> 00:03:35,910 där beräkningen är egentligen bara en fint sätt att säga, med lite input, 32 00:03:35,910 --> 00:03:39,460 producerar några utgång, och gör det genom att löpande algoritmer, 33 00:03:39,460 --> 00:03:43,700 uppsättningar av instruktioner för att lösa vissa problem på dessa insatsvaror 34 00:03:43,700 --> 00:03:48,460 i syfte att producera en utmatning eller lösning där du är intresserad. 35 00:03:48,460 --> 00:03:51,310 >> Så vi hade nyligen tillfälle att resa ut 36 00:03:51,310 --> 00:03:53,170 till Kalifornien för att träffa en alumn. 37 00:03:53,170 --> 00:03:54,650 Hon heter Susan Wojcicki. 38 00:03:54,650 --> 00:03:57,190 Och hon vill tala till dig här på video 39 00:03:57,190 --> 00:04:01,690 att vittna om hur tillämpliga och med bara en smak av dator 40 00:04:01,690 --> 00:04:03,770 vetenskap vid introduktionsnivå kan vara. 41 00:04:03,770 --> 00:04:06,870 Även om du inte går på att fullfölja datavetenskap som ett fält, 42 00:04:06,870 --> 00:04:09,330 eller till och med teknik, eller STEM mer allmänt, 43 00:04:09,330 --> 00:04:12,360 du ser, faktiskt, hur en viss Naturligtvis så påverkade hennes liv. 44 00:04:12,360 --> 00:04:16,630 Och hon bara tog det när hon var en senior här på Harvard College. 45 00:04:16,630 --> 00:04:19,482 >> Om vi ​​kunde dämpa belysningen för Susan. 46 00:04:19,482 --> 00:04:20,690 SUSAN Wojcicki: Hej, värld. 47 00:04:20,690 --> 00:04:22,100 Jag är Susan Wojcicki. 48 00:04:22,100 --> 00:04:24,110 Jag är VD för YouTube. 49 00:04:24,110 --> 00:04:29,150 Och jag tog CS50 när jag var en senior på Harvard 1990. 50 00:04:29,150 --> 00:04:31,220 Jag var faktiskt en historia och litteratur som huvudämne. 51 00:04:31,220 --> 00:04:36,760 >> Och min junior sommaren, Jag insåg att jag kanske 52 00:04:36,760 --> 00:04:39,060 ville lära sig något om datorer. 53 00:04:39,060 --> 00:04:40,930 Och så kom jag tillbaka. 54 00:04:40,930 --> 00:04:42,500 Jag tog CS50. 55 00:04:42,500 --> 00:04:46,940 Det var svårt, men det var det mest fantastiska klass jag tog. 56 00:04:46,940 --> 00:04:49,630 >> Det förändrade hur jag tänker på allt. 57 00:04:49,630 --> 00:04:55,810 Och när jag tog examen från Harvard 1990 åkte jag till Silicon Valley. 58 00:04:55,810 --> 00:04:57,140 Och jag har ett jobb. 59 00:04:57,140 --> 00:05:00,150 Och jag har jobbat i tech sedan dess. 60 00:05:00,150 --> 00:05:02,650 DAVID J. MALAN: Nu vad Susan nämnde inte i denna video, 61 00:05:02,650 --> 00:05:05,340 att det faktiskt var i hennes garage som Google själv var 62 00:05:05,340 --> 00:05:07,420 grundades av Larry och Sergey. 63 00:05:07,420 --> 00:05:11,169 >> Nu nådde vi också ut till våra vänner vid code.org, en organisation som 64 00:05:11,169 --> 00:05:13,460 under det senaste året har varit få människor i synnerhet 65 00:05:13,460 --> 00:05:16,520 entusiastiska över datavetenskap och programmering, i synnerhet. 66 00:05:16,520 --> 00:05:20,590 Men det är värt att notera att programmering inte datavetenskap i sig. 67 00:05:20,590 --> 00:05:22,090 Datavetenskap är inte programmering. 68 00:05:22,090 --> 00:05:24,560 Snarare programmering är bara en tool-- som ni alla 69 00:05:24,560 --> 00:05:27,510 kommer att vara allt för väl bekant med termins end-- 70 00:05:27,510 --> 00:05:30,650 så att du kan använda inte bara för att framtida kurser i CS 71 00:05:30,650 --> 00:05:33,670 men att oavsett fält från whence du kommer, inom humaniora, 72 00:05:33,670 --> 00:05:36,090 samhällsvetenskap, natur vetenskap, eller liknande. 73 00:05:36,090 --> 00:05:39,740 >> I själva verket tillåta några andra alumner och deras kollegor 74 00:05:39,740 --> 00:05:43,400 att tala om tillämplig av fältet som väntar. 75 00:05:43,400 --> 00:05:52,340 76 00:05:52,340 --> 00:05:57,350 >> BILL GATES: Jag var 13 när jag först fick tillgång till en dator. 77 00:05:57,350 --> 00:06:00,485 >> Jack Dorsey: Mina föräldrar köpte mig en Macintosh 1984 78 00:06:00,485 --> 00:06:01,640 när jag var åtta år gammal. 79 00:06:01,640 --> 00:06:02,990 >> Mark Zuckerberg: Jag var i sjätte klass. 80 00:06:02,990 --> 00:06:04,670 >> SPEAKER 1: Jag lärde mig att koda på college. 81 00:06:04,670 --> 00:06:09,080 >> Ruchi SANGHVI: Freshman år, först terminen, Introduktion till datalogi. 82 00:06:09,080 --> 00:06:11,850 >> BILL GATES: Jag skrev ett program som spelade tic-tac-toe. 83 00:06:11,850 --> 00:06:14,100 >> DREW HOUSTON: Jag tror det var ganska blygsam start. 84 00:06:14,100 --> 00:06:16,370 Jag tror det första programmet Jag skrev frågade saker som, 85 00:06:16,370 --> 00:06:17,820 vad är din favoritfärg? 86 00:06:17,820 --> 00:06:18,696 Eller hur gammal är du? 87 00:06:18,696 --> 00:06:21,070 ELENA SILENOK: jag först lärde mig hur man gör en grön cirkel 88 00:06:21,070 --> 00:06:23,670 och en röd fyrkant visas på skärmen. 89 00:06:23,670 --> 00:06:25,420 GABE NEWELL: Den första gången jag faktiskt haft 90 00:06:25,420 --> 00:06:27,360 något som kommit upp och säga, hej, värld. 91 00:06:27,360 --> 00:06:29,710 Och jag gjorde en dator göra det. 92 00:06:29,710 --> 00:06:30,850 Det var bara häpnadsväckande. 93 00:06:30,850 --> 00:06:33,224 >> Mark Zuckerberg: Att lära sig till programmet inte börja 94 00:06:33,224 --> 00:06:35,450 som vill lära alla datavetenskap 95 00:06:35,450 --> 00:06:38,630 eller försöker att behärska detta disciplin eller något liknande. 96 00:06:38,630 --> 00:06:41,591 Det började precis utanför för att jag ville göra det här en enkel sak. 97 00:06:41,591 --> 00:06:44,340 Jag ville göra något som var kul för mig och mina systrar. 98 00:06:44,340 --> 00:06:46,399 >> Och jag skrev den här lilla programmet. 99 00:06:46,399 --> 00:06:48,440 Och sedan i princip bara lagt lite för den. 100 00:06:48,440 --> 00:06:49,930 Och sedan när jag behövde att lära sig något nytt, 101 00:06:49,930 --> 00:06:52,210 Jag tittade upp, antingen i en bok eller på internet, 102 00:06:52,210 --> 00:06:53,240 och sedan lagt till lite till den. 103 00:06:53,240 --> 00:06:56,300 >> DREW HOUSTON: Det är verkligen inte i motsats till spela ett instrument eller något 104 00:06:56,300 --> 00:07:00,007 eller spela en sport. 105 00:07:00,007 --> 00:07:01,090 DAVID J. MALAN: Okej. 106 00:07:01,090 --> 00:07:04,120 Så låt oss nu faktiskt dyka i lite djupare. 107 00:07:04,120 --> 00:07:07,430 Vilka är dessa in-och utgångar att vi pratar om här? 108 00:07:07,430 --> 00:07:09,110 >> Så vad sägs om något enkelt? 109 00:07:09,110 --> 00:07:12,120 Du vet förmodligen, även om du har ingen kännedom datavetenskap 110 00:07:12,120 --> 00:07:16,570 helst, att datorer på något sätt använder och förstår bara nollor och ettor. 111 00:07:16,570 --> 00:07:20,500 Men hur kan det möjligen med tanke på hur mycket dagens stationära och bärbara datorer såväl 112 00:07:20,500 --> 00:07:21,280 kan göra? 113 00:07:21,280 --> 00:07:24,310 >> DNA av dagen, den enda alfabetet som de förstår 114 00:07:24,310 --> 00:07:26,410 är en nolla eller en etta. 115 00:07:26,410 --> 00:07:27,470 Tja, överväga detta. 116 00:07:27,470 --> 00:07:30,840 Vi, människor, tenderar att använda decimalsystemet. "December" som betyder 10. 117 00:07:30,840 --> 00:07:33,970 Och det är 10 eftersom vi har 10 siffror, 0 till nio. 118 00:07:33,970 --> 00:07:36,180 >> Nu datorer, däremot, tenderar att använda binär. 119 00:07:36,180 --> 00:07:37,270 "Bi" betyder två. 120 00:07:37,270 --> 00:07:39,560 Så de har en tendens att bara noll och ett använder. 121 00:07:39,560 --> 00:07:42,680 Men det visar sig, att även bara med ettor och nollor, som 122 00:07:42,680 --> 00:07:45,900 är ett tillräckligt stort alfabet som för att representera de flesta 123 00:07:45,900 --> 00:07:48,490 varje bit data du vill ha, oavsett om det är ett nummer, 124 00:07:48,490 --> 00:07:52,100 oavsett om det är en bokstav, oavsett om det är en bild eller en video på skärmen. 125 00:07:52,100 --> 00:07:57,140 >> Betänk till exempel, hur vi människor vanligtvis tolka detta nummer här. 126 00:07:57,140 --> 00:08:00,010 Detta är bara tre siffror, ett, två, tre. 127 00:08:00,010 --> 00:08:04,570 Men vi vet att det här numret medfött nu som 123. 128 00:08:04,570 --> 00:08:05,510 Men varför är det? 129 00:08:05,510 --> 00:08:07,570 >> Tja, om du tänker tillbaka till kanske skolan, 130 00:08:07,570 --> 00:08:11,700 du förmodligen fick lära sig att tänka på dessa siffror som att vara i kolumner, 131 00:08:11,700 --> 00:08:14,700 där man är i de hundratals plats, är de två i tiotalen, 132 00:08:14,700 --> 00:08:16,360 och de tre är i sådana rum. 133 00:08:16,360 --> 00:08:17,790 Varför är det faktiskt bra? 134 00:08:17,790 --> 00:08:19,665 Tja, tänk på super enkla aritmetiska 135 00:08:19,665 --> 00:08:22,219 att vi alla har varit gör i flera år nu. 136 00:08:22,219 --> 00:08:24,510 Effektivt, om du har en en i hundra rum, 137 00:08:24,510 --> 00:08:29,610 du gör den snabb matematik 100 gånger ett plus 10 gånger 2-- 138 00:08:29,610 --> 00:08:33,059 eftersom två är i tiotals plats-- plus 1 gånger 3-- 139 00:08:33,059 --> 00:08:34,830 eftersom tre är i sådana rum. 140 00:08:34,830 --> 00:08:37,039 Så, naturligtvis, om vi multiplicera faktiskt ut det här, 141 00:08:37,039 --> 00:08:39,600 vad vi verkligen representerar med denna pattern-- en 142 00:08:39,600 --> 00:08:46,150 två tre-- är 100 plus 20 plus 3, vilken, naturligtvis, är 123. 143 00:08:46,150 --> 00:08:51,130 >> Nu binärt, och datorer egentligen, i grunden talar samma språk 144 00:08:51,130 --> 00:08:51,680 att vi gör. 145 00:08:51,680 --> 00:08:53,400 De har bara en mindre alfabetet. 146 00:08:53,400 --> 00:08:57,100 Så datorer har bara nollor och kära till sitt förfogande. 147 00:08:57,100 --> 00:09:02,500 Så medan vi människor har i huvudsak befogenheter 10 i var och en av dessa places-- 148 00:09:02,500 --> 00:09:06,810 10 till noll, 10 till en, tio till de två, vilket ger dig 110 och 100 149 00:09:06,810 --> 00:09:07,700 respektive. 150 00:09:07,700 --> 00:09:12,140 >> Eftersom datorer har bara två värden de kan förstå, noll och ett, 151 00:09:12,140 --> 00:09:16,600 de måste använda olika värden i dessa kolumner, en, två, fyra. 152 00:09:16,600 --> 00:09:20,480 Och om vi höll på, åtta, 16, 32, 64, och så vidare. 153 00:09:20,480 --> 00:09:24,220 Men mönstret och mentala är exakt samma. 154 00:09:24,220 --> 00:09:27,340 >> Så genom denna logik, vem som helst, hur skulle Jag går omkring som representerar antalet 155 00:09:27,340 --> 00:09:28,530 en i binär? 156 00:09:28,530 --> 00:09:33,080 Om du har aldrig ens tänkt på det här förut, vad är din gut säger? 157 00:09:33,080 --> 00:09:33,777 >> PUBLIKEN: One. 158 00:09:33,777 --> 00:09:34,610 DAVID J. MALAN: One. 159 00:09:34,610 --> 00:09:35,660 Exakt. 160 00:09:35,660 --> 00:09:38,100 Vi behöver bara en en i ettor plats eftersom nollor 161 00:09:38,100 --> 00:09:40,610 räcker för att ge oss varken en fyra eller en två. 162 00:09:40,610 --> 00:09:42,440 Så ett gånger ett är lika med ett. 163 00:09:42,440 --> 00:09:43,940 Nu det blir lite intressant. 164 00:09:43,940 --> 00:09:46,830 Om jag vill representera i binära numret two-- men, 165 00:09:46,830 --> 00:09:49,790 igen, även om du har aldrig talat detta språk innan, 166 00:09:49,790 --> 00:09:54,680 hur gör vi representerar i binär värdet vi människor känner som två? 167 00:09:54,680 --> 00:09:55,570 Noll en nolla. 168 00:09:55,570 --> 00:09:57,620 Bara sätta den i kolumn som du vill ha det. 169 00:09:57,620 --> 00:09:59,560 >> Nu blir det ganska lätt nog nu. 170 00:09:59,560 --> 00:10:02,950 Så om jag vill representera tre-- det finns ingen tre spalt. 171 00:10:02,950 --> 00:10:06,770 Så, återigen, jag kan nu lägga till dessa värden tillsammans genom att sätta en man här. 172 00:10:06,770 --> 00:10:10,320 Så 2 gånger 1 plus 1 gånger 1 är, naturligtvis, 3. 173 00:10:10,320 --> 00:10:13,480 >> Nu det blir lite kul i att de som blir nu nollor. 174 00:10:13,480 --> 00:10:15,480 Och för att representera fyra, får jag det här. 175 00:10:15,480 --> 00:10:19,310 Och om vi öka långsamt här-- som skulle vara fem. 176 00:10:19,310 --> 00:10:20,700 Detta skulle vara sex. 177 00:10:20,700 --> 00:10:22,100 Detta skulle vara sju. 178 00:10:22,100 --> 00:10:25,310 >> Men nu verkar jag ha stöter på ett problem. 179 00:10:25,310 --> 00:10:30,520 Hur skulle jag gå om att representera eight-- skulle bli nästa värde. 180 00:10:30,520 --> 00:10:31,900 Ja, så vi behöver en ny bitar. 181 00:10:31,900 --> 00:10:33,899 Och, ja, om du har hört denna fras förut, 182 00:10:33,899 --> 00:10:37,380 bitar, det är bara en förkortning för binär siffra, noll eller ett. 183 00:10:37,380 --> 00:10:41,520 >> Och så jag råkar representera endast tre sådana bitar här. 184 00:10:41,520 --> 00:10:44,900 Men om jag hade ett sätt att lagra inte tre olika bitar, men fyra, 185 00:10:44,900 --> 00:10:47,250 säkert jag kan representera åtta, och sedan nio, och sedan 186 00:10:47,250 --> 00:10:49,400 10, och till och med högre och högre. 187 00:10:49,400 --> 00:10:52,140 >> Men som sedan kallar ifrågasätta hur vi kan 188 00:10:52,140 --> 00:10:54,540 gå företräder dessa saker i första hand. 189 00:10:54,540 --> 00:10:56,950 Det är en sak att dra dem upp här på en bild, 190 00:10:56,950 --> 00:11:00,660 men hur ska du representera dem om du är en mekanisk anordning? 191 00:11:00,660 --> 00:11:04,390 Vad en dator gör att representerar de in-och utgångar som 192 00:11:04,390 --> 00:11:09,020 fundamentalt definierar beräkning i slutet av dagen? 193 00:11:09,020 --> 00:11:12,090 >> Nå, hur är det något super enkelt så här? 194 00:11:12,090 --> 00:11:13,200 Det är bara en glödlampa. 195 00:11:13,200 --> 00:11:15,460 Och jag kan utlösa detta glödlampa att gå på 196 00:11:15,460 --> 00:11:17,920 genom att vrida lite el på och tillåter elektroner 197 00:11:17,920 --> 00:11:22,585 att strömma genom, som ändrar sin stat eller dess värde, så att säga. 198 00:11:22,585 --> 00:11:24,460 Till exempel är denna en gammal skola skrivbordslampa 199 00:11:24,460 --> 00:11:27,250 här med en sådan glödlampa i den. 200 00:11:27,250 --> 00:11:29,940 Och just nu är det inte verkligen gör något användbart. 201 00:11:29,940 --> 00:11:32,680 Men så fort jag ansluter den till ett eluttag 202 00:11:32,680 --> 00:11:36,390 och sedan använda denna switch-- eller Vi kan till och med kalla det en transistor 203 00:11:36,390 --> 00:11:39,970 eller se det som such-- Jag kan nu representera antingen 204 00:11:39,970 --> 00:11:44,120 detta värde, där glödlampan är uppenbarligen av, eller detta värde. 205 00:11:44,120 --> 00:11:46,060 Detta värde eller detta värde. 206 00:11:46,060 --> 00:11:47,520 Detta värde och så vidare. 207 00:11:47,520 --> 00:11:51,220 >> Så insidan av en dator, förmodligen, är mycket mindre bitar av hårdvara, 208 00:11:51,220 --> 00:11:52,970 men att i slutet av dagen helt enkelt ha 209 00:11:52,970 --> 00:11:55,360 använda electricity-- kanske fånga den-- 210 00:11:55,360 --> 00:11:59,730 och sedan antingen behålla något eller hålla något av. 211 00:11:59,730 --> 00:12:02,021 Naturligtvis är detta inte särskilt intressant att göra 212 00:12:02,021 --> 00:12:03,270 med bara en enda glödlampa. 213 00:12:03,270 --> 00:12:06,726 >> Faktum är hur högt kan jag räkna in binärt med denna skrivbordslampa här? 214 00:12:06,726 --> 00:12:07,420 >> PUBLIKEN: One. 215 00:12:07,420 --> 00:12:08,545 >> DAVID J. MALAN: En, eller hur? 216 00:12:08,545 --> 00:12:11,020 Jag behöver mer skrivbordslampor om jag egentligen vill räkna högre. 217 00:12:11,020 --> 00:12:12,210 Men vi kan göra bättre än så. 218 00:12:12,210 --> 00:12:14,460 Eftersom glödlampor som Vi har lagt in dessa saker 219 00:12:14,460 --> 00:12:17,730 är faktiskt snyggare glödlampor än förr skulle tillåta. 220 00:12:17,730 --> 00:12:20,310 Och de är faktiskt nätverks glödlampor. 221 00:12:20,310 --> 00:12:23,160 Och klasar av företag göra dessa saker i dessa dagar. 222 00:12:23,160 --> 00:12:25,190 >> Men det visar sig att detta i synnerhet 223 00:12:25,190 --> 00:12:27,680 kommer med en funktion som innebär att Du kan ändra dess färger. 224 00:12:27,680 --> 00:12:30,810 Så till exempel, om du prydd ditt studentrum 225 00:12:30,810 --> 00:12:33,200 med några av dessa ljus lökar, beroende på ditt humör, 226 00:12:33,200 --> 00:12:35,366 beroende på vem som kommer in, beroende på vädret, 227 00:12:35,366 --> 00:12:37,360 beroende på tiden på dagen, kan du faktiskt 228 00:12:37,360 --> 00:12:40,300 ändra färg på lökarna i ditt rum. 229 00:12:40,300 --> 00:12:43,740 Och det beror på att dessa ljus glödlampor och andra gillar det har vad är 230 00:12:43,740 --> 00:12:48,010 kallas ett API, ett program programmeringsgränssnitt, som 231 00:12:48,010 --> 00:12:50,920 är ett ämne som du kommer att vara känner av terminen slut. 232 00:12:50,920 --> 00:12:53,710 >> Och detta är bara en fantasi, kryptiska sätt att säga, 233 00:12:53,710 --> 00:12:57,570 du kan programmera dessa ljus lökar att göra din budgivning. 234 00:12:57,570 --> 00:13:00,360 Du kan skicka meddelanden till dem precis som du, en människa, 235 00:13:00,360 --> 00:13:03,640 kan skicka ett meddelande till en webbserver säga, ge mig dagens nyheter 236 00:13:03,640 --> 00:13:05,110 eller ge mig min e-post. 237 00:13:05,110 --> 00:13:08,010 >> Du kan skicka mer svårbegripliga meddelanden till dessa lampor 238 00:13:08,010 --> 00:13:09,700 att säga, sätta på och stänga av. 239 00:13:09,700 --> 00:13:11,370 Men det är inte så intressant. 240 00:13:11,370 --> 00:13:14,280 Man kan säga, slå på rött, slå på green, slå på blå, 241 00:13:14,280 --> 00:13:15,990 alla med samma glödlampa. 242 00:13:15,990 --> 00:13:20,990 Och du kan till och med, med lite mer kunniga, säger, vända dig till blå 243 00:13:20,990 --> 00:13:24,710 när det är en dyster dag utanför, till exempel. 244 00:13:24,710 --> 00:13:27,910 Det kan faktiskt patcha in en väder API och reda 245 00:13:27,910 --> 00:13:32,260 hur vädret är, eller den tid på dagen, eller andra sådana triggers. 246 00:13:32,260 --> 00:13:35,550 >> Så i själva verket två av CS50 egna anställda, 247 00:13:35,550 --> 00:13:38,827 Dan Bradley och Ansel Duff här, vänligen upphandlas 248 00:13:38,827 --> 00:13:40,410 oss en hel massa av dessa lampor. 249 00:13:40,410 --> 00:13:42,910 Och de byggde CS50 s första någonsin binära lökar, 250 00:13:42,910 --> 00:13:46,850 där vi har representerade här-- med dessa lekfull liten magnets-- 251 00:13:46,850 --> 00:13:49,780 de olika platshållare vi anspelade på bara lite sen. 252 00:13:49,780 --> 00:13:52,572 >> Så vägen hit är det kära plats, två, fyra. 253 00:13:52,572 --> 00:13:54,030 Och vi såg inte högre än så. 254 00:13:54,030 --> 00:13:55,613 Men, naturligtvis, de är potenser av två. 255 00:13:55,613 --> 00:13:59,490 Åtta, 16, 32, 64 och 128. 256 00:13:59,490 --> 00:14:03,320 Så om jag nu vill vara lite snyggare än att använda din gamla switch, 257 00:14:03,320 --> 00:14:07,310 Jag har här på denna iPad en super enkelt gränssnitt 258 00:14:07,310 --> 00:14:10,440 att Dan Bradley, en före detta student och nu undervisar karl, 259 00:14:10,440 --> 00:14:13,510 programed använda en del HTML och JavaScript, vilket 260 00:14:13,510 --> 00:14:15,685 är uppmärkning och programmering språk respektive. 261 00:14:15,685 --> 00:14:17,560 Och du kan förmodligen se-- även i back-- 262 00:14:17,560 --> 00:14:21,670 det är ett stort plus och ett stort minus, plus en knapp för varje av dessa lampor. 263 00:14:21,670 --> 00:14:25,740 Och vad detta kommer att tillåta mig att gör är till exempel klicka på plus 264 00:14:25,740 --> 00:14:28,250 och nu representerar, om Naturligtvis vilket nummer? 265 00:14:28,250 --> 00:14:28,750 One. 266 00:14:28,750 --> 00:14:30,220 Och jag kan slå det igen. 267 00:14:30,220 --> 00:14:31,480 Två. 268 00:14:31,480 --> 00:14:32,800 Tre. 269 00:14:32,800 --> 00:14:33,950 Fyra. 270 00:14:33,950 --> 00:14:35,200 Fem. 271 00:14:35,200 --> 00:14:36,360 Sex. 272 00:14:36,360 --> 00:14:36,880 Sju. 273 00:14:36,880 --> 00:14:40,740 >> Och här nu får vi att rollover, men vi har en fjärde bit denna tid, 274 00:14:40,740 --> 00:14:42,180 så nu har vi åtta. 275 00:14:42,180 --> 00:14:44,000 Så vi kunde göra detta under ganska lång tid. 276 00:14:44,000 --> 00:14:46,530 I själva verket, som en sidoreplik, hur högt kan vi räkna? 277 00:14:46,530 --> 00:14:48,318 Någon? 278 00:14:48,318 --> 00:14:49,270 >> PUBLIKEN: 255. 279 00:14:49,270 --> 00:14:51,420 >> DAVID J. MALAN: 255, eller hur? 280 00:14:51,420 --> 00:14:54,900 Oroa dig inte för mycket om matematik för nu, men det är verkligen ingen dålig siffra. 281 00:14:54,900 --> 00:14:59,140 Men det faktiskt inte bunden bara hur många bitar av information, 282 00:14:59,140 --> 00:15:01,760 som ett brev, eller en grafisk att vi kan representera. 283 00:15:01,760 --> 00:15:02,697 >> Men oavsett för nu. 284 00:15:02,697 --> 00:15:04,530 Jag kommer att gå vidare och slå dem alla. 285 00:15:04,530 --> 00:15:09,670 Och om jag kunde skulle jag vilja be om volontär, vår första volunteer-- 286 00:15:09,670 --> 00:15:11,342 åh, hello-- på scenen. 287 00:15:11,342 --> 00:15:14,050 Fångsten är att du måste vara bekväm visas, eftersom du tydligt 288 00:15:14,050 --> 00:15:17,421 är framför allt dina klasskamrater, samt på internet. 289 00:15:17,421 --> 00:15:20,420 Och låt mig se lite längre än i-- vad sägs om här i vit skjorta? 290 00:15:20,420 --> 00:15:20,920 Och lämna dig. 291 00:15:20,920 --> 00:15:22,071 Kom upp. 292 00:15:22,071 --> 00:15:22,820 Vad heter du? 293 00:15:22,820 --> 00:15:23,760 >> PUBLIKEN: Jackie. 294 00:15:23,760 --> 00:15:24,718 >> DAVID J. MALAN: Jackie. 295 00:15:24,718 --> 00:15:25,820 Jackie, kom upp. 296 00:15:25,820 --> 00:15:29,820 Så vad finns det också på denna iPad är en knapp som heter Game Mode. 297 00:15:29,820 --> 00:15:32,570 Och detta spelläge är kommer att tillåta mig att mata 298 00:15:32,570 --> 00:15:35,780 på förhand en viss decimal nummer, siffrorna vi människor är 299 00:15:35,780 --> 00:15:36,760 bekant med. 300 00:15:36,760 --> 00:15:39,820 Och då kommer du att utmanas för att använda knapparna 301 00:15:39,820 --> 00:15:42,140 på top-- en för var och en av dessa bulbs-- 302 00:15:42,140 --> 00:15:45,050 att faktiskt räkna ut mönstret av glödlampor 303 00:15:45,050 --> 00:15:46,970 som representerar det aktuella numret. 304 00:15:46,970 --> 00:15:47,790 >> Och jag är ledsen, vad var ditt namn igen? 305 00:15:47,790 --> 00:15:48,250 >> PUBLIKEN: Jackie. 306 00:15:48,250 --> 00:15:48,620 >> DAVID J. MALAN: Jackie. 307 00:15:48,620 --> 00:15:48,920 Okej. 308 00:15:48,920 --> 00:15:49,740 Trevligt att träffas. 309 00:15:49,740 --> 00:15:54,580 >> Så låt mig gå vidare och program för världen att se hur många 15. 310 00:15:54,580 --> 00:15:56,360 Vi ska hålla det litet till en början här. 311 00:15:56,360 --> 00:15:58,240 Och jag kommer att gå in i Spelläge. 312 00:15:58,240 --> 00:16:01,160 Och jag kommer att specificera, ge oss numret 15. 313 00:16:01,160 --> 00:16:01,900 >> OK. 314 00:16:01,900 --> 00:16:05,510 Och nu med alla watching-- om du vill kanske stå på detta sätt, 315 00:16:05,510 --> 00:16:09,970 eftersom det kommer att radas up-- gå vidare och växla de åtta knapparna längs toppen 316 00:16:09,970 --> 00:16:12,530 att vända lamporna på eller av som du tycker passar. 317 00:16:12,530 --> 00:16:13,530 >> PUBLIKEN: OK. 318 00:16:13,530 --> 00:16:17,720 >> DAVID J. MALAN: Och inget fusk genom att slå plus 15 gånger. 319 00:16:17,720 --> 00:16:19,275 Åh, vi kommer att göra det. 320 00:16:19,275 --> 00:16:20,069 >> PUBLIK: Åh, vänta. 321 00:16:20,069 --> 00:16:20,610 Jag är så ledsen. 322 00:16:20,610 --> 00:16:22,660 >> DAVID J. MALAN: Du kan också aktivera glödlampor på individuellt 323 00:16:22,660 --> 00:16:24,076 med var och en av dessa knappar på toppen. 324 00:16:24,076 --> 00:16:24,844 PUBLIK: Åh, OK. 325 00:16:24,844 --> 00:16:27,429 Så det skulle vara like-- 326 00:16:27,429 --> 00:16:28,220 DAVID J. MALAN: OK. 327 00:16:28,220 --> 00:16:29,100 Så nu har vi åtta. 328 00:16:29,100 --> 00:16:31,280 Så låt oss göra en paus för publiken att engagera sig här. 329 00:16:31,280 --> 00:16:34,300 Vilket nummer är Jackie närvarande representerar? 330 00:16:34,300 --> 00:16:34,800 11. 331 00:16:34,800 --> 00:16:35,730 Så vi är nästan där. 332 00:16:35,730 --> 00:16:38,360 333 00:16:38,360 --> 00:16:39,630 Och utmärkt. 334 00:16:39,630 --> 00:16:41,487 Så vi har vår första vinnare. 335 00:16:41,487 --> 00:16:42,445 Gratulerar. 336 00:16:42,445 --> 00:16:48,200 >> Och vi trodde att vi skulle ha några fantastiska giveaways. 337 00:16:48,200 --> 00:16:50,860 Om du vill vara en sådan dorm rum här på campus, 338 00:16:50,860 --> 00:16:56,126 du kan själv ha en slutprojekt använder nu detta API, tack till Jackie. 339 00:16:56,126 --> 00:16:57,050 Så nu-- 340 00:16:57,050 --> 00:16:58,902 >> [Applåder] 341 00:16:58,902 --> 00:17:01,690 342 00:17:01,690 --> 00:17:04,839 >> --Om vi ​​kunde, ytterligare en såsom runt denna. 343 00:17:04,839 --> 00:17:07,690 Åh, nu alla vill vissa glödlampor. 344 00:17:07,690 --> 00:17:11,790 För den så kallade hackare upplagan, vi kommer att rampa upp en-- oh, 345 00:17:11,790 --> 00:17:12,770 ja, intetsägande. 346 00:17:12,770 --> 00:17:16,010 Jag tror att du kommer upp nu Om din hand är på väg ner. 347 00:17:16,010 --> 00:17:16,800 Vad heter du? 348 00:17:16,800 --> 00:17:17,424 >> PUBLIKEN: Alex. 349 00:17:17,424 --> 00:17:19,440 DAVID J. MALAN: Alex, kom hit. 350 00:17:19,440 --> 00:17:26,190 Så för Alex, kommer vi att program i ett något större antal. 351 00:17:26,190 --> 00:17:27,790 Kanske för. 352 00:17:27,790 --> 00:17:29,110 Antalet 50. 353 00:17:29,110 --> 00:17:29,744 >> PUBLIKEN: OK. 354 00:17:29,744 --> 00:17:31,660 DAVID J. MALAN: Men, som Jag sa-- och du kanske 355 00:17:31,660 --> 00:17:33,580 vill stå här så att knapparna radas upp 356 00:17:33,580 --> 00:17:37,115 som du skulle expect-- men jag gjorde kalla detta hacker upplagan. 357 00:17:37,115 --> 00:17:47,125 Så-- lycka till! 358 00:17:47,125 --> 00:17:48,416 >> [LAUGHTER] 359 00:17:48,416 --> 00:17:58,570 360 00:17:58,570 --> 00:18:02,050 >> Du kommer att kunna vända dem om du-- OK. 361 00:18:02,050 --> 00:18:02,880 Utmärkt. 362 00:18:02,880 --> 00:18:03,675 Underbart. 363 00:18:03,675 --> 00:18:04,341 Gratulerar. 364 00:18:04,341 --> 00:18:08,730 >> [Applåder] 365 00:18:08,730 --> 00:18:10,355 Jag antar att jag borde betala. 366 00:18:10,355 --> 00:18:11,830 Grattis till Alex också. 367 00:18:11,830 --> 00:18:12,330 OK. 368 00:18:12,330 --> 00:18:15,550 >> Så den ultimata takeaway här är förhoppningsvis, ärligt talat, 369 00:18:15,550 --> 00:18:18,109 den simplicity-- den enkelhet med vilken 370 00:18:18,109 --> 00:18:20,650 du kan få några trevliga ljus lökar, uppenbarligen i [ohörbart]. 371 00:18:20,650 --> 00:18:23,000 Men de representerar, slutligen, samma idéer 372 00:18:23,000 --> 00:18:26,310 med vilka vi människor är redan alltför välbekant. 373 00:18:26,310 --> 00:18:28,660 Så vad kanske nästa steg vara i progression 374 00:18:28,660 --> 00:18:30,920 för att försöka göra något intressant med uppgifter 375 00:18:30,920 --> 00:18:34,950 och representerar indata som inte bara siffror men är kanske bokstäver eller mer? 376 00:18:34,950 --> 00:18:37,820 >> Tja, det visar sig att den datorn världen, i många år, 377 00:18:37,820 --> 00:18:43,300 helt enkelt antagit ett godtyckligt men en konsekvent standard som mappar siffror 378 00:18:43,300 --> 00:18:44,610 till bokstäverna i alfabetet. 379 00:18:44,610 --> 00:18:47,120 Till exempel, här är en utdrag från denna kartläggning. 380 00:18:47,120 --> 00:18:48,350 Det kallas Ascii. 381 00:18:48,350 --> 00:18:53,220 A-S-C-I-I. Och det är helt enkelt en tabell som mappar versaler letters-- 382 00:18:53,220 --> 00:18:56,600 i detta case-- till decimaltal. 383 00:18:56,600 --> 00:18:57,890 >> Men vad är innebörden? 384 00:18:57,890 --> 00:19:01,090 Tja, om du verkligen vill representera något som e-post eller någon text 385 00:19:01,090 --> 00:19:03,310 på en webbsida, du uppenbarligen vill visa 386 00:19:03,310 --> 00:19:06,100 mänskliga bokstäverna i alfabet, inte siffror. 387 00:19:06,100 --> 00:19:09,140 Så beroende på ramen för programmet 388 00:19:09,140 --> 00:19:12,600 att en användare använder sig av, om det är en webbläsare eller e-postklient, 389 00:19:12,600 --> 00:19:16,090 nummer kan säkert vara tolkas som bokstäver. 390 00:19:16,090 --> 00:19:20,290 Det vill säga, mönster av bitar kan lätt tolkas som bokstäver. 391 00:19:20,290 --> 00:19:24,700 >> Och så vad vi kan få är bokstaven A varelse 392 00:19:24,700 --> 00:19:28,410 representeras som 65, B representeras som 66. 393 00:19:28,410 --> 00:19:30,900 Så om vi har en super korta ord, som hi, 394 00:19:30,900 --> 00:19:35,740 vad en dator skulle i slutändan butik i decimal men egentligen i binär, 395 00:19:35,740 --> 00:19:40,070 med användning av någon sekvens av bitar, utnyttja lite av el på något sätt, 396 00:19:40,070 --> 00:19:44,010 skulle vara de två siffrorna 72 och 73. 397 00:19:44,010 --> 00:19:46,780 >> Men mönstret av bitar som representerar dessa värden. 398 00:19:46,780 --> 00:19:49,820 Så dessa är då hur vi kan representerar våra in-och utgångar. 399 00:19:49,820 --> 00:19:52,630 Och det räcker att säga, vi kan göra mer komplexa representationer 400 00:19:52,630 --> 00:19:56,450 slutligen med saker som grafik, video, musik och mer 401 00:19:56,450 --> 00:19:58,190 som vi får se senare denna term. 402 00:19:58,190 --> 00:20:00,630 >> Så att bara lämnar sedan algoritmer, dessa uppsättningar 403 00:20:00,630 --> 00:20:03,490 av instruktioner som vi lösa faktiska problem. 404 00:20:03,490 --> 00:20:05,820 Vi passerar på insatsvaror till algoritmer. 405 00:20:05,820 --> 00:20:09,630 Och dessa algoritmer producerar utgångar, förhoppningsvis korrekta utgångar 406 00:20:09,630 --> 00:20:14,160 och förhoppningsvis också, effektivt samlat utgångar. 407 00:20:14,160 --> 00:20:16,890 Med andra ord, det är en sak att genomföra något fullständigt. 408 00:20:16,890 --> 00:20:20,790 Det är en annan sak att genomföra något bra eller effektivt. 409 00:20:20,790 --> 00:20:23,690 >> Till exempel, en demonstration att vi är förtjust i under loppet 410 00:20:23,690 --> 00:20:24,460 är detta en. 411 00:20:24,460 --> 00:20:26,345 Men dessa saker blir allt svårare att hitta. 412 00:20:26,345 --> 00:20:28,930 Men detta är verkligen en gammal skola telefonbok, inuti vilken 413 00:20:28,930 --> 00:20:32,580 är 1.000 plus sidor namn och telefonnummer. 414 00:20:32,580 --> 00:20:34,830 Och om jag ville söka upp någon i den här telefonboken, 415 00:20:34,830 --> 00:20:38,640 Jag kunde helt enkelt göra en mycket naiv algoritm. 416 00:20:38,640 --> 00:20:42,150 Jag skulle kunna öppna upp till den första sidan, och Jag skulle kunna börja leta efter, säg, någon 417 00:20:42,150 --> 00:20:43,130 vid namn Mike Smith. 418 00:20:43,130 --> 00:20:46,160 Och om han inte är den första sida, jag vidare till den andra, 419 00:20:46,160 --> 00:20:49,120 och sedan till den tredje, och sedan till den fjärde, och så vidare, 420 00:20:49,120 --> 00:20:51,430 tills jag hittar äntligen Mike Smith. 421 00:20:51,430 --> 00:20:53,010 >> Nu är att algoritmen korrekt? 422 00:20:53,010 --> 00:20:53,896 >> PUBLIKEN: Ja. 423 00:20:53,896 --> 00:20:54,248 >> DAVID J. MALAN: Ja. 424 00:20:54,248 --> 00:20:56,039 Om han är där, jag småningom hitta honom. 425 00:20:56,039 --> 00:20:58,820 Men det är utan tvekan inte mycket effektiva, absolut inte snabbt, 426 00:20:58,820 --> 00:21:01,200 eftersom, min Gud, varför är jag slösa min tid vändning 427 00:21:01,200 --> 00:21:04,500 igenom alla dessa sidor när jag kunde säkert göra det fysiskt snabbare? 428 00:21:04,500 --> 00:21:08,210 >> Tja, en liten optimering, så att tala, kanske inte en sida i taget, 429 00:21:08,210 --> 00:21:11,610 utom två, fyra, sex, åtta, 10. 430 00:21:11,610 --> 00:21:12,725 Fortfarande korrekt? 431 00:21:12,725 --> 00:21:14,030 >> PUBLIK: Nej 432 00:21:14,030 --> 00:21:17,040 >> DAVID J. MALAN: Så nej om jag för exempel hoppa över Mike Smith. 433 00:21:17,040 --> 00:21:20,530 Men så länge jag tillbaka pedalen en sida, om jag skjuta honom, 434 00:21:20,530 --> 00:21:25,240 Vi kanske skulle kunna rätta till det som kan annars vara en gotcha. 435 00:21:25,240 --> 00:21:26,020 >> Men är det bättre? 436 00:21:26,020 --> 00:21:27,469 Är det snabbare? 437 00:21:27,469 --> 00:21:28,010 Jag menar, ja. 438 00:21:28,010 --> 00:21:30,950 Det är bokstavligen dubbelt så snabbt om jag gör två sidor i taget. 439 00:21:30,950 --> 00:21:35,720 Så om jag hade ursprungligen 1.000 sidor, Nu har jag bara att vända 500 gånger, 440 00:21:35,720 --> 00:21:39,429 inte helt 1.000 sidor för att få potentiellt i värsta fall 441 00:21:39,429 --> 00:21:41,220 till änden av telefonen bok, där någon 442 00:21:41,220 --> 00:21:44,380 som Mike Smith eller någon med ett senare namn kan faktiskt vara. 443 00:21:44,380 --> 00:21:46,540 >> Men, naturligtvis, vi människor är verkligen inte 444 00:21:46,540 --> 00:21:49,250 kommer att göra det, absolut inte på denna punkt i våra liv. 445 00:21:49,250 --> 00:21:51,454 Vad är en rimlig människa sannolikt kommer att göra? 446 00:21:51,454 --> 00:21:52,870 PUBLIK: Gå direkt till the9 S. 447 00:21:52,870 --> 00:21:53,860 DAVID J. MALAN: Gå direkt till S? 448 00:21:53,860 --> 00:21:55,563 Hur går jag direkt till S? 449 00:21:55,563 --> 00:21:57,342 >> PUBLIK: Rip den på mitten. 450 00:21:57,342 --> 00:21:59,050 DAVID J. MALAN: Tja, det finns ingen märkning. 451 00:21:59,050 --> 00:22:02,116 Så, ja, om det verkligen var en etikett eller en klibbig flik för S, 452 00:22:02,116 --> 00:22:03,240 Vi ska hoppa där. 453 00:22:03,240 --> 00:22:05,420 Men det är ganska harmlöst. 454 00:22:05,420 --> 00:22:08,480 Så det bästa jag kan göra är ungefär till S sektionen eller kanske grovt 455 00:22:08,480 --> 00:22:09,650 i mitten. 456 00:22:09,650 --> 00:22:12,110 Men nyckeln takeaway nu-- och intuition 457 00:22:12,110 --> 00:22:14,430 att du har tagit för beviljats ​​för år probably-- 458 00:22:14,430 --> 00:22:17,103 är det vad gör ni nu vet om det här problemet? 459 00:22:17,103 --> 00:22:19,320 >> PUBLIK: [ohörbart] 460 00:22:19,320 --> 00:22:22,290 >> DAVID J. MALAN: Mike Smith är säkert inte i denna halv av problemet 461 00:22:22,290 --> 00:22:25,600 eftersom Smith kommer efter mitten vilket är ungefär M sektionen, 462 00:22:25,600 --> 00:22:26,510 det verkar vara. 463 00:22:26,510 --> 00:22:30,340 Så som ni kanske har sett på Visitas, kan vi nu bokstav 464 00:22:30,340 --> 00:22:31,737 riva detta problem i hälften. 465 00:22:31,737 --> 00:22:32,320 PUBLIK: Woo! 466 00:22:32,320 --> 00:22:33,690 DAVID J. MALAN: Det är blir lättare och lättare. 467 00:22:33,690 --> 00:22:34,666 [Applåder] 468 00:22:34,666 --> 00:22:36,618 Så där ja. 469 00:22:36,618 --> 00:22:39,060 [LAUGHTER] 470 00:22:39,060 --> 00:22:41,870 Och nu har jag i grunden har samma problem, 471 00:22:41,870 --> 00:22:43,866 men det är bokstavligen hälften så stor. 472 00:22:43,866 --> 00:22:45,240 Jag letar fortfarande efter Mike Smith. 473 00:22:45,240 --> 00:22:47,950 Och jag vågar påstå, jag kan fortfarande leta efter honom på samma sätt, 474 00:22:47,950 --> 00:22:51,200 att dela upp problemet i halv igen, riva problemet igen 475 00:22:51,200 --> 00:22:54,140 på mitten, som nu lämnar mig med ett problem en fjärdedel av storleken, 476 00:22:54,140 --> 00:22:58,710 dramatiskt kasta att hälften bort, och upprepa processen om och om igen 477 00:22:58,710 --> 00:23:01,150 och igen, en blick ner vid varje punkt för att se 478 00:23:01,150 --> 00:23:03,400 Om Mike Smith är på sidan i fråga. 479 00:23:03,400 --> 00:23:06,190 >> Nu om jag gör denna rätt, i slutändan jag hittar mig själv 480 00:23:06,190 --> 00:23:11,085 med bara en sida där Mike Smith är om han är verkligen i telefonboken. 481 00:23:11,085 --> 00:23:13,510 Naturligtvis kunde jag aldrig ringa Mike igen. 482 00:23:13,510 --> 00:23:18,800 Men poängen här är att om vi började med 1.000 sidor, min första algoritmen, 483 00:23:18,800 --> 00:23:21,620 vända sida, kanske 1.000 times-- definitivt mindre eftersom det är 484 00:23:21,620 --> 00:23:26,430 ett namn och inte ett Ö namn, utan som många som 1.000 sidor potentiellt. 485 00:23:26,430 --> 00:23:27,590 >> Andra algoritm, bättre. 486 00:23:27,590 --> 00:23:28,480 500 sidor. 487 00:23:28,480 --> 00:23:31,230 Tredje algoritm, fast, hur många steg skulle det 488 00:23:31,230 --> 00:23:35,520 ta för att dela upp en 1.000 sida telefonbok i hälften så? 489 00:23:35,520 --> 00:23:37,000 10, ge eller ta. 490 00:23:37,000 --> 00:23:40,770 Så bara genom att bläddra igenom det telefonbok, dykning och erövra, 491 00:23:40,770 --> 00:23:46,130 så att säga, 10 gånger, kommer jag att göra min väg ner till bara en enda sida. 492 00:23:46,130 --> 00:23:48,880 >> Och så att vi kan fånga denna intuition Nu lite grafiskt 493 00:23:48,880 --> 00:23:51,320 om du bara överväga denna super enkel graf. 494 00:23:51,320 --> 00:23:55,470 Vi är på x-axeln, eller horisontell axeln, är storleken på mitt problem, 495 00:23:55,470 --> 00:23:57,100 antalet sidor i telefonboken. 496 00:23:57,100 --> 00:23:59,040 Och datavetare allmänhet vill kalla 497 00:23:59,040 --> 00:24:02,180 storleken på ett problem n, där n är bara några variabel som 498 00:24:02,180 --> 00:24:04,310 represents-- i detta case-- antal sidor. 499 00:24:04,310 --> 00:24:07,412 >> Den vertikala, eller y-axeln, här är kommer att vara tid att lösa, 500 00:24:07,412 --> 00:24:09,870 Kanske antalet sidan varv, Kanske antalet sekunder 501 00:24:09,870 --> 00:24:11,960 eller minuter, oavsett din måttenhet är. 502 00:24:11,960 --> 00:24:14,337 Och så denna röda linjen representerar den första algoritmen, 503 00:24:14,337 --> 00:24:16,670 eftersom det finns en 1-1 förhållandet mellan antalet 504 00:24:16,670 --> 00:24:18,880 sidor och hur lång tid det tar. 505 00:24:18,880 --> 00:24:22,240 >> Om Verizon fördubblar antalet sidor i telefonboken nästa år, 506 00:24:22,240 --> 00:24:24,590 mitt spring time-- den tid som krävs för att exekvera 507 00:24:24,590 --> 00:24:27,610 att första algorithm-- fördubblas i värsta fall. 508 00:24:27,610 --> 00:24:30,690 Men den andra algoritmen, där jag vända med två, 509 00:24:30,690 --> 00:24:33,650 kräver mindre tid för en given storlek problem. 510 00:24:33,650 --> 00:24:36,090 Så om jag har den här många sidor här-- Grafiska 511 00:24:36,090 --> 00:24:38,870 att den gula linjen föreslår mindre tid att lösa. 512 00:24:38,870 --> 00:24:42,490 Och faktiskt, står det, vi ska säga, n över två. 513 00:24:42,490 --> 00:24:47,717 >> Men vad är formen på den tredje och sista kurvan kommer att se ut? 514 00:24:47,717 --> 00:24:50,800 Ja, det verkligen kommer att look-- I vet inte vad du skulle säga. 515 00:24:50,800 --> 00:24:52,300 Men låt oss se vad du skulle säga. 516 00:24:52,300 --> 00:24:53,280 >> PUBLIK: Gillar det. 517 00:24:53,280 --> 00:24:57,060 >> DAVID J. MALAN: Det kommer att se ut detta, en logaritmisk slope-- exactly-- 518 00:24:57,060 --> 00:24:59,770 där du har denna nyfikna lutning. 519 00:24:59,770 --> 00:25:01,235 Det är inte längre en rak linje. 520 00:25:01,235 --> 00:25:05,000 Och vad är övertygande om det är att även om diagrammet är nu avskurna, 521 00:25:05,000 --> 00:25:07,790 du kan extrapolera i ditt tänka att det gröna linjen inte är 522 00:25:07,790 --> 00:25:10,060 kommer att öka i höjden så mycket 523 00:25:10,060 --> 00:25:13,500 när du går vidare ner den horisontella axeln. 524 00:25:13,500 --> 00:25:15,890 >> Indeed, Verizon för Exempelvis kan fördubblas 525 00:25:15,890 --> 00:25:19,100 antalet sidor i telefonen bok mellan i år och nästa år 526 00:25:19,100 --> 00:25:22,140 från 1000 till 2000 sidor, men ingen big deal. 527 00:25:22,140 --> 00:25:24,960 Med denna tredje och sista, det finns en intuitiv algoritm 528 00:25:24,960 --> 00:25:26,209 att dela och erövra. 529 00:25:26,209 --> 00:25:29,000 Det kommer att ta mig hur många fler steg nästa år att hitta någon 530 00:25:29,000 --> 00:25:29,700 gillar Mike Smith? 531 00:25:29,700 --> 00:25:30,560 >> PUBLIKEN: One. 532 00:25:30,560 --> 00:25:31,230 >> DAVID J. MALAN: Det finns bara en. 533 00:25:31,230 --> 00:25:34,430 Och de kan fyrdubbla det, det är kommer att ta mig bara två steg 534 00:25:34,430 --> 00:25:35,210 och så vidare. 535 00:25:35,210 --> 00:25:38,730 Och så det här är ett bevis på hur några noggrann utformning 536 00:25:38,730 --> 00:25:42,437 och lite uppskattning för det som dina ingångar är kan göra ännu bättre. 537 00:25:42,437 --> 00:25:44,270 Nu är vi fuskar en liten bit i den meningen 538 00:25:44,270 --> 00:25:46,350 att vi utnyttja ett antagande. 539 00:25:46,350 --> 00:25:48,500 Vad är mitt antagande om vår telefonbok 540 00:25:48,500 --> 00:25:52,720 som får mig att söndra och härska i denna intuitivt och ändå rätt sätt? 541 00:25:52,720 --> 00:25:53,705 >> PUBLIK: [ohörbart] 542 00:25:53,705 --> 00:25:54,580 DAVID J. MALAN: Ja. 543 00:25:54,580 --> 00:25:55,440 Så det beställdes. 544 00:25:55,440 --> 00:25:57,392 Den var i alfabetisk ordning efter telefonboken företaget. 545 00:25:57,392 --> 00:26:00,100 Om det var i slumpvis ordning, att skulle vara ett helvete av en telefonbok, 546 00:26:00,100 --> 00:26:02,850 men det verkligen inte skulle lämpar sig för algoritmen 547 00:26:02,850 --> 00:26:05,950 Jag använde, eftersom du skulle aldrig bara hända över Mike Smith 548 00:26:05,950 --> 00:26:09,210 om du höll dela in halv på detta sätt av en slump. 549 00:26:09,210 --> 00:26:12,060 >> Så låt oss nu formalisera vad är klart intuitivt. 550 00:26:12,060 --> 00:26:13,950 Så något som kallas pseudokod är där vi ska 551 00:26:13,950 --> 00:26:15,780 börjar några av våra inledande problem. 552 00:26:15,780 --> 00:26:20,410 Och detta är ett generiskt sätt att beskriva en algoritm eller ett datorprogram, 553 00:26:20,410 --> 00:26:24,150 inte med C eller C ++ eller Java, eller något specifikt språk, 554 00:26:24,150 --> 00:26:27,430 men bara med hjälp av engelska, med som någon människa kan vara bekant. 555 00:26:27,430 --> 00:26:31,220 >> Och vi kanske skriva pseudokod för detta problem enligt följande. 556 00:26:31,220 --> 00:26:33,520 Steg ett, plocka upp telefonboken. 557 00:26:33,520 --> 00:26:35,840 Steg två, öppen för mitt i telefonboken. 558 00:26:35,840 --> 00:26:37,730 Steg tre, titta på namnen. 559 00:26:37,730 --> 00:26:40,630 Steg fyra om Smith är bland names-- 560 00:26:40,630 --> 00:26:42,960 >> Och nu detta är en intressant konstruktion. 561 00:26:42,960 --> 00:26:44,290 Det är en beslutspunkt. 562 00:26:44,290 --> 00:26:47,920 Det är ett vägskäl, om du kommer, en gren, så att säga. 563 00:26:47,920 --> 00:26:50,810 Så jag kommer att dra in bara genom konvention step-- 564 00:26:50,810 --> 00:26:53,950 inte five-- vilket är att säg, jag ringer Mike. 565 00:26:53,950 --> 00:26:57,290 Så detta indrag, helt godtycklig mänsklig konvention, är men det 566 00:26:57,290 --> 00:27:01,160 helt enkelt tänkt att förmedla semantiskt att om Smith är bland namn, 567 00:27:01,160 --> 00:27:03,310 då ska jag ringa Mike. 568 00:27:03,310 --> 00:27:06,630 >> Under tiden i steg sex, meddelande att fördjupningen är borta. 569 00:27:06,630 --> 00:27:10,980 Så annars är den andra gaffeln i väg, den andra vägen jag skulle resa. 570 00:27:10,980 --> 00:27:14,130 Så annars om Smith är tidigare i boken, vad är 571 00:27:14,130 --> 00:27:16,964 mitt nästa steg kommer förmodligen att vara här? 572 00:27:16,964 --> 00:27:18,380 PUBLIK: Du går till vänster sida. 573 00:27:18,380 --> 00:27:21,004 DAVID J. MALAN: Ja, så gå till den vänstra halvan av telefonboken. 574 00:27:21,004 --> 00:27:24,140 Kasta bort den högra halvan, om Smith är tidigare i boken. 575 00:27:24,140 --> 00:27:27,140 Så öppet till mitten av den vänstra halvan av boken. 576 00:27:27,140 --> 00:27:30,240 >> Och sedan steg åtta, gå till rad tre. 577 00:27:30,240 --> 00:27:34,520 Och detta är en nyfiken loop är jag förmå, en rekursion så att säga. 578 00:27:34,520 --> 00:27:35,990 Men mer om det i framtiden. 579 00:27:35,990 --> 00:27:39,590 >> Jag använder min samma algoritm, my samma pseudo, 580 00:27:39,590 --> 00:27:43,020 att lösa samma problem igen eftersom det enda som har förändrats 581 00:27:43,020 --> 00:27:46,550 är storleken på problemet, inte mitt mål, och inte personen 582 00:27:46,550 --> 00:27:47,340 Jag letar efter. 583 00:27:47,340 --> 00:27:51,610 Så jag kan återanvända algoritmen som jag redan har definierats. 584 00:27:51,610 --> 00:27:53,580 >> Annars om Smith är senare i book-- du kanske 585 00:27:53,580 --> 00:27:56,200 guess-- öppen till mitten av den högra halvan av boken. 586 00:27:56,200 --> 00:27:58,350 Och återigen, gå till rad tre. 587 00:27:58,350 --> 00:28:01,480 Else-- vad är den sista raden i detta program kommer att bli? 588 00:28:01,480 --> 00:28:03,580 Om han inte är bland de namn på sidan är jag 589 00:28:03,580 --> 00:28:06,870 på, om han inte tidigare i boken, och han är inte senare 590 00:28:06,870 --> 00:28:09,899 Jag vet i boken, vad gör är sant om Mike Smith nu? 591 00:28:09,899 --> 00:28:11,190 PUBLIK: Han är inte i boken. 592 00:28:11,190 --> 00:28:12,731 DAVID J. MALAN: Han är inte i boken. 593 00:28:12,731 --> 00:28:16,040 Så det bästa jag kan göra är att bara ge upp och stoppa detta program. 594 00:28:16,040 --> 00:28:16,540 Okej. 595 00:28:16,540 --> 00:28:20,350 Så på denna punkt, låt oss ta en guidad visning av några av vad som väntar. 596 00:28:20,350 --> 00:28:23,620 Och faktiskt, jag gick med här av ett antal CS50 personal. 597 00:28:23,620 --> 00:28:26,940 Om dessa människor kunde alla gå med mig här på scenen. 598 00:28:26,940 --> 00:28:28,900 >> [Applåder] 599 00:28:28,900 --> 00:28:35,280 600 00:28:35,280 --> 00:28:38,170 >> Märk väl, detta är bara en delmängd av CS50 personal, 601 00:28:38,170 --> 00:28:42,380 eftersom varje år har vi nästan 100 anställda medlemmar i roller kursassistenter, 602 00:28:42,380 --> 00:28:44,410 undervisning medmänniskor, och mer. 603 00:28:44,410 --> 00:28:45,700 Kom upp. 604 00:28:45,700 --> 00:28:48,820 Så de kommer att ansluta oss här tafatt för bara ett ögonblick 605 00:28:48,820 --> 00:28:54,230 som vi ger en whirlwind rundtur i vad du kan förvänta dig här på kursen. 606 00:28:54,230 --> 00:28:59,640 >> Så först och främst har vi SAT / UNS som alternativet betygssättning i kursen. 607 00:28:59,640 --> 00:29:03,180 Detta menas avsiktligt vara ett alternativ som innebär att 608 00:29:03,180 --> 00:29:05,570 Om du är lite orolig på att ligga i kursen, 609 00:29:05,570 --> 00:29:09,390 och du fruktar failure-- även om frankly misslyckande innebär skada din GPA, 610 00:29:09,390 --> 00:29:13,180 få ett B och inte ett A-- som är exakt vad, säkert för en gateway 611 00:29:13,180 --> 00:29:15,750 kurs som CS50 och annat introduktionskurser, 612 00:29:15,750 --> 00:29:17,540 denna betygs alternativet är tänkt att låta. 613 00:29:17,540 --> 00:29:19,930 >> Jag helhjärtat uppmuntra students-- speciellt 614 00:29:19,930 --> 00:29:23,090 om å fence-- att starta Naturligtvis SAT / UNS, även förbli SAT / UNS. 615 00:29:23,090 --> 00:29:27,310 Men du kan säkert byta till ett brev klass den femte måndagen i termen. 616 00:29:27,310 --> 00:29:31,560 >> Uppriktigt sagt, tillbaka när jag var ny 1995, 617 00:29:31,560 --> 00:29:34,630 Jag själv tog inte ens CS50 eftersom jag inte få upp nerven 618 00:29:34,630 --> 00:29:36,540 att faktiskt steg fot i klassrummet. 619 00:29:36,540 --> 00:29:40,020 Det verkade en domän alltför obekant för mig och egentligen bara 620 00:29:40,020 --> 00:29:43,080 för de vänner till mig, ärligt talat, som hade varit programmering 621 00:29:43,080 --> 00:29:45,570 eftersom de var sex eller kanske 10 år gammal. 622 00:29:45,570 --> 00:29:48,640 Och det var bara för att jag var kunna ta CS50 i min dag 623 00:29:48,640 --> 00:29:52,720 i motsvarande version av SAT / UNS-- pass / fail tillbaka i day-- 624 00:29:52,720 --> 00:29:53,850 att till och med jag tog 50. 625 00:29:53,850 --> 00:29:57,440 Och på något sätt eller annat, är jag här igen med er i dag. 626 00:29:57,440 --> 00:30:00,690 >> Nu under tiden vad du bör tänka på om 50 627 00:30:00,690 --> 00:30:01,910 är samtidig inskrivning. 628 00:30:01,910 --> 00:30:03,785 I motsats till rykten om att du kanske har hört, 629 00:30:03,785 --> 00:30:07,650 du kan, faktiskt, samtidigt skriva in sig i CS50 och en annan klass som 630 00:30:07,650 --> 00:30:12,150 sammanträder vid samma eller någon överlappning tid som CS50 föreläsningar här. 631 00:30:12,150 --> 00:30:16,420 Se kursplanen för de uppgifter av genomförandet av dessa. 632 00:30:16,420 --> 00:30:19,540 >> Lectures, under tiden, i motsats till vad är officiellt i katalogen, 633 00:30:19,540 --> 00:30:22,060 kommer i allmänhet endast träffas för bara en timme. 634 00:30:22,060 --> 00:30:24,240 Ibland kan vi köra lite längre. 635 00:30:24,240 --> 00:30:26,800 Men tänk på att det mål i CS50 föreläsningar 636 00:30:26,800 --> 00:30:28,980 är att ge dig en konceptuell översikt, 637 00:30:28,980 --> 00:30:31,830 förhoppningsvis några demonstrationer, kanske till och med några giveaways, 638 00:30:31,830 --> 00:30:34,390 om vad som väntar för veckan som följer. 639 00:30:34,390 --> 00:30:37,730 >> Och så på föreläsningar, kommer vi att undersöka dessa ämnen och exempel tillsammans, 640 00:30:37,730 --> 00:30:41,420 föra eleverna upp på scenen, och personal upp på scenen så ofta vi kan, 641 00:30:41,420 --> 00:30:43,740 för bara ett par timmar varje vecka. 642 00:30:43,740 --> 00:30:47,435 Sektioner, under tiden, kommer att vara erbjuds av dessa folks här-- många 643 00:30:47,435 --> 00:30:50,060 av dem undervisa stipendiater, en del av dem naturligtvis assistants-- vilja 644 00:30:50,060 --> 00:30:51,160 hända varje vecka. 645 00:30:51,160 --> 00:30:52,940 >> Och vad är nyckeln till att hålla i åtanke är att vi 646 00:30:52,940 --> 00:30:55,920 inte have-- inte olikt First Nätter, musiken class-- 647 00:30:55,920 --> 00:30:59,220 olika spår av sektioner för eleverna mindre bekväma, mer 648 00:30:59,220 --> 00:31:01,150 bekväma och någonstans däremellan. 649 00:31:01,150 --> 00:31:03,559 Och ärligt talat, vet du om du är mindre bekväm. 650 00:31:03,559 --> 00:31:05,600 Och du vet säkert om du är mer bekväm. 651 00:31:05,600 --> 00:31:09,920 Och om du inte är riktigt säker, är du definitions någonstans däremellan. 652 00:31:09,920 --> 00:31:12,850 Så när det blir dags att avsnitt i en vecka eller så, per kursplanen, 653 00:31:12,850 --> 00:31:14,070 Vi kommer att be dig den frågan. 654 00:31:14,070 --> 00:31:16,890 Och du kan själv välja Based på din egen komfort nivå 655 00:31:16,890 --> 00:31:22,220 och vara med students-- vara med grönt dots-- liknande komfort till dig. 656 00:31:22,220 --> 00:31:25,710 >> Under tiden har vi problem sätter, vilket kommer i slutändan 657 00:31:25,710 --> 00:31:28,310 definiera din upplevelse i denna kurs. 658 00:31:28,310 --> 00:31:30,370 De erbjuds vanligen i flera utgåvor. 659 00:31:30,370 --> 00:31:34,150 En standard edition som vi förväntar oss mest varje elev i kursen för att ta itu med 660 00:31:34,150 --> 00:31:37,900 men även en så kallad hacker utgåva som erbjuder någon form av extra kredit 661 00:31:37,900 --> 00:31:41,980 rakt av men egentligen skryta att säga att du försökt och åtgärdas 662 00:31:41,980 --> 00:31:45,250 kursens hacker utgåvor som närmar liknande material 663 00:31:45,250 --> 00:31:47,370 men från en mer sofistikerad vinkel. 664 00:31:47,370 --> 00:31:49,480 >> Vad vi erbjuder för Standard Edition, för, 665 00:31:49,480 --> 00:31:51,420 igen, en super majoritet av studenter, är inte 666 00:31:51,420 --> 00:31:54,060 Endast genomgångar, som är videoklipp ledda av kursens personal 667 00:31:54,060 --> 00:31:57,840 som verkligen gå igenom kursens problem och utformning 668 00:31:57,840 --> 00:31:58,910 implementeringar. 669 00:31:58,910 --> 00:32:01,434 Och vi också, efter Faktum erbjuder postmortems, 670 00:32:01,434 --> 00:32:03,350 vari om du undrar hur du kan ha 671 00:32:03,350 --> 00:32:05,930 eller borde ha löst en del problem, lärarna 672 00:32:05,930 --> 00:32:08,640 kommer att gå igenom de på video också. 673 00:32:08,640 --> 00:32:14,350 >> Under tiden vad som väntar för är fem sena dagar och det faktum 674 00:32:14,350 --> 00:32:16,680 att vi kommer att släppa din lägsta problemet satt poäng. 675 00:32:16,680 --> 00:32:20,370 Vi uppskattar verkligen att i utbyte för arbetsbördan att 50 förväntar 676 00:32:20,370 --> 00:32:24,020 av dig, blir livet i vägen Ibland, om inte fem gånger. 677 00:32:24,020 --> 00:32:26,150 Och så detta kommer att erbjuda du lite flexibilitet, 678 00:32:26,150 --> 00:32:29,400 utvidga din deadline från, säg, en Torsdag vid lunchtid på en fredag ​​vid lunchtid. 679 00:32:29,400 --> 00:32:33,150 Se kursplanen för genomförandet detaljer om detta. 680 00:32:33,150 --> 00:32:34,702 >> Nu vad nu väntar? 681 00:32:34,702 --> 00:32:36,660 Och det är bara inträffar för mig nu bara hur länge 682 00:32:36,660 --> 00:32:38,333 Jag har ni stå här på scenen. 683 00:32:38,333 --> 00:32:39,060 >> [LAUGHTER] 684 00:32:39,060 --> 00:32:41,867 >> DAVID J. MALAN: Men vi ska komma till den kulminerande slut snart. 685 00:32:41,867 --> 00:32:43,700 Så vad väntar i termer av problemsamlingar? 686 00:32:43,700 --> 00:32:47,099 Tja, kanske en teaser för vad vi alla gjorde förra året med era föregångare. 687 00:32:47,099 --> 00:32:49,140 I det första problemet set förra året introducerade vi 688 00:32:49,140 --> 00:32:51,630 Scratch, ett grafiskt programmeringsspråk som 689 00:32:51,630 --> 00:32:54,570 kan du programmera bokstavligen genom dra och släppa pusselbitar, 690 00:32:54,570 --> 00:32:57,220 som dessa, som är påminner om konstruktionerna 691 00:32:57,220 --> 00:32:59,260 ser bara en vecka alltså, när vi byter 692 00:32:59,260 --> 00:33:01,870 till en mer traditionell språk, som kallas C. 693 00:33:01,870 --> 00:33:03,930 >> Förra året fortsatte vi på detta problem uppsättning, 694 00:33:03,930 --> 00:33:06,720 involverar för kryptering, krypteringsinformations 695 00:33:06,720 --> 00:33:10,410 att hålla den från statliga eller vänner " ögon som du inte vill se det. 696 00:33:10,410 --> 00:33:12,540 Kodad in här är en meddelande som snart du 697 00:33:12,540 --> 00:33:15,740 kommer att kunna dekryptera eller de-scramble. 698 00:33:15,740 --> 00:33:17,960 >> Bryt var ett problem satt förra året, i vilken 699 00:33:17,960 --> 00:33:21,530 du använda dessa nyfunna programmering kompetens att faktiskt genomföra 700 00:33:21,530 --> 00:33:24,840 ett spel wherein-- som ni kanske minns från childhood-- 701 00:33:24,840 --> 00:33:28,040 målet var att bash tegelstenar som är ovanpå skärmen 702 00:33:28,040 --> 00:33:30,190 här, ackumulera en poäng på vägen, 703 00:33:30,190 --> 00:33:35,460 och genomföra egna algoritmer med vilka denna lösning ytterst 704 00:33:35,460 --> 00:33:37,357 kan du spela spelet. 705 00:33:37,357 --> 00:33:39,440 Under tiden, senare i termin, vi ger dig 706 00:33:39,440 --> 00:33:43,470 ett lexikon över 143.091 engelska ord. 707 00:33:43,470 --> 00:33:46,300 Och du kommer att utmanas att skriva ett program som 708 00:33:46,300 --> 00:33:50,260 spell kontroller, dokument, genom lastning att många ord i minnet 709 00:33:50,260 --> 00:33:52,300 så effektivt som möjligt. 710 00:33:52,300 --> 00:33:54,240 Generellt pitting du mot dina klasskamrater 711 00:33:54,240 --> 00:33:56,610 om du väljer in en bit av en utmaning i poängtavlan 712 00:33:56,610 --> 00:34:00,090 att se vem som kan använda det mest få sekunders gångtid, 713 00:34:00,090 --> 00:34:03,550 och minst antal av megabyte minne, 714 00:34:03,550 --> 00:34:08,659 och faktiskt finjustera dina program vara otroligt resurseffektiva inte 715 00:34:08,659 --> 00:34:09,820 bara tid. 716 00:34:09,820 --> 00:34:13,239 >> Förra året också, vi tittade på slutet av terminen på webbprogrammering. 717 00:34:13,239 --> 00:34:16,230 Och faktiskt, vi gör det igen år med flera problemsamlingar, 718 00:34:16,230 --> 00:34:20,290 introducera dig till de tekniker och tänkesätt som du kan använda 719 00:34:20,290 --> 00:34:23,489 dessa kunskaper i programmering till webbplatser, dynamiska webbplatser, 720 00:34:23,489 --> 00:34:26,639 webbplatser som faktiskt löser problem och beter sig annorlunda 721 00:34:26,639 --> 00:34:30,620 och inte bara statiska platser med statisk information. 722 00:34:30,620 --> 00:34:32,854 >> Den slutgiltiga projektet i slutändan kommer att definiera, men, 723 00:34:32,854 --> 00:34:34,770 kulmen av kursen för studenter, där 724 00:34:34,770 --> 00:34:37,228 du kommer att utmanas att genomföra de flesta något av intresse 725 00:34:37,228 --> 00:34:40,590 till dig, så länge som det på något sätt bygger på kursens lektioner. 726 00:34:40,590 --> 00:34:42,930 >> Och som du såg i video i början, 727 00:34:42,930 --> 00:34:47,340 Vi kommer att avsluta terminen med CS50 Hackathon, som om det, främmande, 728 00:34:47,340 --> 00:34:51,420 börjar klockan 07:00 en natt och slutar vid 7:00 nästa morgon. 729 00:34:51,420 --> 00:34:53,614 Omkring 09:00, vi ska För i första middag. 730 00:34:53,614 --> 00:34:55,489 Omkring 01:00, vi ska ordning i andra middag. 731 00:34:55,489 --> 00:34:57,490 Och om du fortfarande står vid 05:00, vi 732 00:34:57,490 --> 00:35:00,320 kommer buss du till IHOP för frukost. 733 00:35:00,320 --> 00:35:04,980 >> Den CS50 Fair, under tiden, är en händelse till vilken 2,000 plus lärare, studenter, 734 00:35:04,980 --> 00:35:07,850 och personal från hela campus kommer kommit för att se dina framgångar 735 00:35:07,850 --> 00:35:10,150 i kursen och den slutliga projekt och skapelser 736 00:35:10,150 --> 00:35:14,960 som du skapar på din bärbara datorer, stationära datorer, eller kanske till och med glödlampor. 737 00:35:14,960 --> 00:35:17,340 >> Samtidigt kontorstid och stödstrukturen. 738 00:35:17,340 --> 00:35:20,480 Och nu det har varit en bättre tid att ge dig allt. 739 00:35:20,480 --> 00:35:24,310 >> Öppettider kommer att äga rum fyra nätter en vecka för flera timmar varje natt 740 00:35:24,310 --> 00:35:27,710 med i allmänhet 20 till 30 av kursens personal i tjänst på en gång 741 00:35:27,710 --> 00:35:31,240 att förse dig med intima en-mot-en möjligheter för stöd 742 00:35:31,240 --> 00:35:33,790 med kursens problemsamlingar. 743 00:35:33,790 --> 00:35:36,120 Undervisningstid alltför kommer att vara tillgängliga, i synnerhet 744 00:35:36,120 --> 00:35:39,630 för studenter mindre comfortable-- eller vågar säga minst comfortable-- för vem 745 00:35:39,630 --> 00:35:41,869 kontorstid är inte mest vårdande miljö 746 00:35:41,869 --> 00:35:43,660 och är verkligen inte den mest stress. 747 00:35:43,660 --> 00:35:47,430 Speciellt när tidsfrister pressar, Vi kommer aktivt koppla ihop er själva 748 00:35:47,430 --> 00:35:51,440 med en medlem av personalen att arbeta med på någon regelbundet schema när behoven 749 00:35:51,440 --> 00:35:53,850 och deras schema tillåter. 750 00:35:53,850 --> 00:35:55,260 >> Och personal. 751 00:35:55,260 --> 00:36:01,020 Tillåt mig presentera Davon, Rob, och Gabriel, årets huvuden. 752 00:36:01,020 --> 00:36:02,370 Om du vill var och vilja säga-- 753 00:36:02,370 --> 00:36:03,349 >> [Applåder] 754 00:36:03,349 --> 00:36:03,849 --a ord. 755 00:36:03,849 --> 00:36:05,328 [Applåder] 756 00:36:05,328 --> 00:36:10,270 757 00:36:10,270 --> 00:36:13,220 Davon här borta är den Naturligtvis chef, som 758 00:36:13,220 --> 00:36:15,730 betyder i sin heltidsroll Han hjälper till med utförandet 759 00:36:15,730 --> 00:36:18,424 och logistik av CS50. 760 00:36:18,424 --> 00:36:19,340 Davon: Ja, hej, grabbar. 761 00:36:19,340 --> 00:36:20,965 Du kommer att se en hel del till mig på kontorstid. 762 00:36:20,965 --> 00:36:22,110 Jag kommer att undervisa sektioner. 763 00:36:22,110 --> 00:36:25,150 Och om du skjuter e-post i förväg, Jag kommer förmodligen att svara. 764 00:36:25,150 --> 00:36:27,670 Så jag får se massor av er alla termin. 765 00:36:27,670 --> 00:36:29,890 Och välkommen till CS50. 766 00:36:29,890 --> 00:36:38,330 >> DAVID J. MALAN: Och nu Gabriel, som själv var bara en nybörjare i fjol, 767 00:36:38,330 --> 00:36:41,820 men för de senaste åren har varit verksamma sin egen version av CS50 768 00:36:41,820 --> 00:36:44,660 i Brasilien, där han hämtat alla kursens content-- 769 00:36:44,660 --> 00:36:46,890 vilket är klart att filmas och placerades online-- 770 00:36:46,890 --> 00:36:51,480 så att han kunde översätta det till Portugisiska och sedan lära mer än 100 771 00:36:51,480 --> 00:36:54,610 av hans klasskamrater över loppet av ett par år, 772 00:36:54,610 --> 00:36:57,650 undervisning på sitt modersmål kursens läroplan. 773 00:36:57,650 --> 00:36:58,964 >> GABRIEL: Hej. 774 00:36:58,964 --> 00:37:00,912 >> [Applåder] 775 00:37:00,912 --> 00:37:06,669 776 00:37:06,669 --> 00:37:07,710 GABRIEL: Hej, jag är Gabriel. 777 00:37:07,710 --> 00:37:09,340 Jag är chef TF av kursen. 778 00:37:09,340 --> 00:37:10,780 Och jag hoppas att du kommer att älska CS50. 779 00:37:10,780 --> 00:37:12,830 Detta är CS50. 780 00:37:12,830 --> 00:37:14,697 >> DAVID J. MALAN: Nu till Rob. 781 00:37:14,697 --> 00:37:15,780 Åh, vill införa? 782 00:37:15,780 --> 00:37:16,696 >> ROB: Nej, jag vet inte. 783 00:37:16,696 --> 00:37:18,225 [LAUGHTER] 784 00:37:18,225 --> 00:37:19,475 DAVID J. MALAN: Och Rob Boden. 785 00:37:19,475 --> 00:37:22,300 [LAUGHTER] 786 00:37:22,300 --> 00:37:23,800 ROB: Hej, jag är Rob. 787 00:37:23,800 --> 00:37:27,220 Det här är mitt femte år involverad i kursen. 788 00:37:27,220 --> 00:37:29,220 Varje år är det bara en bättre och bättre klass, 789 00:37:29,220 --> 00:37:31,550 så ni är helt klart kommer att bli häftigt. 790 00:37:31,550 --> 00:37:33,181 Jag hoppas att ni alla har kul med det. 791 00:37:33,181 --> 00:37:34,430 Jag ska ha kul med det. 792 00:37:34,430 --> 00:37:36,670 Så se dig omkring. 793 00:37:36,670 --> 00:37:38,445 >> DAVID J. MALAN: Och tiden tillåter inte oss-- 794 00:37:38,445 --> 00:37:39,670 >> [Applåder] 795 00:37:39,670 --> 00:37:41,661 >> Tiden kommer inte att tillåta oss att införa alla 796 00:37:41,661 --> 00:37:44,660 på scenen och alla deras kolleger som är shopping klasser idag. 797 00:37:44,660 --> 00:37:47,390 Men låt mig presentera Belinda och CS50 pussel 798 00:37:47,390 --> 00:37:49,550 Dag som väntar här kommande lördag, vilket 799 00:37:49,550 --> 00:37:51,800 är den första av den kursens storskaliga evenemang. 800 00:37:51,800 --> 00:37:54,300 >> Här en särskilt avsedd att hamra hem poängen 801 00:37:54,300 --> 00:37:57,580 att datavetenskap är ytterst inte om programmering, utan snarare 802 00:37:57,580 --> 00:37:59,280 om problemlösning i allmänhet. 803 00:37:59,280 --> 00:38:01,450 Och Puzzle Day, som du kommer se, kommer att ge dig 804 00:38:01,450 --> 00:38:04,207 och dina klasskamrater together-- Vi hoppas nu på lördag. 805 00:38:04,207 --> 00:38:04,961 >> BELINDA: OK. 806 00:38:04,961 --> 00:38:05,750 Hej, grabbar. 807 00:38:05,750 --> 00:38:06,740 Så tack. 808 00:38:06,740 --> 00:38:10,120 Så som vår illustra kapten sa, jag heter Belinda. 809 00:38:10,120 --> 00:38:12,100 Jag är en sophomore på Quincy House. 810 00:38:12,100 --> 00:38:15,730 >> Jag, precis som ni, tog CS50 förra året, verkligen älskade det. 811 00:38:15,730 --> 00:38:17,960 Jag har en soft spot för er i den tredje raden. 812 00:38:17,960 --> 00:38:21,384 Och jag är stolt att säga, jag är nu i en engagerad relation 813 00:38:21,384 --> 00:38:22,300 med CS50 [ohörbart]. 814 00:38:22,300 --> 00:38:22,799 OK. 815 00:38:22,799 --> 00:38:26,140 Det var min lama version av ett skämt. 816 00:38:26,140 --> 00:38:28,320 >> Hur som helst, så vi går vidare, ville bara bjuda in 817 00:38:28,320 --> 00:38:31,439 ni alla till i-lab eller HBS nässelutslag. 818 00:38:31,439 --> 00:38:33,730 Vi kommer att ha Puzzle dag från 12:00 till 03:00. 819 00:38:33,730 --> 00:38:37,680 Och det är en stor möjlighet för dig killar att möta dina kolleger CS vänner, 820 00:38:37,680 --> 00:38:42,780 lösa några icke-CS pussel, som kapten nämnts, och även äta lite gratis mat, 821 00:38:42,780 --> 00:38:46,910 tjäna några enorma vinster, som presentkort, $ 75 per person, 822 00:38:46,910 --> 00:38:48,400 och also-- vad var det? 823 00:38:48,400 --> 00:38:49,540 Wii U eller något? 824 00:38:49,540 --> 00:38:50,333 Wii U? 825 00:38:50,333 --> 00:38:51,040 Ja. 826 00:38:51,040 --> 00:38:52,330 För vår lotteri. 827 00:38:52,330 --> 00:38:52,830 Toppen. 828 00:38:52,830 --> 00:38:54,310 Så jag ska stanna kvar efter lektionen. 829 00:38:54,310 --> 00:38:56,770 Och om ni har någon frågor, låt mig veta. 830 00:38:56,770 --> 00:38:59,980 >> DAVID J. MALAN: Och du kommer att se, bortom här finns det ingenting att göra idag. 831 00:38:59,980 --> 00:39:01,920 Det första problemet set kommer att gå ut fredag. 832 00:39:01,920 --> 00:39:05,420 Men för att ta oss hem i dag, skulle jag vilja presentera dig för specifikt ytterligare 833 00:39:05,420 --> 00:39:09,080 anställd, Colton Ogden här, vars händer är nu 834 00:39:09,080 --> 00:39:12,250 skyddade ovanför dig med denna MIDI-controller 835 00:39:12,250 --> 00:39:15,170 att hamra hem poängen ytterligare att datavetenskap, också, 836 00:39:15,170 --> 00:39:19,130 har tillämplighet långt utanför ingenjörs och STEM och datavetenskap i sig, 837 00:39:19,130 --> 00:39:22,890 sträcker sig även till sådana områden som musik. 838 00:39:22,890 --> 00:39:30,590 >> Colton har vänligt offered-- jag trodde en av dem var på väg att låsa fokus. 839 00:39:30,590 --> 00:39:34,400 Andrew, om vi kunde kalla fokus över för bara en stund här. 840 00:39:34,400 --> 00:39:36,780 >> Vad Colton har gjort i förväg är programmet 841 00:39:36,780 --> 00:39:40,345 denna enhet, denna pad knappar som du ser på bilden här uppe, 842 00:39:40,345 --> 00:39:42,470 som en MIDI-controller, varvid var och en av dessa knappar 843 00:39:42,470 --> 00:39:47,080 är kopplad till en viss musikalisk anteckna eller ett ljud, mer allmänt en inspelning, 844 00:39:47,080 --> 00:39:50,445 så att genom att spela mönster av dessa knappar, ungefär som mönster av bitar, 845 00:39:50,445 --> 00:39:52,620 kan representera andra koncept på högre nivå. 846 00:39:52,620 --> 00:39:56,750 Kommer han att kunna slutligen att ta oss hem här i dag? 847 00:39:56,750 --> 00:39:59,540 Utan vidare, om vi kunde dämpa belysningen, 848 00:39:59,540 --> 00:40:03,145 och slå på skärmen bakom Colton. 849 00:40:03,145 --> 00:40:03,865 >> PUBLIK: Woo! 850 00:40:03,865 --> 00:40:06,090 >> DAVID J. MALAN: Detta är CS50. 851 00:40:06,090 --> 00:40:10,518 >> [MUSIK SPELA] 852 00:40:10,518 --> 00:42:46,018 853 00:42:46,018 --> 00:42:49,420 >> [Applåder] 854 00:42:49,420 --> 00:42:54,766 855 00:42:54,766 --> 00:42:56,450 >> Det var allt för CS50. 856 00:42:56,450 --> 00:42:57,950 Vi kommer att se dig fredag. 857 00:42:57,950 --> 00:42:59,890 Någon kaka väntar dig i tvärskeppet. 858 00:42:59,890 --> 00:43:04,046 859 00:43:04,046 --> 00:43:08,850 >> [MUSIK SPELA] 860 00:43:08,850 --> 00:45:49,227