1 00:00:00,000 --> 00:00:00,479 2 00:00:00,479 --> 00:00:10,830 >> [Musikk spilles] 3 00:00:10,830 --> 00:00:12,080 [MUSIC - Rossini, "Ranz DES Vaches "fra WILLIAM TELL] 4 00:00:12,080 --> 00:00:24,222 5 00:00:24,222 --> 00:00:25,472 >> [MUSIC - PÅ NORSK BEAT, "MARS Av svivelen Heads "] 6 00:00:25,472 --> 00:02:24,538 7 00:02:24,538 --> 00:02:31,510 >> [Applaus og jublende] 8 00:02:31,510 --> 00:02:33,520 >> DAVID MALAN: Så dette er CS50. 9 00:02:33,520 --> 00:02:34,730 Mitt navn er David Malan. 10 00:02:34,730 --> 00:02:39,250 Og 73% av dere ikke har erfaring med informatikk, 11 00:02:39,250 --> 00:02:41,300 i motsetning til hva du kanskje tror. 12 00:02:41,300 --> 00:02:45,290 Så i dag tenkte vi at vi ville chip bort ved at mangel på kjennskap, men også 13 00:02:45,290 --> 00:02:48,970 gi deg en følelse av, for de av dere med mer komfort, hvilke retninger 14 00:02:48,970 --> 00:02:50,550 du kan gå dette semesteret. 15 00:02:50,550 --> 00:02:51,890 >> Så la oss starte med dette. 16 00:02:51,890 --> 00:02:55,490 Jeg har virkelig ingen anelse om hva som er inni en datamaskin, selv om, som deg, jeg 17 00:02:55,490 --> 00:02:56,780 bruker den hver dag. 18 00:02:56,780 --> 00:03:00,000 Men det er en slags boks, og det er ikke mange innganger inn i den. 19 00:03:00,000 --> 00:03:01,350 Minimalt, det er, hva? 20 00:03:01,350 --> 00:03:03,120 Sannsynligvis en strømledning. 21 00:03:03,120 --> 00:03:06,640 >> Og faktisk med en denne ingrediensen, elektrisitet, synes vi å være i stand til 22 00:03:06,640 --> 00:03:09,490 gjør ganske mye i disse dager. 23 00:03:09,490 --> 00:03:12,130 Men ved slutten av dagen, vi må representere de tingene 24 00:03:12,130 --> 00:03:12,860 at vi bryr oss om. 25 00:03:12,860 --> 00:03:15,240 Vi må representere informasjon i noen form. 26 00:03:15,240 --> 00:03:18,365 Og du er sannsynligvis minst vagt kjent med ideen av binære eller 27 00:03:18,365 --> 00:03:21,370 biter en eller annen måte, datamaskiner redusert til nuller og enere. 28 00:03:21,370 --> 00:03:26,320 Men kan vi omfavne det og minst sette litt lys på det? 29 00:03:26,320 --> 00:03:28,880 >> Så jeg har disse små bordlamper her. 30 00:03:28,880 --> 00:03:30,450 Jeg har strømkontakt her. 31 00:03:30,450 --> 00:03:33,930 Og jeg kommer til å foreslå at det inne av datamaskinen er minst ett av 32 00:03:33,930 --> 00:03:37,300 disse tingene, noe som kan for å bli slått på eller av. 33 00:03:37,300 --> 00:03:40,200 I dette tilfellet er det faktisk en bordlampe, men på lavere nivå, er det noe 34 00:03:40,200 --> 00:03:41,500 kalt en transistor. 35 00:03:41,500 --> 00:03:44,730 >> Men i vår verden, det er en bordlampe, så Jeg kommer til å gå videre og koble dette 36 00:03:44,730 --> 00:03:47,990 inn i min strøm her. 37 00:03:47,990 --> 00:03:52,970 Og jeg hevder at bruk denne enkle, enkel enhet, denne enkle bryteren, jeg 38 00:03:52,970 --> 00:03:54,850 kan representere informasjon. 39 00:03:54,850 --> 00:03:58,090 For eksempel akkurat nå, er jeg representerer ingenting, ikke sant? 40 00:03:58,090 --> 00:04:01,820 Jeg representerer det jeg vil kalle 0 eller usant, det motsatte av noe 41 00:04:01,820 --> 00:04:03,130 faktisk er til stede. 42 00:04:03,130 --> 00:04:07,050 Men hvis jeg bare slå denne bryteren, nå har jeg representert en en. 43 00:04:07,050 --> 00:04:10,720 Så bruker dette veldig enkelt stykke minnet, hvis du vil, kan jeg representerer 44 00:04:10,720 --> 00:04:11,450 informasjon. 45 00:04:11,450 --> 00:04:14,350 >> Nå dessverre, min datamaskin kan ikke gjøre så mye. 46 00:04:14,350 --> 00:04:17,430 Det kan bare representere to verdier i hele verden - 47 00:04:17,430 --> 00:04:18,620 0 eller 1.. 48 00:04:18,620 --> 00:04:21,839 Men hva er en åpenbar løsning, nå, hvis vi ønsker å utvide vår datamaskinen 49 00:04:21,839 --> 00:04:25,120 minne og representerer mer enn 0 og 1? 50 00:04:25,120 --> 00:04:27,060 >> Vel, la oss ta en annen slik bit. 51 00:04:27,060 --> 00:04:30,260 La oss ta en annen bryter, en annen transistor, men du vil 52 00:04:30,260 --> 00:04:31,130 tenker på det. 53 00:04:31,130 --> 00:04:34,170 La meg gå videre og koble dette inn i min datamaskin også. 54 00:04:34,170 --> 00:04:38,270 Og jeg kommer til å kreve, nå, at ved bruker litt mer strøm og 55 00:04:38,270 --> 00:04:42,290 snu flere av disse bryterne på og off, jeg kan representere flere slike 56 00:04:42,290 --> 00:04:43,020 informasjon. 57 00:04:43,020 --> 00:04:44,660 >> Så akkurat nå, er dette en. 58 00:04:44,660 --> 00:04:48,120 Hvis jeg ønsker å nå representere 2, jeg kunne gjøre dette. 59 00:04:48,120 --> 00:04:51,510 Men vanligvis, konferansesenter, som vi vil til slutt se, vil ha meg til å gjøre dette. 60 00:04:51,510 --> 00:04:55,260 Så dette er 0, er dette en. 61 00:04:55,260 --> 00:04:56,720 Dette ville være to. 62 00:04:56,720 --> 00:04:59,920 Og ikke overraskende, vil dette være tre. 63 00:04:59,920 --> 00:05:02,610 >> Så på denne måten, likevel, kan vi telle opp enda lenger? 64 00:05:02,610 --> 00:05:06,500 Hvis jeg får en tredje bit, en tredje bytte, hva er det høyeste tallet jeg kan nå 65 00:05:06,500 --> 00:05:09,720 teller opp til fra 0? 66 00:05:09,720 --> 00:05:12,020 Så 7 hvis jeg starter på 0, ikke sant? 67 00:05:12,020 --> 00:05:15,980 Fordi hvis jeg slår dette lyset på og faktisk koble denne tredje og siste 68 00:05:15,980 --> 00:05:20,090 lys inn i min stikkontakten her, da har jeg muligheten til å representere 69 00:05:20,090 --> 00:05:24,930 noen av de to verdiene her, to verdier her, to verdier her - 70 00:05:24,930 --> 00:05:32,610 og så jeg kan representere to ganger to ganger 2, eller åtte mulige verdier. 71 00:05:32,610 --> 00:05:36,340 Og hvis jeg begynner regnskap på 0, så det er 0, 1, 2, 3, 4, 5, 6, 7. 72 00:05:36,340 --> 00:05:37,480 >> Så dette binært. 73 00:05:37,480 --> 00:05:39,420 Det er virkelig så enkelt som det. 74 00:05:39,420 --> 00:05:41,930 Og jeg vil påstå at dette er faktisk ganske kjent for de fleste 75 00:05:41,930 --> 00:05:43,180 alle i dette rommet. 76 00:05:43,180 --> 00:05:45,710 La meg gå videre og åpne en litt tekst editor her. 77 00:05:45,710 --> 00:05:49,040 >> Og du kanskje husker fra grunnskolen at vi hadde ting som de hundrevis 78 00:05:49,040 --> 00:05:51,970 sted, tiendeplassen, og de sted. 79 00:05:51,970 --> 00:05:55,040 Og huske på at hvis du hadde noen desimal nummer, som noe tilfeldig 80 00:05:55,040 --> 00:05:59,470 som 123, ville du i hovedsak skrive det ut i form 81 00:05:59,470 --> 00:06:00,450 av disse tre kolonner. 82 00:06:00,450 --> 00:06:04,070 Og hvorfor er 1, 2, 3 hva vi kjenner som 123? 83 00:06:04,070 --> 00:06:11,220 Vel, i kolonnen lengst til venstre, har vi en 100 pluss to 10s, så det er 120, 84 00:06:11,220 --> 00:06:14,250 pluss tre 1s, så det er 123. 85 00:06:14,250 --> 00:06:17,990 >> Nå er denne verden som vi bare opplyst er nøyaktig den samme som 86 00:06:17,990 --> 00:06:21,150 du har blitt kjent med i mange år, bortsett fra nå, våre kolonner 87 00:06:21,150 --> 00:06:22,060 ikke makter 10. 88 00:06:22,060 --> 00:06:23,780 De er bare makter to. 89 00:06:23,780 --> 00:06:27,830 Så mens det er de sted, dette kommer til å være den toere sted, er dette 90 00:06:27,830 --> 00:06:29,540 kommer til å være firere sted. 91 00:06:29,540 --> 00:06:33,260 >> Og fordi jeg bare bruker den enkleste mekanismer for å snu ting 92 00:06:33,260 --> 00:06:37,100 på og av - det går strøm eller elektrisitet ikke flyter - 93 00:06:37,100 --> 00:06:40,880 Jeg vet ikke helt har samme ekspressive utvalg som 0 til ni. 94 00:06:40,880 --> 00:06:43,270 Vi kommer til å holde det super enkelt i denne verden av datamaskiner. 95 00:06:43,270 --> 00:06:45,060 Jeg har bare 0 eller 1 - 96 00:06:45,060 --> 00:06:47,890 av eller på, falsk eller ekte. 97 00:06:47,890 --> 00:06:52,610 >> Og så hva jeg representerer akkurat nå er 1, 1, 1, fordi hver av disse 98 00:06:52,610 --> 00:06:54,000 lysene lyser. 99 00:06:54,000 --> 00:06:59,600 Og det gir meg en fire pluss ett to, så det er seks, pluss en 1, og det er syv. 100 00:06:59,600 --> 00:07:03,450 Og ergo gjør denne sekvensen av tre bits representerer nummer 7. 101 00:07:03,450 --> 00:07:06,330 >> Så all denne tiden, innsiden av datamaskin, har vært en rekke 102 00:07:06,330 --> 00:07:08,090 transistorer, noe antall bits. 103 00:07:08,090 --> 00:07:10,380 Men ved slutten av dagen, vi kan representere informasjon 104 00:07:10,380 --> 00:07:12,560 så enkelt som det. 105 00:07:12,560 --> 00:07:16,770 Nå dessverre, vi har bare telles opptil 7 i CS50 så langt, men 106 00:07:16,770 --> 00:07:18,550 forhåpentligvis kan vi gjøre litt bedre enn det. 107 00:07:18,550 --> 00:07:19,550 Og ja vi kan. 108 00:07:19,550 --> 00:07:23,570 >> Anta at vi som mennesker bare vilkårlig bestemt at vi skal 109 00:07:23,570 --> 00:07:28,750 å assosiere tall som 1 og 2, 3, 4, 5, 6, 7, med spesifikke bokstavene 110 00:07:28,750 --> 00:07:29,410 alfabetet. 111 00:07:29,410 --> 00:07:32,350 Og for historiske årsaker, kommer jeg til å starte noe tilfeldig, men jeg er 112 00:07:32,350 --> 00:07:36,880 kommer til å si, mennesker, skal vi bestemmer som en standard over hele verden som 113 00:07:36,880 --> 00:07:43,200 65 representerer antall bokstaven A. 66 skal representere B. Dot, prikk, prikk. 114 00:07:43,200 --> 00:07:45,140 90 skal representere bokstaven Z. 115 00:07:45,140 --> 00:07:48,000 >> Og la oss anta, hvis vi virkelig sette noen tenkte på det, kan vi komme opp 116 00:07:48,000 --> 00:07:50,860 med tall for utropstegn og små bokstaver, og faktisk, 117 00:07:50,860 --> 00:07:52,710 andre har gjort det for oss. 118 00:07:52,710 --> 00:07:56,410 Så nå hadde vi biter som vi kan representerer tall, tall som 119 00:07:56,410 --> 00:08:00,130 vi kan representere bokstaver, og med bokstaver kan vi nå begynne å komponere 120 00:08:00,130 --> 00:08:02,650 e-post og utskrift tegn på skjermen. 121 00:08:02,650 --> 00:08:05,850 >> Så la meg invitere, hvis jeg kunne, åtte modige frivillige - 122 00:08:05,850 --> 00:08:09,200 som ikke tankene dukker ikke bare på kamera, men på internett - 123 00:08:09,200 --> 00:08:13,130 å komme opp her og representerer åtte slike biter, snarere enn disse tre. 124 00:08:13,130 --> 00:08:14,380 Så hva med en, to? 125 00:08:14,380 --> 00:08:16,290 Hva med tre? 126 00:08:16,290 --> 00:08:20,230 Hva med fire i lys blå, fem på enden? 127 00:08:20,230 --> 00:08:21,250 Om noen over her? 128 00:08:21,250 --> 00:08:25,320 Seks i front, sju i front, og åtte foran, så vel. 129 00:08:25,320 --> 00:08:29,050 >> Så jeg bare så skjedde å komme forberedt med en hel haug med papirlapper. 130 00:08:29,050 --> 00:08:34,150 Og på disse bitene av papir er tall som representerer det kolonner 131 00:08:34,150 --> 00:08:35,809 dere kommer til å representere. 132 00:08:35,809 --> 00:08:36,740 Så du vil være - hva heter du? 133 00:08:36,740 --> 00:08:37,570 >> STUDENT: Anna Leah. 134 00:08:37,570 --> 00:08:40,370 >> DAVID MALAN: Anna Leah, du vil være den 128s kolonnen. 135 00:08:40,370 --> 00:08:41,059 Du er? 136 00:08:41,059 --> 00:08:41,510 >> STUDENT: Chris. 137 00:08:41,510 --> 00:08:43,620 >> DAVID MALAN: Chris vil være 64s kolonnen. 138 00:08:43,620 --> 00:08:44,070 Du er? 139 00:08:44,070 --> 00:08:44,540 >> STUDENT: Dan. 140 00:08:44,540 --> 00:08:46,970 >> DAVID MALAN: Dan vil være 32s kolonnen. 141 00:08:46,970 --> 00:08:47,470 >> STUDENT: Pramit. 142 00:08:47,470 --> 00:08:49,430 >> DAVID MALAN: Pramit vil være 16S kolonne. 143 00:08:49,430 --> 00:08:50,290 >> STUDENT: Lillian. 144 00:08:50,290 --> 00:08:51,904 >> DAVID MALAN: Lillian vil være 8s. 145 00:08:51,904 --> 00:08:52,768 >> STUDENT: Jill. 146 00:08:52,768 --> 00:08:55,025 >> DAVID MALAN: Jill vil være 4s kolonnen. 147 00:08:55,025 --> 00:08:55,400 >> STUDENT: Mary. 148 00:08:55,400 --> 00:08:57,000 >> DAVID MALAN: Mary vil være 2s, og? 149 00:08:57,000 --> 00:08:57,470 >> STUDENT: David. 150 00:08:57,470 --> 00:08:59,220 >> DAVID MALAN: David vil være 1s kolonnen. 151 00:08:59,220 --> 00:09:02,030 Så hvis dere kunne gå litt fremover slik at alle kan se. 152 00:09:02,030 --> 00:09:05,370 Hva dere ikke ser er at på baksiden av disse papirlapper er en 153 00:09:05,370 --> 00:09:09,760 liten jukselapp som er i ferd med å instruere disse åtte bits til enten 154 00:09:09,760 --> 00:09:12,380 heve sin hånd eller ikke heve sin hånd. 155 00:09:12,380 --> 00:09:14,100 Hvis deres hånd går opp, er de representerer en en. 156 00:09:14,100 --> 00:09:17,120 Hvis deres hånd holder seg nede, de er representerer en 0. 157 00:09:17,120 --> 00:09:21,410 >> I mellomtiden har vi publikum bør være i stand til å finne ut, basert på denne 158 00:09:21,410 --> 00:09:26,490 kartlegging, hva tre bokstaver ord disse folk er i ferd med å stave. 159 00:09:26,490 --> 00:09:29,700 Så i løpet av et øyeblikk, du kommer til les første linjen på baksiden av 160 00:09:29,700 --> 00:09:32,880 din jukselapp, og du er enten kommer til å heve eller ikke heve hånden. 161 00:09:32,880 --> 00:09:35,710 Hvis du er en 1, heve deg, hvis du er en 0, står du der 162 00:09:35,710 --> 00:09:38,594 forkjært, akkurat sånn. 163 00:09:38,594 --> 00:09:40,386 Go. 164 00:09:40,386 --> 00:09:43,945 Hvilket nummer, først og fremst, er disse gutta representerer? 165 00:09:43,945 --> 00:09:47,140 166 00:09:47,140 --> 00:09:48,860 >> 66. 167 00:09:48,860 --> 00:09:49,560 66, ikke sant? 168 00:09:49,560 --> 00:09:52,400 Vi har en i 64s kolonnen, en 1 i 2s kolonnen. 169 00:09:52,400 --> 00:09:56,340 Det gir meg 66, så det ser ut å representere B. Så 170 00:09:56,340 --> 00:09:57,075 dere har stavet - 171 00:09:57,075 --> 00:09:58,300 OK, det er nok. 172 00:09:58,300 --> 00:09:59,430 B. 173 00:09:59,430 --> 00:10:01,610 >> Så nå skal vi flytte inn vår andre brev. 174 00:10:01,610 --> 00:10:03,530 Go. 175 00:10:03,530 --> 00:10:06,860 Hvem er raskest i matte her? 176 00:10:06,860 --> 00:10:07,750 Så 79. 177 00:10:07,750 --> 00:10:11,840 Igjen, hvis vi legger opp alle kolonnene der det er en 1, for tiden, bare 178 00:10:11,840 --> 00:10:14,840 som vi gjorde før med den enkleste eksempler på 7, nå er vi 179 00:10:14,840 --> 00:10:16,140 får nummer 79. 180 00:10:16,140 --> 00:10:19,910 Som ifølge kartleggingen vår er bokstaven O. Så vi er nesten der. 181 00:10:19,910 --> 00:10:22,590 B, O. Og til slutt, gå. 182 00:10:22,590 --> 00:10:26,420 183 00:10:26,420 --> 00:10:30,120 >> Hva er det de representerer nå? 184 00:10:30,120 --> 00:10:31,370 Mindre konsensus. 185 00:10:31,370 --> 00:10:34,660 186 00:10:34,660 --> 00:10:36,460 Det er bare en absolutt bilyd. 187 00:10:36,460 --> 00:10:40,090 Ja, det er faktisk 87. 188 00:10:40,090 --> 00:10:40,490 Bra. 189 00:10:40,490 --> 00:10:44,480 >> Så hvis vi nå kartlegge det tilbake opp til - la oss begynne å ringe vår ASCII diagram, 190 00:10:44,480 --> 00:10:46,450 American Standard kode for Informasjon Interchange. 191 00:10:46,450 --> 00:10:47,700 Det gir oss brevet - 192 00:10:47,700 --> 00:10:51,260 193 00:10:51,260 --> 00:10:54,810 ikke "bo" men "bue". Og det er et perfekt cue for dere å ta en bue 194 00:10:54,810 --> 00:10:56,100 og hodet på ryggen. 195 00:10:56,100 --> 00:10:56,980 Tusen takk. 196 00:10:56,980 --> 00:10:57,886 >> [APPLAUSE] 197 00:10:57,886 --> 00:10:59,136 >> DAVID MALAN: Du kan beholde dem. 198 00:10:59,136 --> 00:11:01,850 199 00:11:01,850 --> 00:11:05,942 Selv om faktisk, ville noen som en bordlampe, også? 200 00:11:05,942 --> 00:11:07,300 >> [HOOT FRA PUBLIKUM] 201 00:11:07,300 --> 00:11:08,390 >> DAVID MALAN: Desk lampe? 202 00:11:08,390 --> 00:11:10,850 >> [Latter] 203 00:11:10,850 --> 00:11:11,860 >> DAVID MALAN: Really? 204 00:11:11,860 --> 00:11:13,230 Bordlamper for alle? 205 00:11:13,230 --> 00:11:14,310 OK. 206 00:11:14,310 --> 00:11:20,990 Så starter med meget enkleste prinsipper, har vi nå ikke bare telles 207 00:11:20,990 --> 00:11:24,750 opp fra 0 og helt opp til syv, har vi antatt at bare ved å kaste mer 208 00:11:24,750 --> 00:11:28,080 bits eller mer lys eller flere transistorer på dette problemet, kan vi 209 00:11:28,080 --> 00:11:32,680 representerer større og større tall, og ergo, større og større områder av 210 00:11:32,680 --> 00:11:33,780 alfabeter, som engelsk. 211 00:11:33,780 --> 00:11:37,770 Og bare la oss ta på tro for i dag at tilsvarende kunne vi begynne å 212 00:11:37,770 --> 00:11:42,220 representerer grafikk og video, og noen rekke andre medier som vi er 213 00:11:42,220 --> 00:11:43,610 kjent i dag. 214 00:11:43,610 --> 00:11:49,240 >> Så dette er CS50, og i denne klassen sammen av dere er, igjen, veldig mange 215 00:11:49,240 --> 00:11:53,050 klassekamerater som har så lite opplever som deg. 216 00:11:53,050 --> 00:11:57,730 Og jeg nevner dette bare fordi ganske ofte, blant annet som nylig som en av 217 00:11:57,730 --> 00:12:01,860 freshman rådgivning hendelser og ved siste vårens sophomore rådgivning 218 00:12:01,860 --> 00:12:06,420 hendelse, hører vi ofte fraskriver studenter når man kommer opp til CS tabellen, vel, 219 00:12:06,420 --> 00:12:10,070 Jeg har tenkt på å ta denne intro klasse, men jeg er egentlig ikke en 220 00:12:10,070 --> 00:12:11,120 datamaskin person. 221 00:12:11,120 --> 00:12:13,220 Eller, men alle sikkert vet mer enn meg. 222 00:12:13,220 --> 00:12:17,340 Og jeg sette dette i den største skriften mulig, for å formidle dette budskapet som 223 00:12:17,340 --> 00:12:18,730 det er faktisk ikke tilfelle. 224 00:12:18,730 --> 00:12:21,100 >> Og hvis du lurer på, bør Jeg, faktisk, være her? 225 00:12:21,100 --> 00:12:25,950 Innse at ikke bare er dette kursets Tittelen Introduksjon til Computer 226 00:12:25,950 --> 00:12:31,740 Vitenskap, er det Introduksjon til Computer Science I. Så det er faktisk 227 00:12:31,740 --> 00:12:33,170 et sekund slik innføring. 228 00:12:33,170 --> 00:12:35,390 Så du er ikke, faktisk, på feil sted. 229 00:12:35,390 --> 00:12:39,000 Og blant de målene jeg har for i dag er å lindre slike klager du 230 00:12:39,000 --> 00:12:42,430 kan ha, men også å male et bilde av hva som er i butikken for 231 00:12:42,430 --> 00:12:45,720 elevene mindre og mer behagelig både i dette kurset. 232 00:12:45,720 --> 00:12:49,320 >> Men først et ord på en av brosjyrer du har i dag, blant annet 233 00:12:49,320 --> 00:12:50,780 er en rekke spørsmål. 234 00:12:50,780 --> 00:12:54,290 Det har vært en visjon av oss for en stund nå å innføre en ny sensur 235 00:12:54,290 --> 00:12:57,010 alternativ til dette kurset - nemlig SAT / unsat. 236 00:12:57,010 --> 00:13:01,930 Filosofisk for meg, det er mye, mye, mye viktigere at 237 00:13:01,930 --> 00:13:05,050 elevene i denne klassen engasjere seg med materiale, bli utfordret av 238 00:13:05,050 --> 00:13:09,800 materiale, og bekymre deg langt, langt mindre om mekanikken i faktiske score 239 00:13:09,800 --> 00:13:12,590 og bokstavkarakterer ved semesterets slutten, men virkelig omfavne 240 00:13:12,590 --> 00:13:13,970 kurs og dens materiale. 241 00:13:13,970 --> 00:13:18,140 Og egentlig dette føles mer generelt, for hva som er interessant for dem, for å 242 00:13:18,140 --> 00:13:21,390 føler utfordret og belønnet, men uten frykt for å mislykkes. 243 00:13:21,390 --> 00:13:25,030 >> Og ja, dette er for et tilbakevendende tema i denne og andre innledende 244 00:13:25,030 --> 00:13:28,680 kurs i andre felt, som du har dette beven når det gjelder 245 00:13:28,680 --> 00:13:31,040 sette ens tær i ukjente farvann. 246 00:13:31,040 --> 00:13:34,880 Jeg selv, tilbake i 1995, var en førsteårsstudent. 247 00:13:34,880 --> 00:13:37,990 Jeg ble veldig mye fokusert på å være en Gov prosessanlegg her. 248 00:13:37,990 --> 00:13:41,060 Og likevel vil jeg alltid vokst opp med en bit av interesse for informatikk. 249 00:13:41,060 --> 00:13:42,180 Jeg var alltid nysgjerrig. 250 00:13:42,180 --> 00:13:47,610 >> Men tilbake da, selv hadde jeg denne frykten for selv stepping foten i CS50, så mye 251 00:13:47,610 --> 00:13:49,420 slik at jeg ikke engang handle det freshman year. 252 00:13:49,420 --> 00:13:53,460 Og den eneste grunnen til at jeg satte en fot i dør sophomore året var fordi jeg 253 00:13:53,460 --> 00:13:55,340 fikk lov til å ta det bestått / ikke bestått. 254 00:13:55,340 --> 00:13:58,920 Men selv bestått / ikke bestått nødvendig at jeg får opp nerve å gjøre en avtale 255 00:13:58,920 --> 00:14:01,970 med professor Kernehan på den tiden, bringe denne store ark, og be 256 00:14:01,970 --> 00:14:04,470 ham for hans signatur og hans tillatelse til å utforske 257 00:14:04,470 --> 00:14:05,700 disse ukjente farvann. 258 00:14:05,700 --> 00:14:09,030 >> Og det har ikke hjulpet de siste årene at når du gjør dette i CS50, når vi 259 00:14:09,030 --> 00:14:12,500 pleide å være bestått / ikke bestått, på samme måte ville dusinvis eller hundrevis av klassekameratene dine 260 00:14:12,500 --> 00:14:15,970 måtte komme opp, Gud forby, på foran Sanders med dette skjemaet, som 261 00:14:15,970 --> 00:14:19,520 i noen sinn representerer en manglende evne, Jeg tør si, til å utføre 262 00:14:19,520 --> 00:14:20,800 er dine jevnaldrende nivå. 263 00:14:20,800 --> 00:14:23,410 Som er latterlig, men jeg tror det er den mentaliteten. 264 00:14:23,410 --> 00:14:27,210 Og det har aldri vært i denne kulturen av SAT / unsat, eller bestått / ikke bestått mer 265 00:14:27,210 --> 00:14:30,610 generelt, i dette kurset, eller egentlig på denne campus. 266 00:14:30,610 --> 00:14:32,310 >> Så dette året vi endret det. 267 00:14:32,310 --> 00:14:35,630 Jeg ville være ekstatisk halvparten av denne klassen eller flere endte 268 00:14:35,630 --> 00:14:38,700 opp med å ta CS50 SAT / unsat. 269 00:14:38,700 --> 00:14:42,130 I et års tid, ville det være fantastisk hvis nesten alle er. 270 00:14:42,130 --> 00:14:44,410 Deretter kanskje vi skal jobbe på bokstavkarakterer ved Harvard 271 00:14:44,410 --> 00:14:45,480 College mer generelt. 272 00:14:45,480 --> 00:14:48,900 Men for nå, vil vi gjøre dette innenfor vår egen sfære, og jeg ville hjertelig 273 00:14:48,900 --> 00:14:53,400 oppfordrer deg til å gjennomgå de spørsmål og stille spørsmål som du ønsker, slik at 274 00:14:53,400 --> 00:14:58,000 forhåpentligvis du, i motsetning til meg, vil ikke helt har den samme frykten faktor når 275 00:14:58,000 --> 00:15:01,040 utforske hva som er nok et ukjent sted. 276 00:15:01,040 --> 00:15:02,786 >> Så hva er CS50? 277 00:15:02,786 --> 00:15:06,150 Det er en introduksjon til intellektuelle foretak av datamaskin 278 00:15:06,150 --> 00:15:07,700 vitenskap og kunst av programmering. 279 00:15:07,700 --> 00:15:08,770 Men hva betyr det egentlig? 280 00:15:08,770 --> 00:15:12,510 >> Vel, så langt, snakket vi veldig kort å representere informasjon. 281 00:15:12,510 --> 00:15:15,070 Men anta at vi faktisk ønsker å gjøre noe med det. 282 00:15:15,070 --> 00:15:17,890 Vi trenger å innføre begrepet hva vi vil kalle en algoritme. 283 00:15:17,890 --> 00:15:21,540 En algoritme er en fremgangsmåte, en prosess, et sett av instruksjoner for 284 00:15:21,540 --> 00:15:22,780 gjøre noe. 285 00:15:22,780 --> 00:15:25,620 >> Og en algoritme kan være noe super enkelt. 286 00:15:25,620 --> 00:15:28,660 For eksempel, et eksempel med hvilke noen av dere kan bli kjent er dette 287 00:15:28,660 --> 00:15:29,350 ting her. 288 00:15:29,350 --> 00:15:32,510 Så denne boken her er stadig datert, men en gang i tiden, det 289 00:15:32,510 --> 00:15:34,720 inneholdt en hel masse navn og telefonnumre. 290 00:15:34,720 --> 00:15:37,710 Og ja, hvis jeg ønsket å finne noen i denne telefonboken - 291 00:15:37,710 --> 00:15:39,800 si, noen som heter Mike Smith - 292 00:15:39,800 --> 00:15:43,810 Jeg kunne finne Mike Smith i en rekke av ganske enkle måter. 293 00:15:43,810 --> 00:15:47,700 Jeg kunne starte på begynnelsen og gå videre til side 1, ikke der. 294 00:15:47,700 --> 00:15:49,240 Side 2, ikke er der. 295 00:15:49,240 --> 00:15:49,960 Side 3. 296 00:15:49,960 --> 00:15:53,430 Er at algoritmen, er at prosess, riktig? 297 00:15:53,430 --> 00:15:54,620 >> Så det er riktig, ikke sant? 298 00:15:54,620 --> 00:15:58,070 Jeg er litt som en idiot for å gjøre det i den måten, men til slutt vil jeg 299 00:15:58,070 --> 00:16:02,670 finne etternavnet S, og forhåpentligvis Mike er i denne delen, og jeg vil bli 300 00:16:02,670 --> 00:16:04,100 ferdig med algoritmen min. 301 00:16:04,100 --> 00:16:05,440 Men sikkert er det ikke intuitivt. 302 00:16:05,440 --> 00:16:08,020 Mest Ethvert fornuftig menneske i dette rommet ville ikke ha gjort det. 303 00:16:08,020 --> 00:16:10,180 Hva ville du ha gjort? 304 00:16:10,180 --> 00:16:11,480 >> Du ville ha gått rett til midten, ikke sant? 305 00:16:11,480 --> 00:16:12,000 Omtrent til midten. 306 00:16:12,000 --> 00:16:16,310 Og du skjønner, oh, disse er Ms Så Mike Smith, etternavn være Smith, 307 00:16:16,310 --> 00:16:19,050 er ikke klart, deretter i venstre halvdel av boken. 308 00:16:19,050 --> 00:16:21,040 Han må være mot S er i riktig. 309 00:16:21,040 --> 00:16:24,090 Og på dette punktet, selv om de fleste av oss ikke gjør dette i virkeligheten, kan vi 310 00:16:24,090 --> 00:16:27,125 bokstavelig talt rive dette problemet i to. 311 00:16:27,125 --> 00:16:27,640 >> [Heier og applauderer] 312 00:16:27,640 --> 00:16:28,950 >> DAVID MALAN: Takk. 313 00:16:28,950 --> 00:16:30,150 >> [Heier og applauderer] 314 00:16:30,150 --> 00:16:34,660 >> DAVID MALAN: Du kan bokstavelig talt rive dette problem i to, forlater meg med, 315 00:16:34,660 --> 00:16:36,120 bokstavelig, et problem halvparten så stor. 316 00:16:36,120 --> 00:16:39,750 Så hvis denne telefonen boken var - og det sannsynligvis var - ca 1000 sider, nå 317 00:16:39,750 --> 00:16:40,840 det er bare 500 dollar. 318 00:16:40,840 --> 00:16:44,710 Hvis jeg gjør dette igjen og jeg skjønner, oh, faen, jeg gikk for langt, jeg er i Ts 319 00:16:44,710 --> 00:16:46,480 delen, kan jeg like - 320 00:16:46,480 --> 00:16:48,030 figurativt eller bokstavelig talt - 321 00:16:48,030 --> 00:16:50,260 rippe telefonboken - det var faktisk mye lettere at tiden. 322 00:16:50,260 --> 00:16:53,610 Jeg kan bokstavelig talt rive telefonboken i halvparten, forlater meg nå med 323 00:16:53,610 --> 00:16:55,186 ikke 1000, ikke 500 - 324 00:16:55,186 --> 00:16:56,680 250 sider. 325 00:16:56,680 --> 00:17:00,210 Og jeg kan gå 125, og halvparten av det, og halvparten av det, og halvparten av det, 326 00:17:00,210 --> 00:17:04,760 til slutt vil jeg sitte igjen med bare en enkelt side. 327 00:17:04,760 --> 00:17:06,430 >> [Latter] 328 00:17:06,430 --> 00:17:07,589 >> DAVID MALAN: Det er del jeg mislykkes på. 329 00:17:07,589 --> 00:17:10,400 En enkelt side som Mike er forhåpentligvis. 330 00:17:10,400 --> 00:17:14,630 Nå er de forskjellige algoritmer kan være slags vurdert eller evaluert i 331 00:17:14,630 --> 00:17:15,270 forskjellige måter. 332 00:17:15,270 --> 00:17:17,300 Den første var veldig lineær, ikke sant? 333 00:17:17,300 --> 00:17:18,500 Slå side, se etter Mike. 334 00:17:18,500 --> 00:17:19,630 Slå side, se etter Mike. 335 00:17:19,630 --> 00:17:20,560 Det er veldig lineær. 336 00:17:20,560 --> 00:17:23,339 Hvis det er flere sider i telefonen bok, er det sannsynligvis kommer til å ta meg 337 00:17:23,339 --> 00:17:27,380 ett sekund, en mer tidsenhet, men vi beregne tiden. 338 00:17:27,380 --> 00:17:32,470 >> Så jeg kan tegne som dette denne linjen her, hvorved etter hvert som størrelsen av den 339 00:17:32,470 --> 00:17:34,700 problemet øker fra venstre til høyre - 340 00:17:34,700 --> 00:17:37,480 telefonboken blir mindre til større - 341 00:17:37,480 --> 00:17:41,080 og tid kommer til å øke på den vertikale aksen, jo større 342 00:17:41,080 --> 00:17:42,030 telefonboken er. 343 00:17:42,030 --> 00:17:46,180 Så n er bare en generell variabel som IT-forskere bruker til å representere 344 00:17:46,180 --> 00:17:48,210 noen verdi, noen nummer. 345 00:17:48,210 --> 00:17:50,740 Så n kommer til å øke lineært. 346 00:17:50,740 --> 00:17:53,040 Doble størrelsen på telefonlisten, er det kommer til å ta meg dobbelt så mye 347 00:17:53,040 --> 00:17:54,780 tid, mest sannsynlig, for å finne Mike. 348 00:17:54,780 --> 00:17:56,390 >> Nå kunne jeg ha vært smart om dette, ikke sant? 349 00:17:56,390 --> 00:17:57,800 Jeg begynte å bli lei fort. 350 00:17:57,800 --> 00:17:58,910 Kunne ha gjort dette ved toere. 351 00:17:58,910 --> 00:18:01,870 Så to sider, deretter fire, deretter seks, deretter åtte. 352 00:18:01,870 --> 00:18:05,220 Og jeg kunne begynne å fly gjennom det en litt raskere, om enn på mindre risiko for 353 00:18:05,220 --> 00:18:09,210 overshooting Mike, men at kurven er ikke kommer til å være så forskjellig. 354 00:18:09,210 --> 00:18:12,550 Det er fortsatt kommer til å være en rett linje, men litt raskere. 355 00:18:12,550 --> 00:18:13,710 >> Men hva gjorde jeg? 356 00:18:13,710 --> 00:18:15,845 Jeg faktisk gjorde noe fundamentalt bedre. 357 00:18:15,845 --> 00:18:21,990 Jeg oppnådde det vi kaller logaritmisk tid, logg av n, hvorved denne grønne 358 00:18:21,990 --> 00:18:27,730 linje har en mye, mye, mye mindre straight edge til det. 359 00:18:27,730 --> 00:18:33,050 Og heller, tyder det, som det liksom mot uendelig aldri så gradvis, 360 00:18:33,050 --> 00:18:36,700 at jeg faktisk kunne ta en 1000-siders telefonboken, doble sin størrelse 361 00:18:36,700 --> 00:18:39,610 neste år - fordi anta mye flere mennesker flytter inn til byen. 362 00:18:39,610 --> 00:18:43,250 >> Så nå har jeg fått 2000 sider, men hvordan mange flere skritt er at smartere 363 00:18:43,250 --> 00:18:45,200 algoritme kommer til å ta? 364 00:18:45,200 --> 00:18:46,060 Bare en. 365 00:18:46,060 --> 00:18:48,060 Jeg mener, det er en mektig ting. 366 00:18:48,060 --> 00:18:51,400 Hvis vi går til 4000 sider neste år, som kommer til å ta meg 367 00:18:51,400 --> 00:18:53,020 bare to trinn. 368 00:18:53,020 --> 00:18:56,500 Så du kan kaste større og større problemer på meg, ikke ulikt nettet er 369 00:18:56,500 --> 00:18:59,560 kaste større og større problemer hver dag på Googles og Facebooks av 370 00:18:59,560 --> 00:19:01,590 verden, og det er ikke en så big deal. 371 00:19:01,590 --> 00:19:05,840 Fordi jeg legge mer omtanke og omsorg i min algoritme som å løse 372 00:19:05,840 --> 00:19:07,020 problemene effektivt. 373 00:19:07,020 --> 00:19:09,260 >> Og ja, vil det være en av målene for dette kurset. 374 00:19:09,260 --> 00:19:11,230 Du vil, langs veien, lære å programmere. 375 00:19:11,230 --> 00:19:13,360 Du vil lære å programmere i en rekke språk. 376 00:19:13,360 --> 00:19:16,670 Men ved slutten av dagen, er det selvsagt om å løse problemer og komme 377 00:19:16,670 --> 00:19:20,490 flinkere til å løse problemer - og som i tilfeller som dette, løse problemer 378 00:19:20,490 --> 00:19:22,030 mer effektivt. 379 00:19:22,030 --> 00:19:23,990 >> Nå så langt, har vi gjort dette ganske intuitivt. 380 00:19:23,990 --> 00:19:27,420 La oss introdusere noe ganske generisk kalt pseudokode. 381 00:19:27,420 --> 00:19:29,150 Så får vi til slutt får, i dette kurset, til 382 00:19:29,150 --> 00:19:30,570 ulike programmeringsspråk. 383 00:19:30,570 --> 00:19:34,280 Men i dag vil vi gjøre det på engelsk-lignende syntaks, hvor du bare slags si 384 00:19:34,280 --> 00:19:37,330 hva du mener, men du er aldri så konsis og du trenger ikke bekymre deg 385 00:19:37,330 --> 00:19:38,960 grammatikk og fullstendige setninger. 386 00:19:38,960 --> 00:19:41,600 Du bare uttrykke deg som konsist som mulig. 387 00:19:41,600 --> 00:19:45,400 >> Så pseudokode er engelsk-lignende syntaks som representerer 388 00:19:45,400 --> 00:19:46,750 et programmeringsspråk. 389 00:19:46,750 --> 00:19:51,170 Og mot dette målet, la meg foreslå at vi nå modellere prosessen vi bare 390 00:19:51,170 --> 00:19:54,990 beskrevet for å telle noe litt annerledes, denne gangen tar et 391 00:19:54,990 --> 00:19:59,040 se på dette fem-minutters video produsert av våre venner på TED at 392 00:19:59,040 --> 00:20:03,170 definerer hva pseudokode er, definerer hva algoritmisk tenkning er, og selv 393 00:20:03,170 --> 00:20:07,030 men eksempelet du er i ferd med å se er, i seg selv, super enkel, det er 394 00:20:07,030 --> 00:20:09,820 kommer til å begynne å gi oss den mentale modell, vokabular, som å 395 00:20:09,820 --> 00:20:14,588 gjøre mye, mye mer kompleks algoritmer ganske raskt. 396 00:20:14,588 --> 00:20:15,576 >> [BEGIN VIDEOAVSPILLING] 397 00:20:15,576 --> 00:20:29,920 >> [Musikk spilles] 398 00:20:29,920 --> 00:20:31,100 >> FORTELLER: Hva er en algoritme? 399 00:20:31,100 --> 00:20:34,730 I informatikk, er en algoritme en sett med instruksjoner for å løse noen 400 00:20:34,730 --> 00:20:36,620 problemet steg for steg. 401 00:20:36,620 --> 00:20:39,650 Vanligvis blir algoritmer utført av datamaskiner, men vi mennesker har 402 00:20:39,650 --> 00:20:41,230 algoritmer, så vel. 403 00:20:41,230 --> 00:20:43,290 For eksempel, hvordan ville du gå om å telle antall 404 00:20:43,290 --> 00:20:44,750 av personer i et rom? 405 00:20:44,750 --> 00:20:47,980 Vel, hvis du er som meg, ville du sannsynligvis punkt på hver enkelt person, en på 406 00:20:47,980 --> 00:20:50,120 gangen, og telle opp fra 0. 407 00:20:50,120 --> 00:20:52,970 1, 2, 3, 4, og så videre. 408 00:20:52,970 --> 00:20:54,140 >> Vel, det er en algoritme. 409 00:20:54,140 --> 00:20:57,600 Faktisk, la oss prøve å uttrykke det en litt mer formelt i pseudokode - 410 00:20:57,600 --> 00:21:00,700 Norsk-lignende syntaks som ligner et programmeringsspråk. 411 00:21:00,700 --> 00:21:02,580 La N lik 0. 412 00:21:02,580 --> 00:21:06,970 For hver person i rommet, satt N lik N pluss en. 413 00:21:06,970 --> 00:21:08,400 >> Hvordan tolke dette pseudokode? 414 00:21:08,400 --> 00:21:12,840 Vel, linjen man erklærer, så å si, en variabel kalt N og initialiserer 415 00:21:12,840 --> 00:21:14,250 verdien til 0. 416 00:21:14,250 --> 00:21:17,550 Det betyr bare at det i begynnelsen av vår algoritme, den tingen som 417 00:21:17,550 --> 00:21:19,650 vi teller har en verdi på 0. 418 00:21:19,650 --> 00:21:22,620 Tross alt, før vi begynner å telle, Vi har ikke regnet noe ennå. 419 00:21:22,620 --> 00:21:25,340 Kalle denne variabelen N er bare en konvensjon. 420 00:21:25,340 --> 00:21:26,890 Jeg kunne ha kalt det mest noe. 421 00:21:26,890 --> 00:21:30,560 >> Nå linje to demarks starten på en loop, en sekvens av trinn som vil 422 00:21:30,560 --> 00:21:32,310 gjentas et antall ganger. 423 00:21:32,310 --> 00:21:35,910 Så i vårt eksempel, steg vi tar teller mennesker i rommet. 424 00:21:35,910 --> 00:21:38,730 Under linje to er linje tre, som beskriver nøyaktig hvordan 425 00:21:38,730 --> 00:21:40,160 vi vil gå om å telle. 426 00:21:40,160 --> 00:21:43,440 Innrykk innebærer at det er linje tre som vil gjenta. 427 00:21:43,440 --> 00:21:47,380 >> Så hva pseudokode sier er som etter start på 0, for hvert 428 00:21:47,380 --> 00:21:50,690 person i rommet, vil vi øke N etter en. 429 00:21:50,690 --> 00:21:53,050 Nå er denne algoritmen riktig? 430 00:21:53,050 --> 00:21:54,580 Vel, la oss banke på det litt. 431 00:21:54,580 --> 00:21:57,270 Fungerer det hvis det er to personer i rommet? 432 00:21:57,270 --> 00:21:58,170 La oss se. 433 00:21:58,170 --> 00:22:00,260 >> I tråd ett, initialisere vi N til 0. 434 00:22:00,260 --> 00:22:03,660 For hver av disse to personer, vi da øke N etter en. 435 00:22:03,660 --> 00:22:07,310 Så på den første turen gjennom loop, oppdaterer vi N 0-1. 436 00:22:07,310 --> 00:22:11,070 På den andre tur gjennom den samme loop, oppdaterer vi N 1-2. 437 00:22:11,070 --> 00:22:15,780 Og så ved denne algoritmen er slutt, er n 2, som overensstemmer faktisk antallet 438 00:22:15,780 --> 00:22:16,700 personer i rommet. 439 00:22:16,700 --> 00:22:17,760 >> Så langt, så bra. 440 00:22:17,760 --> 00:22:19,610 Hva med et hjørne sak, skjønt? 441 00:22:19,610 --> 00:22:22,590 Anta at det er 0 personer i rommet - foruten meg, 442 00:22:22,590 --> 00:22:24,170 hvem som gjør tellingen. 443 00:22:24,170 --> 00:22:27,150 I tråd ett, initialisere vi N til 0. 444 00:22:27,150 --> 00:22:30,280 Denne gangen, skjønt, gjør linje tre ikke kjøre i det hele tatt siden det ikke er en 445 00:22:30,280 --> 00:22:31,370 person i rommet. 446 00:22:31,370 --> 00:22:35,260 Og så N fortsatt 0, som overensstemmer med antall personer i rommet. 447 00:22:35,260 --> 00:22:36,420 Ganske enkelt, ikke sant? 448 00:22:36,420 --> 00:22:39,630 >> Men telle folk en om gangen er ganske ineffektiv, også, nei? 449 00:22:39,630 --> 00:22:40,920 Sikkert vi kan gjøre bedre. 450 00:22:40,920 --> 00:22:43,120 Hvorfor ikke telle to personer på en gang? 451 00:22:43,120 --> 00:22:49,300 I stedet for å telle 1, 2, 3, 4, 5, 6, 7, 8, og så videre, hvorfor ikke telle, 2, 452 00:22:49,300 --> 00:22:51,460 4, 6, 8, og så videre? 453 00:22:51,460 --> 00:22:53,700 Det høres enda raskere, og det er helt sikkert. 454 00:22:53,700 --> 00:22:56,240 >> La oss uttrykke denne optimaliseringen i pseudokode. 455 00:22:56,240 --> 00:22:57,800 La N lik 0. 456 00:22:57,800 --> 00:23:02,450 For hvert par av personer i rommet, satt N lik N pluss to. 457 00:23:02,450 --> 00:23:04,120 Ganske enkel endring, ikke sant? 458 00:23:04,120 --> 00:23:06,750 Snarere enn count folk en om gangen, i stedet vi telle 459 00:23:06,750 --> 00:23:08,300 dem to om gangen. 460 00:23:08,300 --> 00:23:10,980 Denne algoritmen er altså to ganger så fort som sist. 461 00:23:10,980 --> 00:23:12,180 >> Men er det riktig? 462 00:23:12,180 --> 00:23:12,920 La oss se. 463 00:23:12,920 --> 00:23:15,330 Fungerer det hvis det er to personer i rommet? 464 00:23:15,330 --> 00:23:17,550 I tråd ett, initialisere vi N til 0. 465 00:23:17,550 --> 00:23:20,920 For at ett par av mennesker, vi da øke N med to. 466 00:23:20,920 --> 00:23:24,860 Og så ved denne algoritmen er slutt, er N 2, som overensstemmer faktisk antallet 467 00:23:24,860 --> 00:23:25,650 personer i rommet. 468 00:23:25,650 --> 00:23:28,250 >> Anta at det er neste 0 personer i rommet. 469 00:23:28,250 --> 00:23:30,840 I tråd ett, initialisere vi N til 0. 470 00:23:30,840 --> 00:23:34,330 Som før, betyr linje tre ikke utføre i det hele tatt, siden det ikke er noen parene 471 00:23:34,330 --> 00:23:35,380 av mennesker i rommet. 472 00:23:35,380 --> 00:23:38,350 Og så N fortsatt 0, som faktisk stemmer overens med antallet 473 00:23:38,350 --> 00:23:39,570 personer i rommet. 474 00:23:39,570 --> 00:23:42,280 >> Men hva hvis det er tre personer i rommet? 475 00:23:42,280 --> 00:23:44,130 Hvordan fungerer denne algoritmen fare? 476 00:23:44,130 --> 00:23:44,990 La oss se. 477 00:23:44,990 --> 00:23:47,460 I tråd ett, initialisere vi N til 0. 478 00:23:47,460 --> 00:23:50,870 For et par av dem, vi da øke N ved to. 479 00:23:50,870 --> 00:23:51,800 Men hva så? 480 00:23:51,800 --> 00:23:54,960 Det er ikke en annen full par av mennesker i rommet, slik at linje to no 481 00:23:54,960 --> 00:23:56,180 lenger gjelder. 482 00:23:56,180 --> 00:24:00,530 Og så ved denne algoritmen er slutt, N er fremdeles 2, som ikke er riktig. 483 00:24:00,530 --> 00:24:03,810 >> Faktisk er denne algoritmen sies å være buggy, fordi den har en feil. 484 00:24:03,810 --> 00:24:05,820 Lar oppreisning med noen nye pseudokode. 485 00:24:05,820 --> 00:24:09,670 La n lik 0 for hvert par av mennesker i rommet. 486 00:24:09,670 --> 00:24:12,550 Sett N lik N pluss to. 487 00:24:12,550 --> 00:24:17,140 Hvis en person er fortsatt uparet, satt N lik N pluss en. 488 00:24:17,140 --> 00:24:20,140 For å løse dette problemet, har vi innført, på linje fire, en 489 00:24:20,140 --> 00:24:24,520 tilstand, også kjent som en gren som utfører bare hvis det er en 490 00:24:24,520 --> 00:24:26,640 person som vi ikke kunne sammenkobling med en annen. 491 00:24:26,640 --> 00:24:30,440 Og så nå, uansett om det er ett eller tre eller et odde antall mennesker i 492 00:24:30,440 --> 00:24:33,290 rommet, denne algoritmen vil nå telle dem. 493 00:24:33,290 --> 00:24:34,560 >> Kan vi gjøre det enda bedre? 494 00:24:34,560 --> 00:24:38,820 Vel, vi kunne telle i 3s eller 4s eller 5s og 10s, men utover det, er det 495 00:24:38,820 --> 00:24:41,360 kommer til å få en liten bit vanskelig å peke. 496 00:24:41,360 --> 00:24:44,660 På slutten av dagen, enten utført av datamaskiner eller mennesker, 497 00:24:44,660 --> 00:24:46,750 algoritmer er bare et sett av instruksjoner med 498 00:24:46,750 --> 00:24:48,290 for å løse problemer. 499 00:24:48,290 --> 00:24:49,792 Dette var bare tre. 500 00:24:49,792 --> 00:24:52,404 Hvilket problem vil du løse med en algoritme? 501 00:24:52,404 --> 00:24:52,901 >> [END VIDEOAVSPILLING] 502 00:24:52,901 --> 00:24:55,883 >> DAVID MALAN: Det er den eneste gangen Jeg vil vises i tegneserie form. 503 00:24:55,883 --> 00:25:01,050 Men hvor den historien bladene av, nå, hvordan kan vi gjøre bedre? 504 00:25:01,050 --> 00:25:04,680 Treere og firere, vi hevder, vi kan telle folk mye raskere, men vi kan 505 00:25:04,680 --> 00:25:06,290 gjøre fundamentalt bedre enn det? 506 00:25:06,290 --> 00:25:07,540 Og jeg satse vi kan. 507 00:25:07,540 --> 00:25:11,980 >> Hvis vi innfører en bit av vår egen pseudokode her, kommer jeg til å foreslå 508 00:25:11,980 --> 00:25:14,550 at vi kan oppnå en linje som dette. 509 00:25:14,550 --> 00:25:17,280 Vi kommer ikke til å telle folk en, to, tre, fire. 510 00:25:17,280 --> 00:25:19,470 Vi kommer ikke til å gå to, fire, seks, åtte. 511 00:25:19,470 --> 00:25:23,390 Vi kommer til å gjøre fundamentalt bedre ved å revurdere problemet, og i dette 512 00:25:23,390 --> 00:25:27,080 tilfelle, utnytte en ellers underutnyttet ressurs. 513 00:25:27,080 --> 00:25:31,460 >> På bare et øyeblikk, jeg håper du tilgir og humor oss ved å stå opp i 514 00:25:31,460 --> 00:25:34,470 sted, og da vi kommer til å spør hver av dere å ta på i din 515 00:25:34,470 --> 00:25:36,400 sinn nummer 1. 516 00:25:36,400 --> 00:25:39,560 Du deretter kommer til å stadig forkjært, som tiden går, finne 517 00:25:39,560 --> 00:25:42,740 noen andre som står, kombiner tallene dine sammen 518 00:25:42,740 --> 00:25:43,720 ved å legge dem opp. 519 00:25:43,720 --> 00:25:47,490 En av dere er da gå å rase til å sitte ned først, og den andre personen 520 00:25:47,490 --> 00:25:48,880 kommer til å gjenta. 521 00:25:48,880 --> 00:25:53,090 >> Så med andre ord, ved såing alle du med nummer 1, og deretter 522 00:25:53,090 --> 00:25:57,800 kombinere de 1s inn 2s og de 2s i 4-ere, med alle i økende grad 523 00:25:57,800 --> 00:26:02,740 sitte ned, bør vi, på slutten av denne algoritmen, har bare ett lån 524 00:26:02,740 --> 00:26:07,570 sjel som ikke sitte ned raskt nok, men som har hele publikum teller 525 00:26:07,570 --> 00:26:09,180 i hans eller hennes sinn. 526 00:26:09,180 --> 00:26:13,730 >> Så hvis du vil, la oss gå videre og - trinn en - stå opp på plass. 527 00:26:13,730 --> 00:26:15,600 Og kjøre. 528 00:26:15,600 --> 00:26:36,580 >> [CROWD knurring] 529 00:26:36,580 --> 00:26:38,820 >> DAVID MALAN: Vet du hvor Lauren er? 530 00:26:38,820 --> 00:26:40,179 729? 531 00:26:40,179 --> 00:27:23,350 >> [CROWD knurring] 532 00:27:23,350 --> 00:27:24,340 >> DAVID MALAN: All right? 533 00:27:24,340 --> 00:27:39,110 >> [CROWD knurring] 534 00:27:39,110 --> 00:27:41,365 >> DAVID MALAN: Greit, skal vi være nærmer seg slutten. 535 00:27:41,365 --> 00:27:44,340 536 00:27:44,340 --> 00:27:47,670 Vi ser en kar står her fortsatt. 537 00:27:47,670 --> 00:27:48,770 Hvem trenger andre å være sammen? 538 00:27:48,770 --> 00:27:50,020 Hvis dere ønsker å koble av. 539 00:27:50,020 --> 00:27:53,260 540 00:27:53,260 --> 00:27:56,520 Noen opp toppen. 541 00:27:56,520 --> 00:27:58,150 Hvorfor kan jeg ikke låne en hånd her. 542 00:27:58,150 --> 00:28:01,370 For de svært få mennesker som fortsatt stående, hva tallene gjør du 543 00:28:01,370 --> 00:28:02,790 ha i tankene dine? 544 00:28:02,790 --> 00:28:04,020 >> STUDENT: 78. 545 00:28:04,020 --> 00:28:06,010 >> DAVID MALAN: 78 plus - 546 00:28:06,010 --> 00:28:07,840 som står her nede? 547 00:28:07,840 --> 00:28:08,370 >> STUDENT: 39. 548 00:28:08,370 --> 00:28:09,590 >> DAVID MALAN: Plus 39. 549 00:28:09,590 --> 00:28:12,310 Pluss hvem andre står fortsatt? 550 00:28:12,310 --> 00:28:13,650 81? 551 00:28:13,650 --> 00:28:15,960 OK, hvem andre? 552 00:28:15,960 --> 00:28:17,200 En annen 81? 553 00:28:17,200 --> 00:28:17,860 Wow. 554 00:28:17,860 --> 00:28:19,210 Og hva er i ryggen? 555 00:28:19,210 --> 00:28:20,360 >> STUDENT: 49. 556 00:28:20,360 --> 00:28:21,812 >> DAVID MALAN: 49, pluss? 557 00:28:21,812 --> 00:28:22,950 >> STUDENT: 98. 558 00:28:22,950 --> 00:28:24,980 >> DAVID MALAN: 98 pluss? 559 00:28:24,980 --> 00:28:28,190 Er det noen andre? 560 00:28:28,190 --> 00:28:29,155 12? 561 00:28:29,155 --> 00:28:30,460 God jobb. 562 00:28:30,460 --> 00:28:33,610 >> [Latter] 563 00:28:33,610 --> 00:28:34,690 >> DAVID MALAN: Oh, 112 - 564 00:28:34,690 --> 00:28:35,410 oh. 565 00:28:35,410 --> 00:28:36,220 Godt jobbet! 566 00:28:36,220 --> 00:28:38,660 >> [Latter] 567 00:28:38,660 --> 00:28:42,570 >> [APPLAUSE] 568 00:28:42,570 --> 00:28:43,820 >> DAVID MALAN: Alle andre fortsatt står? 569 00:28:43,820 --> 00:28:46,710 570 00:28:46,710 --> 00:28:47,260 Sorry? 571 00:28:47,260 --> 00:28:48,110 >> STUDENT: 99. 572 00:28:48,110 --> 00:28:49,810 >> DAVID MALAN: 99. 573 00:28:49,810 --> 00:28:52,620 Alle andre som fortsatt står? 574 00:28:52,620 --> 00:28:57,290 Og det totale antallet studenter her faktisk, i henhold til - 575 00:28:57,290 --> 00:28:59,400 har du et nummer? 576 00:28:59,400 --> 00:29:03,170 Oh, det faktiske antall personer i rom, i henhold til kontoen som 577 00:29:03,170 --> 00:29:07,660 undervisning stipendiater gjorde på alles vei inn, var 729. 578 00:29:07,660 --> 00:29:11,070 Så ut av et rom fullt av Harvard studenter som telles seg selv, 579 00:29:11,070 --> 00:29:14,126 Svaret er 637. 580 00:29:14,126 --> 00:29:15,480 >> [Latter] 581 00:29:15,480 --> 00:29:16,350 >> DAVID MALAN: Så nær. 582 00:29:16,350 --> 00:29:17,360 Men likevel. 583 00:29:17,360 --> 00:29:22,110 OK, slik at en undervisning øyeblikk, ikke sant? 584 00:29:22,110 --> 00:29:24,120 Dette er nå det vi beskriver som en feil. 585 00:29:24,120 --> 00:29:28,120 Et sted på veien, vi gjorde noen aritmetisk feil, eller noen satte seg ned, 586 00:29:28,120 --> 00:29:29,930 eller venstre, eller noe gikk galt. 587 00:29:29,930 --> 00:29:30,930 Men det er fint. 588 00:29:30,930 --> 00:29:33,390 Fordi selv likevel, vi fikk ganske nær. 589 00:29:33,390 --> 00:29:37,480 Og jeg vil påstå at vi kom til feil svare på et mye raskere enn jeg ville ha 590 00:29:37,480 --> 00:29:39,770 bruke min mer lineær tilnærming. 591 00:29:39,770 --> 00:29:42,630 >> Så la oss anta at vi faktisk får det korrigere, men tenker nå på hva 592 00:29:42,630 --> 00:29:46,870 skjedde hver gang, kontra min egen naive peker algoritme. 593 00:29:46,870 --> 00:29:48,420 En, to, tre. 594 00:29:48,420 --> 00:29:53,010 Hvis det er faktisk 729 eller 637 personer her, ville det ha tatt meg 595 00:29:53,010 --> 00:29:57,720 bokstavelig talt 637 eller 729 pointings av fingeren og 596 00:29:57,720 --> 00:29:59,490 inkrementering min totalsum. 597 00:29:59,490 --> 00:30:01,910 Og jeg kunne gjøre det litt bedre etter kommer to, fire, seks, åtte, og 598 00:30:01,910 --> 00:30:05,660 doble denne hastigheten, kanskje trippel eller firemannsrom, avhengig av hvor godt jeg kan 599 00:30:05,660 --> 00:30:07,110 gjøre det telle i hodet mitt. 600 00:30:07,110 --> 00:30:10,720 >> Men denne tilnærmingen at dere tok var fundamentalt forskjellig. 601 00:30:10,720 --> 00:30:12,770 Fordi i begynnelsen, alle dere sto opp. 602 00:30:12,770 --> 00:30:14,620 Så 729 alt. 603 00:30:14,620 --> 00:30:17,370 Og så bokstavelig halvparten av dere satte seg. 604 00:30:17,370 --> 00:30:19,720 Og etter det, en annen halvparten av dere satte seg. 605 00:30:19,720 --> 00:30:22,650 Og etter det, en annen halvparten av dere satte seg. 606 00:30:22,650 --> 00:30:27,470 >> Og det totale antall ganger du Gutta kunne ha satt ned er omtrent 607 00:30:27,470 --> 00:30:31,740 åtte eller ni eller ti totalt ganger, avhengig av hva vår totale antallet er. 608 00:30:31,740 --> 00:30:33,300 Og vi kan liksom gjøre denne den andre veien. 609 00:30:33,300 --> 00:30:37,740 Hvis vi hadde 1024 mennesker i rommet, Totalt antall ganger du kunne 610 00:30:37,740 --> 00:30:41,870 halvere 1024 mennesker er 10. 611 00:30:41,870 --> 00:30:43,370 >> Nå tenker over det i den andre retningen. 612 00:30:43,370 --> 00:30:49,170 Anta, latterlig, som vi hadde, sier fire milliarder mennesker i dette rommet, 613 00:30:49,170 --> 00:30:50,860 eller en litt større rom. 614 00:30:50,860 --> 00:30:54,550 Hvor mange ganger vi ville ha gått gjennom denne algoritmen, slik at halvparten 615 00:30:54,550 --> 00:30:58,110 av klassen setter seg ned? 616 00:30:58,110 --> 00:31:03,050 Det er bare kommer til å ta 32 slike operasjoner, selv i en klasse av størrelsen 617 00:31:03,050 --> 00:31:03,770 fire milliarder. 618 00:31:03,770 --> 00:31:04,055 Hvorfor? 619 00:31:04,055 --> 00:31:06,980 Fordi fire milliarder går til to milliarder kroner, går til en million, går til 620 00:31:06,980 --> 00:31:09,925 500 millioner kroner, går til 250 millioner, prikk, prikk, prikk. 621 00:31:09,925 --> 00:31:14,940 Jeg kan bare gjøre det divisjon noen 32 ganger, og da, alle unntatt 622 00:31:14,940 --> 00:31:17,820 en person ville bli stående igjen. 623 00:31:17,820 --> 00:31:21,590 >> Og det, også, er liksom en kraftig Ideen om at stadig skal vi prøve å 624 00:31:21,590 --> 00:31:24,690 innflytelse i dette kurset, og i programmering og informatikk mer 625 00:31:24,690 --> 00:31:29,400 generelt, disse bakteriene av en idé med som vi deretter kan løse problemene mye, 626 00:31:29,400 --> 00:31:31,130 mye mer kraftfullt. 627 00:31:31,130 --> 00:31:34,610 Så vi begynte ganske enkelt med at pseudokode og en fyr i et rom, men 628 00:31:34,610 --> 00:31:38,205 nå med et helt rom fullt av mennesker har vi gjort fundamentalt bedre. 629 00:31:38,205 --> 00:31:41,460 >> Vel, la oss nå overgang fra pseudokode til noen faktiske koden. 630 00:31:41,460 --> 00:31:44,200 Dette språket du er i ferd med å se skje å bli kalt JavaScript, og 631 00:31:44,200 --> 00:31:46,190 vi vil komme tilbake til dette mot semesters slutt. 632 00:31:46,190 --> 00:31:49,960 Det er et programmeringsspråk som du bruke for å lage nettsteder og andre slike 633 00:31:49,960 --> 00:31:51,360 programvare i disse dager. 634 00:31:51,360 --> 00:31:54,890 Og vi har brukt det, takket være en venn av våre på Stanford, å kode 635 00:31:54,890 --> 00:31:56,630 noen skjult informasjon her. 636 00:31:56,630 --> 00:31:59,500 Dette er kunsten steganography, så å si, der du kan skjule 637 00:31:59,500 --> 00:32:03,990 informasjon i det som ellers ser ut til å være støy eller et helt annet 638 00:32:03,990 --> 00:32:05,220 image helt. 639 00:32:05,220 --> 00:32:10,120 Men innebygd i dette spesielle bildet er faktisk en hemmelig melding slags. 640 00:32:10,120 --> 00:32:12,950 >> Så la meg gå videre og trekke opp det samme bildet her, dette 641 00:32:12,950 --> 00:32:14,270 tid i en nettleser. 642 00:32:14,270 --> 00:32:17,710 Og jeg kommer til å vinke min hånd på noen av detaljene for i dag, spesielt 643 00:32:17,710 --> 00:32:21,780 for de av dere som dette ser ut som ikke bare JavaScript men gresk, som en 644 00:32:21,780 --> 00:32:23,930 helt ukjent språk. 645 00:32:23,930 --> 00:32:26,190 Men dette er et eksempel på et programmeringsspråk. 646 00:32:26,190 --> 00:32:30,660 >> Og for nå, ta på tro at denne første linjen med kode - 647 00:32:30,660 --> 00:32:32,470 og etter koden, jeg mener bare tekst. 648 00:32:32,470 --> 00:32:35,660 Tekst at jeg kunne ha bokstavelig talt skrevet inn i Microsoft Word, hvis jeg hadde 649 00:32:35,660 --> 00:32:37,630 riktig programvare for å deretter gjøre noe med det. 650 00:32:37,630 --> 00:32:42,120 Programmering kildekode, programmering koden, er egentlig bare tekst, og det 651 00:32:42,120 --> 00:32:45,420 ser annerledes basert på hvilket språk du bruker, ikke ulikt engelsk og 652 00:32:45,420 --> 00:32:49,200 Spansk og russisk alt ser annerledes ut når du skriver dem på tastaturet. 653 00:32:49,200 --> 00:32:53,520 >> Så denne første linjen, for nå ta på tro, åpner bare en grafikk fra 654 00:32:53,520 --> 00:32:56,160 internett, så bråkete grafisk vi nettopp så. 655 00:32:56,160 --> 00:32:59,900 Denne neste linjen er her et eksempel på en loop, og vi faktisk så at samme 656 00:32:59,900 --> 00:33:01,130 sjargong i TED video. 657 00:33:01,130 --> 00:33:03,750 En løkke er noe som skjer igjen og igjen, og selv om denne 658 00:33:03,750 --> 00:33:08,440 absolutt ser kryptisk, med Stikkordet for, og noen parenteser, og 659 00:33:08,440 --> 00:33:09,510 noen semikolon. 660 00:33:09,510 --> 00:33:13,070 Vi vil komme tilbake til det før lenge, men at sløyfen er det egentlig 661 00:33:13,070 --> 00:33:17,310 forteller programmet, iterere over alle av de bråkete prikker, fra venstre til 662 00:33:17,310 --> 00:33:18,980 høyre, topp til bunn. 663 00:33:18,980 --> 00:33:21,260 >> Fordi på slutten av dagen, et bilde liker dette - og du kan faktisk 664 00:33:21,260 --> 00:33:22,860 slags se det på denne projektoren - 665 00:33:22,860 --> 00:33:25,280 er egentlig bare et rutenett av punkter. 666 00:33:25,280 --> 00:33:29,730 Så vi kan identifisere hver av disse prikkene ved en koordinat, x, y, og med denne 667 00:33:29,730 --> 00:33:33,890 program, kan vi nå begynne å gjøre noe til disse prikkene. 668 00:33:33,890 --> 00:33:37,540 >> Så hva jeg kommer til å gå videre her og vet er at jeg kommer til å gjøre noen endringer. 669 00:33:37,540 --> 00:33:41,000 Først skal jeg gå videre og bli kvitt av alt dette grønnaktig og blålig 670 00:33:41,000 --> 00:33:43,520 støy, og jeg kommer til å gå videre og skriv inn følgende 671 00:33:43,520 --> 00:33:45,710 riktignok kryptiske syntaks. 672 00:33:45,710 --> 00:33:48,020 im for bildet. 673 00:33:48,020 --> 00:33:53,380 satt blått plassering x, komma, plassering y, til 0. 674 00:33:53,380 --> 00:33:55,610 Med andre ord, jeg vil bare slå av alle de blå 675 00:33:55,610 --> 00:33:56,920 prikker i det bildet. 676 00:33:56,920 --> 00:33:59,800 >> Jeg kommer til å gå videre nå og klikk Dette Run / Lagre-knappen, og du vil 677 00:33:59,800 --> 00:34:02,850 merke på høyre side, det resulterende bildet vises. 678 00:34:02,850 --> 00:34:06,120 Nå er det super green, men det er ikke overraskende, fordi jeg bokstavelig talt slått 679 00:34:06,120 --> 00:34:11,070 av, ved å lage en en en 0, som alle den blå i det bildet. 680 00:34:11,070 --> 00:34:12,540 >> Vel, nå la oss gjøre det litt mer. 681 00:34:12,540 --> 00:34:16,989 im for bilde, dot setGreen, x, y. 682 00:34:16,989 --> 00:34:20,659 Og det betyr bare iterere fra venstre til høyre og deretter fra topp til bunn. 683 00:34:20,659 --> 00:34:23,520 Slå den av med en verdi 0 av, i tillegg. 684 00:34:23,520 --> 00:34:24,750 Lagre. 685 00:34:24,750 --> 00:34:28,100 Og på projektoren, kan du faktisk ikke virkelig se noe i det hele tatt. 686 00:34:28,100 --> 00:34:31,380 >> På min laptop skjermen, hvis jeg kikker på bare den rette måten, kan jeg se litt av en 687 00:34:31,380 --> 00:34:33,300 bilde, fordi de er fortsatt noe rødt i det. 688 00:34:33,300 --> 00:34:35,540 Hvis du noen gang har hørt forkortelsen RGB - 689 00:34:35,540 --> 00:34:36,830 rød, grønn, blå - 690 00:34:36,830 --> 00:34:39,110 det er å henvise til denne komposisjonen av et bilde ved hjelp 691 00:34:39,110 --> 00:34:40,230 bare disse tre fargene. 692 00:34:40,230 --> 00:34:43,159 Og akkurat nå har vi kastet bort alle grønne, blå, men 693 00:34:43,159 --> 00:34:44,500 det er ikke mye rødt. 694 00:34:44,500 --> 00:34:45,920 >> Så la meg skru opp den røde. 695 00:34:45,920 --> 00:34:47,070 Hvordan kan jeg gjøre det? 696 00:34:47,070 --> 00:34:49,300 Vel, først, kommer jeg til å spørre dette programmet et spørsmål. 697 00:34:49,300 --> 00:34:52,030 Jeg kommer til å gå videre og la oss kalle det en variabel, akkurat som i algebra. 698 00:34:52,030 --> 00:34:54,060 Du kan ha x eller y eller z. 699 00:34:54,060 --> 00:34:57,230 Jeg kommer til å erklære en variabel og si, satt i denne variabelen, 700 00:34:57,230 --> 00:35:02,790 midlertidig, verdien av bilder getRed verdi på x, y. 701 00:35:02,790 --> 00:35:05,870 >> Og igjen, vil vi komme tilbake til alle av denne detaljen i fremtiden. 702 00:35:05,870 --> 00:35:10,630 Men for nå, bare ta på tro at denne linjen ber programmet, hva 703 00:35:10,630 --> 00:35:12,740 er den røde verdi ved x, y? 704 00:35:12,740 --> 00:35:14,450 På det aktuelle prikk? 705 00:35:14,450 --> 00:35:15,710 >> Så jeg kommer til å gjøre noe til det. 706 00:35:15,710 --> 00:35:21,100 Så jeg kommer til å gjøre bildet dot sett rød ved x, y, y, men denne gangen kommer jeg til å 707 00:35:21,100 --> 00:35:24,760 øke det ved å gjøre røde ganger, la oss si, 10 år. 708 00:35:24,760 --> 00:35:26,870 Så øker det med en faktor på ti. 709 00:35:26,870 --> 00:35:29,880 La meg zoome ut nå, og klikk kunne kjøre / Lagre. 710 00:35:29,880 --> 00:35:36,430 Og voila, det var det hele tid, selv om våre menneskelige øyne 711 00:35:36,430 --> 00:35:37,900 kunne ikke helt se det. 712 00:35:37,900 --> 00:35:41,470 >> Så igjen, dette er nå fast kode, en eksempel på et språk som vi vil komme 713 00:35:41,470 --> 00:35:42,770 tilbake til før lenge. 714 00:35:42,770 --> 00:35:46,670 Men skjønner, spesielt de av dere uten slik erfaring, er det ganske 715 00:35:46,670 --> 00:35:50,280 snart som vi selv vil være skrive kode som det der. 716 00:35:50,280 --> 00:35:54,520 Faktisk, et verktøy som du er alle noe kjent, kanskje, er CS50 er 717 00:35:54,520 --> 00:35:57,330 egen kurs-shopping verktøy, som var faktisk restartet i sommer av noen 718 00:35:57,330 --> 00:36:01,070 av CS50 egne tidligere studenter, nå slå TFS. 719 00:36:01,070 --> 00:36:04,740 >> Så dette skjer for å være et nettsted bygget på et språk som heter PHP. 720 00:36:04,740 --> 00:36:08,510 Den bruker en database som heter MySQL, ting som vi får våre hender 721 00:36:08,510 --> 00:36:10,190 skitne senere i semesteret. 722 00:36:10,190 --> 00:36:14,140 Men tro det eller ei, selv noe som dette reduseres til slutt til den 723 00:36:14,140 --> 00:36:19,480 enkleste av loops og betingelser og greiner, som de så vi bare en 724 00:36:19,480 --> 00:36:21,530 øyeblikk siden i TED video. 725 00:36:21,530 --> 00:36:25,180 >> Det jeg tenkte jeg skulle gjøre nå er aksjen ikke bare noe vi de ansatte har gjort 726 00:36:25,180 --> 00:36:28,010 for campus, men snarere noe en tidligere student - tre 727 00:36:28,010 --> 00:36:29,080 studenter, faktisk - 728 00:36:29,080 --> 00:36:33,950 gjort det siste året, Sierra, Daniel, og Sam, den siste av dem hadde ingen forutgående 729 00:36:33,950 --> 00:36:36,370 programmering erfaring da han tok CS50. 730 00:36:36,370 --> 00:36:39,950 Og for deres endelige prosjektet, de utstilt ved CS50 Fair, en 731 00:36:39,950 --> 00:36:43,720 applikasjon kalt wrdly, som er en web-basert program som de gjorde 732 00:36:43,720 --> 00:36:47,670 denne videoen som jeg tenkte jeg skulle dele til gi deg en følelse av akkurat hva som er 733 00:36:47,670 --> 00:36:49,280 mulig ved sikt ende. 734 00:36:49,280 --> 00:37:57,170 >> [Musikk spilles] 735 00:37:57,170 --> 00:38:00,570 >> DAVID MALAN: Det er fra uke Zero til uke 12 det siste året. 736 00:38:00,570 --> 00:38:05,470 >> [APPLAUSE] 737 00:38:05,470 --> 00:38:09,520 >> DAVID MALAN: Som en teaser, også, egentlig å skjerpe appetitten er til hva som er 738 00:38:09,520 --> 00:38:14,580 mulig, kan du ha sett allerede, eller kan snart se, market.cs50.net, en 739 00:38:14,580 --> 00:38:17,710 nytt verktøy som kursets teamet har jobbet med, denne gangen i 740 00:38:17,710 --> 00:38:21,530 samarbeid med Harvard Student Etater, slik at start i år 741 00:38:21,530 --> 00:38:24,980 og fortsetter forhåpentligvis inn i dette kommende sommeren vil du ha en standard 742 00:38:24,980 --> 00:38:27,890 mulighet på campus for å kjøpe og selge ting av interesse for deg. 743 00:38:27,890 --> 00:38:32,220 Og med partnerskap gjennom HSA, vil du også være i stand til å slippe elementer off 744 00:38:32,220 --> 00:38:35,950 i en av HSA er fysiske butikker på noen punkt i fremtiden, slik som å 745 00:38:35,950 --> 00:38:39,150 proxy ting, spesielt som du oppgradere og ikke nødvendigvis ønsker å 746 00:38:39,150 --> 00:38:44,110 forkaste ting, men faktisk betaler det videresende til folk som kan følge deg 747 00:38:44,110 --> 00:38:45,270 her på campus. 748 00:38:45,270 --> 00:38:46,740 Så mer på det som kommer. 749 00:38:46,740 --> 00:38:49,830 >> Men litt mer konkret, et verktøy som har kommet ut av CS50 i nyere 750 00:38:49,830 --> 00:38:52,760 år, som noen av dere kanskje være kjent og andre av dere kan være 751 00:38:52,760 --> 00:38:57,940 googling nå, i CS50.net/2x, vil du finne en link til en Chrome utvidelse 752 00:38:57,940 --> 00:39:01,250 som er demonstrative av hvordan du kan bruke JavaScript, det samme språket vi 753 00:39:01,250 --> 00:39:06,660 brukes med Eiffeltårnet et øyeblikk siden, å gjennomføre 2x avspillingshastighet 754 00:39:06,660 --> 00:39:09,000 for alle Harvard iSites videoer. 755 00:39:09,000 --> 00:39:11,880 Dette er noe som er bygget inn CS50 egen videospiller. 756 00:39:11,880 --> 00:39:14,870 Men også dette til hvis du begynner å grave inn i kildekoden, som vi vil 757 00:39:14,870 --> 00:39:18,840 gjerne gjøre tilgjengelig, vil du se hvordan du kan også løse problemer som det, 758 00:39:18,840 --> 00:39:23,180 akselererende widgets på nettsteder med som du allerede er godt kjent. 759 00:39:23,180 --> 00:39:26,630 >> Så et ord nå på kurset og forventninger og hva som ligger foran oss. 760 00:39:26,630 --> 00:39:29,445 Generelt, vil vi faktisk samles her på mandager og onsdager - selv 761 00:39:29,445 --> 00:39:31,490 denne fredagen, vil vi samle fordi of Shopping Week - 762 00:39:31,490 --> 00:39:34,640 01:00-02:00, men noen ganger til 2:30. 763 00:39:34,640 --> 00:39:38,700 Gitt at du kanskje derfor ønsker eller nødt til å ta noen klasse på 02:00 764 00:39:38,700 --> 00:39:42,480 videre, eller enda før, innser Kurset er støttende av det som kalles 765 00:39:42,480 --> 00:39:45,900 samtidig påmelding, hvor vi vil støtte en begjæring til Ad styret og 766 00:39:45,900 --> 00:39:49,400 din bosatt dekaner på dine vegne hvis du har en konflikt eller annet sted i dette 767 00:39:49,400 --> 00:39:50,790 01:00-02:30 rekkevidde. 768 00:39:50,790 --> 00:39:54,110 Hodet til at URL nettet for ytterligere detaljer. 769 00:39:54,110 --> 00:39:57,750 >> Men i forhold til understøttelseskonstruksjonen som karakteriserer CS50, for studenter 770 00:39:57,750 --> 00:40:01,750 mer og mindre komfortable like, vi tilbyr distinkte spor av seksjoner. 771 00:40:01,750 --> 00:40:04,730 Og dette er et par uker fri, men før lenge, vil du bli bedt om 772 00:40:04,730 --> 00:40:05,770 din komfort nivå. 773 00:40:05,770 --> 00:40:08,590 Er du blant dem mindre komfortable, mer komfortabel, eller 774 00:40:08,590 --> 00:40:10,520 et sted i mellom? 775 00:40:10,520 --> 00:40:13,150 >> Og vi vil ha tre distinkte låter som faller i 776 00:40:13,150 --> 00:40:14,470 nettopp de målgrupper. 777 00:40:14,470 --> 00:40:17,900 Så ikke på noe punkt i begrepet bør du selv føler at du konkurrerer 778 00:40:17,900 --> 00:40:21,390 mot enhver student med mer eller mindre bakgrunn enn deg. 779 00:40:21,390 --> 00:40:24,160 Faktisk er det naturligvis ment å være mye mer samarbeidende og mye 780 00:40:24,160 --> 00:40:25,650 mer åpen enn. 781 00:40:25,650 --> 00:40:29,030 >> I form av oppgavesett, vil du finner også at i tillegg til den 782 00:40:29,030 --> 00:40:32,130 standard utgave av hver ukes problem satt, det er ofte en "hacker 783 00:40:32,130 --> 00:40:37,010 edition "som er ment å være målrettet ved 5% til 10% eller så av den 784 00:40:37,010 --> 00:40:40,270 demografisk som er faktisk blant dem mer komfortabel og ønsker mer 785 00:40:40,270 --> 00:40:43,960 av en utfordring enn standard utgave av det PSett forventer. 786 00:40:43,960 --> 00:40:46,390 Flere detaljer om dem som skal funnet i pensum. 787 00:40:46,390 --> 00:40:49,430 >> Men også der kan finnes detaljer på kursene sene dager. 788 00:40:49,430 --> 00:40:51,570 Typisk problem setter forfaller på torsdager. 789 00:40:51,570 --> 00:40:55,550 Du kan imidlertid utvide mange av dine tidsfrister i høst fra torsdag til 790 00:40:55,550 --> 00:41:00,010 Fredager bare ved å møte oss halvveis, så å si, svarer noen warm-up 791 00:41:00,010 --> 00:41:03,370 spørsmål i noen av ukens problem settene, som automatisk 792 00:41:03,370 --> 00:41:05,710 deretter gi deg en ekstra 24 timer. 793 00:41:05,710 --> 00:41:09,120 Vi vil også slippe laveste poengsum, som per pensum. 794 00:41:09,120 --> 00:41:12,170 >> For å gi deg en følelse av hva problemet sett er - fordi det er faktisk 795 00:41:12,170 --> 00:41:15,120 kursets problem sett som slutt definere nesten hver 796 00:41:15,120 --> 00:41:18,760 studentens erfaring, mer enn forelesninger, mer enn seksjoner, flere 797 00:41:18,760 --> 00:41:21,230 enn de fleste andre aspektet av kurset. 798 00:41:21,230 --> 00:41:25,140 I fjor, for eksempel, begynte vi, som vi vil starte i år, med Scratch. 799 00:41:25,140 --> 00:41:29,150 Spesielt dette fredag, vil vi bruke, for bare en dags tid, en grafisk 800 00:41:29,150 --> 00:41:32,260 programmeringsspråk, som vi vil starter programmeringen ved å dra og 801 00:41:32,260 --> 00:41:37,580 slippe brikkene som bare montere fysisk om det er fornuftig 802 00:41:37,580 --> 00:41:38,990 å gjøre det logisk. 803 00:41:38,990 --> 00:41:43,460 >> Neste uke vil vi raskt overgangen til C, en ganske gammel, men svært liten og 804 00:41:43,460 --> 00:41:48,510 enkelt språk som vil tillate oss å virkelig går 0-60 løpet 805 00:41:48,510 --> 00:41:52,290 på bare noen få uker, og deretter parlay de samme ferdigheter og kunnskap om 806 00:41:52,290 --> 00:41:56,160 grunnleggende programmering konstruerer inn høyere nivå språk som PHP, 807 00:41:56,160 --> 00:41:58,240 JavaScript og atter andre fortsatt. 808 00:41:58,240 --> 00:42:02,560 >> I fjor, den tredje PSett i løpet var at av kryptografi, en 809 00:42:02,560 --> 00:42:06,380 domenespesifikke program der vi utfordret elevene til å gjennomføre noen 810 00:42:06,380 --> 00:42:11,140 antall koder, programmer som å rykke eller dekryptere informasjon, 811 00:42:11,140 --> 00:42:11,880 å kryptere den. 812 00:42:11,880 --> 00:42:16,300 For hacker utgaven, derimot, vi ga hacker studentene en fil 813 00:42:16,300 --> 00:42:19,900 fra en standard Unix datamaskin som inneholder brukernavn og passord, 814 00:42:19,900 --> 00:42:22,740 sistnevnte som var kryptert, og vi utfordret de hacker 815 00:42:22,740 --> 00:42:26,850 studenter å dekryptere, som best de kunne, disse passordene, fortsatt på at 816 00:42:26,850 --> 00:42:27,770 samme domene. 817 00:42:27,770 --> 00:42:30,580 >> Scramble, et spill som noen av dere er kanskje kjent. 818 00:42:30,580 --> 00:42:34,410 En etterforskning stykke, der vi ber elevene å gjenopprette data som hadde vært 819 00:42:34,410 --> 00:42:38,530 ellers slettet fra min egen digital kameraets compact flash-kort, etter 820 00:42:38,530 --> 00:42:42,740 faktisk skrive programvare for å finne ut, der var de nuller og enere i 821 00:42:42,740 --> 00:42:46,850 at digital kamera som tidligere komponert et JPEG-grafikk? 822 00:42:46,850 --> 00:42:49,710 >> En utfordring slags fjor involverer skrive den raskeste 823 00:42:49,710 --> 00:42:53,160 stavekontroll mulig, konkurrerer mot venner og klassekamerater hvis 824 00:42:53,160 --> 00:42:53,860 de ønsker. 825 00:42:53,860 --> 00:42:56,330 Implementering Huff 'n Puff, et pakkeprogram. 826 00:42:56,330 --> 00:43:01,930 Og så avslutter semesteret med CS50 Finans, en web-basert applikasjon med 827 00:43:01,930 --> 00:43:06,570 som du oppretter en eTrade-lignende nettside å kjøpe og selge aksjer, så å 828 00:43:06,570 --> 00:43:09,860 snakke, ved å faktisk trekke nesten real-time quotes Yahoo! 829 00:43:09,860 --> 00:43:10,450 Finansiere. 830 00:43:10,450 --> 00:43:13,590 >> Hva vi ikke gjorde i fjor var ett problem sett som gjenstår 831 00:43:13,590 --> 00:43:14,810 likevel en favoritt. 832 00:43:14,810 --> 00:43:18,400 Hvis du aldri har gått til shuttle.cs50.net, vil du se en bruker 833 00:43:18,400 --> 00:43:19,670 grensesnitt litt som dette. 834 00:43:19,670 --> 00:43:23,530 Men for to år siden, klassen implementert, ved hjelp av Google Maps og 835 00:43:23,530 --> 00:43:28,570 Google Earth plug-in og litt av kunnskapsrike med å kjøre rundt campus, 836 00:43:28,570 --> 00:43:33,290 slik at målet med dette spillet var, som du kan se noen av ansiktene, 837 00:43:33,290 --> 00:43:37,530 er å kjøre rundt campus leter etter ansatte, undervisning stipendiater og CAS, og 838 00:43:37,530 --> 00:43:40,080 når du gjør det, setter dem på din buss. 839 00:43:40,080 --> 00:43:44,035 Ingen av dem faktisk ser ut til å være her, så vi kommer til å skrive en cheat-kode. 840 00:43:44,035 --> 00:43:47,150 >> [Latter] 841 00:43:47,150 --> 00:43:48,430 >> DAVID MALAN: Det vi går. 842 00:43:48,430 --> 00:43:49,240 OK. 843 00:43:49,240 --> 00:43:51,750 Og her er nå de ansatte laced hele campus. 844 00:43:51,750 --> 00:43:54,530 Og som du kan se, på høyre hånd side av skjermen, skyttelbussen 845 00:43:54,530 --> 00:43:55,510 har tomme seter. 846 00:43:55,510 --> 00:43:59,000 Og målet var å skrive kode som brukes til å simulere dette 847 00:43:59,000 --> 00:44:01,790 kjøring og plukke opp og slippe ut av passasjerer. 848 00:44:01,790 --> 00:44:04,960 At man, også ved hjelp av et språk kalt JavaScript. 849 00:44:04,960 --> 00:44:10,030 Så innse at programmer som som vil være på vår samme bane dette 850 00:44:10,030 --> 00:44:10,910 år, i tillegg. 851 00:44:10,910 --> 00:44:13,640 >> I form nå, for ekstra støtte, vi har kontortid. 852 00:44:13,640 --> 00:44:16,520 Som du kanskje har sett i ditt eget hus spisesalen eller i Annenberg, 853 00:44:16,520 --> 00:44:19,280 vi vil være i huset servering haller fire kvelder i uken - 854 00:44:19,280 --> 00:44:24,450 Leverett, Pfoho, Eliot og Annenberg dette året, 08:00-23:00. 855 00:44:24,450 --> 00:44:26,830 Og hva vi trodde vi ville gjøre dette året er noe litt annerledes. 856 00:44:26,830 --> 00:44:29,650 >> Hvis du har hørt mumling i fjor at det var litt for stressende, dette 857 00:44:29,650 --> 00:44:32,800 Årets kontortid, som vi vil beskrive neste uke, vil være mer organisk, 858 00:44:32,800 --> 00:44:36,900 der ved ankomst, vil du bli sendt til en bestemt tabell 859 00:44:36,900 --> 00:44:39,860 der flere ansatte venter, og vi vil gjøre ting mye mer 860 00:44:39,860 --> 00:44:40,440 organisk. 861 00:44:40,440 --> 00:44:43,740 Ikke mer kø, ikke mer iPad, men heller ha mer intimt 862 00:44:43,740 --> 00:44:47,300 samtaler rundt et bord for bare åtte eller så elevene, slik at vi 863 00:44:47,300 --> 00:44:50,880 omtrentlig følelsen av hva som ellers ville være en mye mindre klasse. 864 00:44:50,880 --> 00:44:54,120 >> Vi tilbyr, i tillegg er disse tingene vi heter gjennomgang og videoer filmet i 865 00:44:54,120 --> 00:44:57,330 fremme ved en av kursets undervisning stipendiater, Zamyla, der hun 866 00:44:57,330 --> 00:45:00,690 leder deg gjennom ukes problem sett, som tilbyr tips og triks for 867 00:45:00,690 --> 00:45:02,640 utfordringene som lå foran. 868 00:45:02,640 --> 00:45:06,230 Og omvendt, etter oppgavesett er på grunn av dette året, vil vi også slippe 869 00:45:06,230 --> 00:45:09,100 små klipp kaller post-mortems som faktisk gå deg gjennom 870 00:45:09,100 --> 00:45:13,630 representative løsninger, både gode og dårlig, via hvor du kan antyde hvordan 871 00:45:13,630 --> 00:45:17,550 du kan ha eller bør ha implementert din egen løsning. 872 00:45:17,550 --> 00:45:20,500 >> Og hva vi vil tilby for første gang også i år, spesielt 873 00:45:20,500 --> 00:45:23,420 for de studentene som benytter seg av kursets andre 874 00:45:23,420 --> 00:45:28,580 ressurser, men likevel sliter alt for mye, emnet 875 00:45:28,580 --> 00:45:33,030 selv vil pare de studentene, som ressursene tillater, med lærere slik at 876 00:45:33,030 --> 00:45:35,840 har du en mye mer intim mulighet enn huset spisesaler 877 00:45:35,840 --> 00:45:38,700 tillate for en-til-en hjelp. 878 00:45:38,700 --> 00:45:42,780 >> Nå er en endelig glimt på noen av end spill i sikte. 879 00:45:42,780 --> 00:45:44,580 Du kan bli kjent med den CS50 Hackathon. 880 00:45:44,580 --> 00:45:48,120 Vel, kommer i desember, fra 08:00 PM til 07:00, i begynnelsen av 881 00:45:48,120 --> 00:45:51,410 Reading Periode, vil være en mulighet å samle med klassekamerater - 882 00:45:51,410 --> 00:45:53,130 dette ville være rundt 9:00 - 883 00:45:53,130 --> 00:45:56,550 der du dykke inn i den endelige prosjektets gjennomføring sammen 884 00:45:56,550 --> 00:45:59,910 klassekamerater, venner og mat. 885 00:45:59,910 --> 00:46:03,680 Dette vil være rundt 01:00, da den første batch av mat kom. 886 00:46:03,680 --> 00:46:08,470 Og dette er omtrent 4:00 at bestemt år på CS50 Hackathon. 887 00:46:08,470 --> 00:46:12,000 >> Men den virkelige klimaks med kurset er betydd for CS50 Fair, en campus-wide 888 00:46:12,000 --> 00:46:15,790 utstilling av dine egne endelige prosjekter, som familie og venner er alle 889 00:46:15,790 --> 00:46:18,730 invitert, som våre rekrutterere og våre venner fra industrien. 890 00:46:18,730 --> 00:46:22,170 Dette, for eksempel, er et glimt av den 2000-pluss folk som har deltatt 891 00:46:22,170 --> 00:46:23,160 siste årene. 892 00:46:23,160 --> 00:46:27,180 Uttrykk som dette er ikke uvanlig, og tilsvarende gjør din 893 00:46:27,180 --> 00:46:29,660 klassekamerater glede i ting du har oppnådd. 894 00:46:29,660 --> 00:46:33,170 >> Og faktisk, mot dette målet, har vi en start-av-term hendelse, så vel. 895 00:46:33,170 --> 00:46:37,400 Hvis ting som dette appellerer til deg, eller du er minst nysgjerrig på hva som 896 00:46:37,400 --> 00:46:41,590 dette, vet at en ny tradisjon av Kurset heter CS50 Puzzle Day. 897 00:46:41,590 --> 00:46:45,710 Og dette ble innstiftet et par år tilbake for å virkelig signalisere til campus 898 00:46:45,710 --> 00:46:48,930 at informatikk er ikke om programmering, og det er absolutt ikke 899 00:46:48,930 --> 00:46:51,960 om å omfavne bare de studentene som har tidligere erfaring. 900 00:46:51,960 --> 00:46:54,200 Det er virkelig om problemløsning mer generelt. 901 00:46:54,200 --> 00:46:57,360 >> Og så Puzzle Day, de siste par år nå, har utviklet seg til en fin 902 00:46:57,360 --> 00:47:00,500 samarbeid med våre venner på Facebook, hvor det vil være fabelaktig 903 00:47:00,500 --> 00:47:04,830 premier og pizza over elva ved i-lab førstkommende lørdag. 904 00:47:04,830 --> 00:47:09,180 Hodet til denne nettadressen med to eller tre venner hvis du ønsker å delta 905 00:47:09,180 --> 00:47:10,830 i denne nye tradisjonen. 906 00:47:10,830 --> 00:47:14,180 >> Så jeg vil gjerne be om at du holder en ting i tankene, og vi har bare en 907 00:47:14,180 --> 00:47:17,070 to minutters klipp som å lukke dag. 908 00:47:17,070 --> 00:47:19,640 73% er nummer å huske. 909 00:47:19,640 --> 00:47:23,900 Kake, også venter deg utenfor dette transept som vi utsette på bare et 910 00:47:23,900 --> 00:47:26,710 par øyeblikk, som er en tradisjon av banen, så vel. 911 00:47:26,710 --> 00:47:29,860 Men dette er nøkkelen sitat fra Kursets pensum å huske på. 912 00:47:29,860 --> 00:47:32,820 Det som teller til slutt i dette kurset er ikke så mye hvor du ender opp 913 00:47:32,820 --> 00:47:36,580 i forhold til klassekameratene dine, men hvor du, i uke 12, ender opp i forhold til 914 00:47:36,580 --> 00:47:37,960 selv i uke 0. 915 00:47:37,960 --> 00:47:43,670 >> Men glimt at vi vil forlate deg med her i dag er denne siste her 916 00:47:43,670 --> 00:47:47,580 av våre samme Daniel, gjorde hvem wrdly video bare et øyeblikk siden. 917 00:47:47,580 --> 00:47:50,000 Jeg forlater dere med dette glimt av hva som ligger foran. 918 00:47:50,000 --> 00:47:53,360 Og når vi gjør dette, hvis vi kunne ha CS50 personale fra forsiden av rommet 919 00:47:53,360 --> 00:47:57,280 å komme fram til scenen for å male alle jo mer av et visuelt bilde som til 920 00:47:57,280 --> 00:47:59,100 hva som venter deg i år - 921 00:47:59,100 --> 00:48:00,350 får klosset. 922 00:48:00,350 --> 00:48:02,200 923 00:48:02,200 --> 00:48:05,188 Vi vil konkludere med dette her på skjermen. 924 00:48:05,188 --> 00:48:18,634 >> [Musikk spilles] 925 00:48:18,634 --> 00:48:21,124 >> DAVID MALAN: Dette er CS50. 926 00:48:21,124 --> 00:50:00,226 >> [MUSIC - MATT & KIM, "Det er ok"] 927 00:50:00,226 --> 00:50:03,245 >> SPEAKER 1: Jeg elsker CS50 mer enn katter. 928 00:50:03,245 --> 00:50:06,030 >> SPEAKER 2: Whoaaaa! 929 00:50:06,030 --> 00:50:06,990 >> [Latter] 930 00:50:06,990 --> 00:50:08,140 >> DAVID MALAN: Dette er altså CS50. 931 00:50:08,140 --> 00:50:10,050 Vi vil se deg på fredag. 932 00:50:10,050 --> 00:50:13,370 >> [Applaus og jublende] 933 00:50:13,370 --> 00:50:17,540 >> FORTELLER: Ved neste CS50, en på scenen demo går ikke som planlagt. 934 00:50:17,540 --> 00:50:19,080 >> DAVID MALAN: Vi ønsker å finne Mike Smith i denne telefonboken. 935 00:50:19,080 --> 00:50:20,380 Vel, hva er dine instinkter? 936 00:50:20,380 --> 00:50:23,750 Jeg kan hoppe omtrent til midten av telefonboken, blikk ned, ser at 937 00:50:23,750 --> 00:50:26,830 Jeg er på M, og jeg vet nå at Mike Smith er ikke til venstre. 938 00:50:26,830 --> 00:50:27,840 Han må være til høyre. 939 00:50:27,840 --> 00:50:30,515 Og så på dette punktet, vi kan bokstavelig talt rive - 940 00:50:30,515 --> 00:50:33,300 på dette punktet, kan vi bokstavelig talt rive - 941 00:50:33,300 --> 00:50:36,490 på dette punktet, kan vi billedlig rive telefonboken i halvparten. 942 00:50:36,490 --> 00:50:38,954 >> [Ukelele klimpring]