1 00:00:00,000 --> 00:00:00,479 2 00:00:00,479 --> 00:00:10,830 >> [MUSIC Playing] 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 - DEN ENGELSKE BEAT, "MARTS AF svinghoveder "] 6 00:00:25,472 --> 00:02:24,538 7 00:02:24,538 --> 00:02:31,510 >> [Applaus og råber] 8 00:02:31,510 --> 00:02:33,520 >> DAVID MALAN: Så dette er CS50. 9 00:02:33,520 --> 00:02:34,730 Mit navn er David Malan. 10 00:02:34,730 --> 00:02:39,250 Og 73% af du ikke har nogen forudgående erfaring med datalogi, 11 00:02:39,250 --> 00:02:41,300 i modsætning til hvad du måske tror. 12 00:02:41,300 --> 00:02:45,290 Så i dag vi troede, vi ville chip væk på det manglende kendskab, men også 13 00:02:45,290 --> 00:02:48,970 giver dig en fornemmelse af, for dem af jer med mere komfort, hvilke retninger 14 00:02:48,970 --> 00:02:50,550 du kan gå i dette semester. 15 00:02:50,550 --> 00:02:51,890 >> Så lad os starte med dette. 16 00:02:51,890 --> 00:02:55,490 Jeg har virkelig ingen idé om, hvad der er inde i en computer, selvom ligesom dig, jeg 17 00:02:55,490 --> 00:02:56,780 bruger det hver dag. 18 00:02:56,780 --> 00:03:00,000 Men det er en slags kasse, og der er ikke mange input til det. 19 00:03:00,000 --> 00:03:01,350 Minimalt, der er, hvad? 20 00:03:01,350 --> 00:03:03,120 Sandsynligvis en netledning. 21 00:03:03,120 --> 00:03:06,640 >> Og faktisk med denne ene ingrediens, elektricitet, vi synes at være i stand til 22 00:03:06,640 --> 00:03:09,490 gør lidt i disse dage. 23 00:03:09,490 --> 00:03:12,130 Men i slutningen af ​​dagen, vi nødt til at repræsentere de ting 24 00:03:12,130 --> 00:03:12,860 at vi holder af. 25 00:03:12,860 --> 00:03:15,240 Vi er nødt til at repræsentere information i en eller anden form. 26 00:03:15,240 --> 00:03:18,365 Og du er sikkert mindst vagt fortrolig med tanken ved binære eller 27 00:03:18,365 --> 00:03:21,370 bits eller anden måde, computere reduceret til nuller og ettaller. 28 00:03:21,370 --> 00:03:26,320 Men kan vi omfavne det, og i det mindste sætte en smule 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 en stikkontakt her. 31 00:03:30,450 --> 00:03:33,930 Og jeg har tænkt mig at foreslå, at inde af min computer er mindst én af 32 00:03:33,930 --> 00:03:37,300 disse ting, noget der kan for at blive tændt eller slukket. 33 00:03:37,300 --> 00:03:40,200 I dette tilfælde er det faktisk en bordlampe, men på lavere niveau, er det noget 34 00:03:40,200 --> 00:03:41,500 kaldes en transistor. 35 00:03:41,500 --> 00:03:44,730 >> Men i vores verden, er det en bordlampe, så Jeg har tænkt mig at gå videre og tilslutte denne 36 00:03:44,730 --> 00:03:47,990 ind i min el her. 37 00:03:47,990 --> 00:03:52,970 Og jeg hævder, at bruge denne simple, simpel anordning, denne enkle switch, jeg 38 00:03:52,970 --> 00:03:54,850 kan repræsentere information. 39 00:03:54,850 --> 00:03:58,090 For eksempel, lige nu er jeg repræsenterer noget, right? 40 00:03:58,090 --> 00:04:01,820 Jeg repræsenterer, hvad jeg vil kalde 0 eller falsk, det modsatte af noget 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 vende denne switch, nu har jeg repræsenterede en 1. 43 00:04:07,050 --> 00:04:10,720 Så bruger denne meget simpelt stykke hukommelse, hvis du vil, kan jeg repræsenterer 44 00:04:10,720 --> 00:04:11,450 oplysninger. 45 00:04:11,450 --> 00:04:14,350 >> Nu desværre min computer kan ikke gøre så meget. 46 00:04:14,350 --> 00:04:17,430 Det kan kun repræsentere to værdier 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 hvad er en oplagt løsning, nu hvis vi ønsker at udvide vores computers 49 00:04:21,839 --> 00:04:25,120 hukommelse og udgør mere end blot 0 og 1? 50 00:04:25,120 --> 00:04:27,060 >> Nå, lad os få fat i en anden sådan bit. 51 00:04:27,060 --> 00:04:30,260 Lad os tage en anden switch, en anden transistor, men du gerne vil 52 00:04:30,260 --> 00:04:31,130 tænke over det. 53 00:04:31,130 --> 00:04:34,170 Lad mig gå videre og tilslutte denne ind i min computer så godt. 54 00:04:34,170 --> 00:04:38,270 Og jeg har tænkt mig at hævde, nu, at ved ved hjælp af en smule mere el og 55 00:04:38,270 --> 00:04:42,290 drejning flere af disse parametre, og slukket, kan jeg repræsenterer flere af sådanne 56 00:04:42,290 --> 00:04:43,020 oplysninger. 57 00:04:43,020 --> 00:04:44,660 >> Så lige nu er, det er 1. 58 00:04:44,660 --> 00:04:48,120 Hvis jeg ønsker at udgør nu 2. Jeg kunne gøre dette. 59 00:04:48,120 --> 00:04:51,510 Men typisk, konvention, som vi vil i sidste ende se, vil have mig til at gøre dette. 60 00:04:51,510 --> 00:04:55,260 Så dette er 0, det er 1. 61 00:04:55,260 --> 00:04:56,720 Dette ville være 2. 62 00:04:56,720 --> 00:04:59,920 Og ikke overraskende, ville dette være 3.. 63 00:04:59,920 --> 00:05:02,610 >> Så på den måde stadig, kan vi tæller op endnu mere? 64 00:05:02,610 --> 00:05:06,500 Hvis jeg får en tredje bit, en tredje switch, hvad er det højeste antal jeg kan nu 65 00:05:06,500 --> 00:05:09,720 tælle op til fra 0? 66 00:05:09,720 --> 00:05:12,020 Så 7, hvis jeg starter på 0, right? 67 00:05:12,020 --> 00:05:15,980 Fordi hvis jeg tænder dette lys, og faktisk tilslutte denne tredje og sidste 68 00:05:15,980 --> 00:05:20,090 lys ind i min stikkontakt her så jeg har evnen til at repræsentere 69 00:05:20,090 --> 00:05:24,930 nogen af ​​to værdier her, to værdier her to værdier her - 70 00:05:24,930 --> 00:05:32,610 og så jeg kan repræsentere 2 gange 2 gange 2, eller otte mulige værdier. 71 00:05:32,610 --> 00:05:36,340 Og hvis jeg starter regnskab på 0, så der er 0, 1, 2, 3, 4, 5, 6, 7. 72 00:05:36,340 --> 00:05:37,480 >> Så denne binære. 73 00:05:37,480 --> 00:05:39,420 Det er virkelig så simpelt er det. 74 00:05:39,420 --> 00:05:41,930 Og jeg ville argumentere for, at dette faktisk er ganske velkendt for de fleste 75 00:05:41,930 --> 00:05:43,180 alle i dette rum. 76 00:05:43,180 --> 00:05:45,710 Lad mig gå videre og åbne en lidt tekst editor her. 77 00:05:45,710 --> 00:05:49,040 >> Og du måske husker fra folkeskolen at vi havde ting som de hundredvis 78 00:05:49,040 --> 00:05:51,970 sted, TEN sted, og dem sted. 79 00:05:51,970 --> 00:05:55,040 Og huske, at hvis du havde nogle decimal nummer, som noget tilfældigt 80 00:05:55,040 --> 00:05:59,470 Ligesom 123, ville du hovedsageligt skriver, at i formularen 81 00:05:59,470 --> 00:06:00,450 af disse tre kolonner. 82 00:06:00,450 --> 00:06:04,070 Og hvorfor er 1, 2, 3, hvad vi kender som 123? 83 00:06:04,070 --> 00:06:11,220 Tja, i kolonnen til venstre, har vi én 100 plus to 10'ere, så det er 120, 84 00:06:11,220 --> 00:06:14,250 plus tre 1s, så det er 123. 85 00:06:14,250 --> 00:06:17,990 >> Nu er denne verden, at vi bare belyst er nøjagtig den samme som 86 00:06:17,990 --> 00:06:21,150 du har været bekendt med i årevis, undtagen nu, kolonner vores 87 00:06:21,150 --> 00:06:22,060 ikke beføjelser 10.. 88 00:06:22,060 --> 00:06:23,780 De er bare beføjelser 2.. 89 00:06:23,780 --> 00:06:27,830 Så mens det er dem sted, dette kommer til at være det toere sted, er det 90 00:06:27,830 --> 00:06:29,540 vil være det Fours plads. 91 00:06:29,540 --> 00:06:33,260 >> Og fordi jeg kun bruger den enkleste af mekanismer til at vende tingene 92 00:06:33,260 --> 00:06:37,100 tændes og slukkes - elektricitet flyder eller elektricitet ikke flyder - 93 00:06:37,100 --> 00:06:40,880 Jeg forstår ikke helt den samme ekspressive område som 0 til ni. 94 00:06:40,880 --> 00:06:43,270 Vi kommer til at holde det super enkel i denne verden af ​​computere. 95 00:06:43,270 --> 00:06:45,060 Jeg har kun 0 eller 1 - 96 00:06:45,060 --> 00:06:47,890 fra eller til, falske eller ægte. 97 00:06:47,890 --> 00:06:52,610 >> Og så hvad jeg repræsenterer lige nu er 1, 1, 1, fordi hver af disse 98 00:06:52,610 --> 00:06:54,000 lys lyser. 99 00:06:54,000 --> 00:06:59,600 Nå, det giver mig en 4 plus en 2, så der er 6, plus en 1, og det er 7.. 100 00:06:59,600 --> 00:07:03,450 Og ergo gør denne sekvens af tre bit repræsenterer nummer 7.. 101 00:07:03,450 --> 00:07:06,330 >> Så al den tid, indersiden af ​​dit computer, har været en række 102 00:07:06,330 --> 00:07:08,090 transistorer, helst antal bit. 103 00:07:08,090 --> 00:07:10,380 Men i slutningen af ​​dagen, vi kan repræsentere information 104 00:07:10,380 --> 00:07:12,560 så enkelt som det. 105 00:07:12,560 --> 00:07:16,770 Nu desværre har vi kun talt op til 7 i CS50 hidtil, men 106 00:07:16,770 --> 00:07:18,550 forhåbentlig kan vi gøre en smule bedre end det. 107 00:07:18,550 --> 00:07:19,550 Og faktisk vi kan. 108 00:07:19,550 --> 00:07:23,570 >> Antag, at vi som mennesker bare vilkårligt besluttet, at vi vil 109 00:07:23,570 --> 00:07:28,750 at knytte numre som 1 og 2, 3, 4, 5, 6, 7, med specifikke bogstaver i 110 00:07:28,750 --> 00:07:29,410 alfabetet. 111 00:07:29,410 --> 00:07:32,350 Og af historiske grunde vil jeg starte noget vilkårligt, men jeg er 112 00:07:32,350 --> 00:07:36,880 kommer til at sige, mennesker, vi vil beslutte som en standard, globalt, at 113 00:07:36,880 --> 00:07:43,200 65 repræsenterer antallet af bogstavet A. 66 vil repræsentere B. Dot, prik, prik. 114 00:07:43,200 --> 00:07:45,140 90 vil repræsentere bogstavet Z. 115 00:07:45,140 --> 00:07:48,000 >> Og lad os antage, hvis vi virkelig sætte nogle tænkte ind i det, kunne vi komme op 116 00:07:48,000 --> 00:07:50,860 med tal for udråbstegn og små bogstaver, og ja, 117 00:07:50,860 --> 00:07:52,710 andre mennesker har gjort det for os. 118 00:07:52,710 --> 00:07:56,410 Så nu havde vi bits, som vi kan repræsentere tal, tal med hvilke 119 00:07:56,410 --> 00:08:00,130 vi kan repræsentere bogstaver, og med breve kan vi nu begynde at komponere 120 00:08:00,130 --> 00:08:02,650 emails og trykning tegn på skærmen. 121 00:08:02,650 --> 00:08:05,850 >> Så lad mig opfordre hvis jeg kunne, otte modige frivillige - 122 00:08:05,850 --> 00:08:09,200 der ikke har noget imod vises ikke blot på kamera, men på internettet - 123 00:08:09,200 --> 00:08:13,130 til at komme herop og repræsenterer otte sådanne bits, snarere end disse tre. 124 00:08:13,130 --> 00:08:14,380 Så hvordan omkring en, to? 125 00:08:14,380 --> 00:08:16,290 Hvordan omkring tre? 126 00:08:16,290 --> 00:08:20,230 Hvordan omkring fire i lyset blå, fem på enden? 127 00:08:20,230 --> 00:08:21,250 Om nogen herovre? 128 00:08:21,250 --> 00:08:25,320 Seks foran, syv i front, og otte i front, så godt. 129 00:08:25,320 --> 00:08:29,050 >> Så jeg bare så sket til at komme forberedt med en hel bunke af sedler. 130 00:08:29,050 --> 00:08:34,150 Og på disse stykker papir er tal der repræsenterer, hvad kolonner 131 00:08:34,150 --> 00:08:35,809 du fyre kommer til at repræsentere. 132 00:08:35,809 --> 00:08:36,740 Så du vil være - hvad er dit navn? 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 128S kolonne. 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 den 64s kolonne. 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 den 32s kolonne. 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 kolonnen. 143 00:08:49,430 --> 00:08:50,290 >> STUDENT: Lillian. 144 00:08:50,290 --> 00:08:51,904 >> DAVID MALAN: Lillian bliver 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 kolonne. 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 være 1s kolonne. 151 00:08:59,220 --> 00:09:02,030 Så hvis du fyrene kunne træde lidt frem, så alle kan se. 152 00:09:02,030 --> 00:09:05,370 Hvad du fyre ikke ser, er, at det på bagsiden af ​​disse sedler er en 153 00:09:05,370 --> 00:09:09,760 lille bedrager ark, der er ved at instruere disse otte bit til enten 154 00:09:09,760 --> 00:09:12,380 hæve deres hånd eller ikke hæve deres hånd. 155 00:09:12,380 --> 00:09:14,100 Hvis deres hånd går op, de er repræsenterer en 1. 156 00:09:14,100 --> 00:09:17,120 Hvis deres hånd bliver nede, de er repræsenterer et 0. 157 00:09:17,120 --> 00:09:21,410 >> I mellemtiden har vi publikum bør være i stand til at regne ud, baseret på denne 158 00:09:21,410 --> 00:09:26,490 kortlægning, hvad tre bogstaver ord disse folk er ved at stave. 159 00:09:26,490 --> 00:09:29,700 Så i bare et øjeblik, du kommer til at læse den første linie fra bagsiden af 160 00:09:29,700 --> 00:09:32,880 din bedrager ark, og du er enten kommer til at hæve eller ikke hæve din hånd. 161 00:09:32,880 --> 00:09:35,710 Hvis du er en 1, du raiser, hvis du er en 0, du står der 162 00:09:35,710 --> 00:09:38,594 akavet, ligesom det. 163 00:09:38,594 --> 00:09:40,386 Go. 164 00:09:40,386 --> 00:09:43,945 Hvilket nummer, først og fremmest, er disse fyre repræsenterer? 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, right? 168 00:09:49,560 --> 00:09:52,400 Vi har en 1 i 64s kolonne en 1 i 2s kolonnen. 169 00:09:52,400 --> 00:09:56,340 Det giver mig 66, så der vises at repræsentere B. Så 170 00:09:56,340 --> 00:09:57,075 du fyre 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å lad os nu gå videre vores andet brev. 174 00:10:01,610 --> 00:10:03,530 Go. 175 00:10:03,530 --> 00:10:06,860 Hvem er hurtigst til matematik her? 176 00:10:06,860 --> 00:10:07,750 Så 79. 177 00:10:07,750 --> 00:10:11,840 Igen, hvis vi tilføje op alle de kolonner hvor der er et 1 i øjeblikket, bare 178 00:10:11,840 --> 00:10:14,840 som vi gjorde før med den enkleste eksempler på 7, vi nu 179 00:10:14,840 --> 00:10:16,140 få nummer 79. 180 00:10:16,140 --> 00:10:19,910 Som efter vor mapping er den bogstavet O. Så vi er der næsten. 181 00:10:19,910 --> 00:10:22,590 B, O. Og endelig gå. 182 00:10:22,590 --> 00:10:26,420 183 00:10:26,420 --> 00:10:30,120 >> Hvad er de repræsenterer nu? 184 00:10:30,120 --> 00:10:31,370 Mindre enighed. 185 00:10:31,370 --> 00:10:34,660 186 00:10:34,660 --> 00:10:36,460 Det er bare en absolut mumlen. 187 00:10:36,460 --> 00:10:40,090 Ja, det er i virkeligheden 87. 188 00:10:40,090 --> 00:10:40,490 Godt. 189 00:10:40,490 --> 00:10:44,480 >> Så hvis vi nu kortlægge det tilbage til - lad os begynde at kalde vores ASCII diagram, 190 00:10:44,480 --> 00:10:46,450 American Standard Code for Information Interchange. 191 00:10:46,450 --> 00:10:47,700 Det giver os det brev - 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 en perfekt cue for jer at tage en bue 194 00:10:54,810 --> 00:10:56,100 og hoved på ryggen. 195 00:10:56,100 --> 00:10:56,980 Mange tak. 196 00:10:56,980 --> 00:10:57,886 >> [Applaus] 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 Selvom faktisk, ville nogen ligesom en bordlampe,? også 200 00:11:05,942 --> 00:11:07,300 >> [Hoot FROM AUDIENCE] 201 00:11:07,300 --> 00:11:08,390 >> DAVID MALAN: Desk lamp? 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å startende med meget simpleste af principper, vi har nu ikke kun tælles 207 00:11:20,990 --> 00:11:24,750 op fra 0 hele vejen op til 7, vi har antages, at blot ved at kaste mere 208 00:11:24,750 --> 00:11:28,080 bits eller mere lys eller mere transistorer på dette problem, kan vi 209 00:11:28,080 --> 00:11:32,680 repræsentere større og større tal, og Ergo, større og større intervaller af 210 00:11:32,680 --> 00:11:33,780 alfabeter, som engelsk. 211 00:11:33,780 --> 00:11:37,770 Og bare lad os tage på tro i dag der på samme måde kunne vi begynde at 212 00:11:37,770 --> 00:11:42,220 repræsentere grafik og video og enhver Antallet af andre medier, som vi er 213 00:11:42,220 --> 00:11:43,610 velkendt i dag. 214 00:11:43,610 --> 00:11:49,240 >> Så dette er CS50, og i denne klasse siden af ​​jer er, igen, rigtig mange 215 00:11:49,240 --> 00:11:53,050 klassekammerater, der har så lidt oplever som dig. 216 00:11:53,050 --> 00:11:57,730 Og jeg nævner dette kun fordi ganske ofte, bl.a. så sent som en af 217 00:11:57,730 --> 00:12:01,860 freshman rådgive begivenheder og forårets sophomore rådgive 218 00:12:01,860 --> 00:12:06,420 begivenhed, vi ofte hører eleverne fralægger når de kommer op til CS bordet, ja, 219 00:12:06,420 --> 00:12:10,070 Jeg har været tanker om at tage dette intro klasse, men jeg er ikke rigtig en 220 00:12:10,070 --> 00:12:11,120 computer person. 221 00:12:11,120 --> 00:12:13,220 Eller, men alle sikkert ved mere end mig. 222 00:12:13,220 --> 00:12:17,340 Og jeg sætter dette i den største skrifttype muligt at formidle dette budskab, 223 00:12:17,340 --> 00:12:18,730 det er faktisk ikke tilfældet. 224 00:12:18,730 --> 00:12:21,100 >> Og hvis du undrer dig, bør I, i virkeligheden, være her? 225 00:12:21,100 --> 00:12:25,950 Indse, at ikke alene er dette kursus er title Introduktion til Computer 226 00:12:25,950 --> 00:12:31,740 Videnskab er det Introduktion til Computer Science I. Så der er faktisk 227 00:12:31,740 --> 00:12:33,170 en anden sådanne introduktion. 228 00:12:33,170 --> 00:12:35,390 Så du er ikke i virkeligheden, på det forkerte sted. 229 00:12:35,390 --> 00:12:39,000 Og blandt de mål, jeg har for i dag, er at dæmpe sådanne bekymringer, du 230 00:12:39,000 --> 00:12:42,430 kan have, men også at male en billede af, hvad der er i vente for 231 00:12:42,430 --> 00:12:45,720 studerende mindre og mere komfortabel ens i dette kursus. 232 00:12:45,720 --> 00:12:49,320 >> Men først et par ord på en af ​​uddelingskopier du har i dag, blandt hvilke 233 00:12:49,320 --> 00:12:50,780 er en række ofte stillede spørgsmål. 234 00:12:50,780 --> 00:12:54,290 Det har været en vision om vores for nogen tid nu at indføre en ny klassificering 235 00:12:54,290 --> 00:12:57,010 option i dette kursus - nemlig SAT / unsat. 236 00:12:57,010 --> 00:13:01,930 Filosofisk for mig, det er meget, meget, meget mere vigtigt, at 237 00:13:01,930 --> 00:13:05,050 elever i denne klasse engagere sig med materiale, blive udfordret af de 238 00:13:05,050 --> 00:13:09,800 materiale, og bekymre langt, langt mindre om mekanik faktiske scoringer 239 00:13:09,800 --> 00:13:12,590 og brev kvaliteter ved semesters ende, men virkelig omfavne 240 00:13:12,590 --> 00:13:13,970 kursus og dets materiale. 241 00:13:13,970 --> 00:13:18,140 Og virkelig det føles mere generelt for, hvad der er interessant for dem, at 242 00:13:18,140 --> 00:13:21,390 føler udfordret og belønnes, men uden frygt for fiasko. 243 00:13:21,390 --> 00:13:25,030 >> Og ja, også dette er et tilbagevendende tema i denne og andre indledende 244 00:13:25,030 --> 00:13:28,680 kurser i andre områder, som du har denne bæven når det kommer til 245 00:13:28,680 --> 00:13:31,040 sætte ens tæer ukendte farvande. 246 00:13:31,040 --> 00:13:34,880 Jeg selv, tilbage i 1995, var en freshman. 247 00:13:34,880 --> 00:13:37,990 Jeg var meget fokuseret på at være a Gov koncentrator her. 248 00:13:37,990 --> 00:13:41,060 Og alligevel ville jeg altid vokset op med en smule af en interesse i datalogi. 249 00:13:41,060 --> 00:13:42,180 Jeg var altid nysgerrig. 250 00:13:42,180 --> 00:13:47,610 >> Men dengang, selv havde jeg denne frygt for selv at træde fod i CS50, så meget 251 00:13:47,610 --> 00:13:49,420 så jeg ikke engang handle det første år. 252 00:13:49,420 --> 00:13:53,460 Og den eneste grund til jeg sætter en fod i dør sophomore år var fordi jeg 253 00:13:53,460 --> 00:13:55,340 fik lov til at tage det bestået / ikke bestået. 254 00:13:55,340 --> 00:13:58,920 Men selv bestået / ikke bestået kræves, at jeg får op den frækhed at lave en aftale 255 00:13:58,920 --> 00:14:01,970 med professor Kernehan dengang, bringe denne store ark papir, og spørg 256 00:14:01,970 --> 00:14:04,470 ham for hans underskrift og hans tilladelse til at udforske 257 00:14:04,470 --> 00:14:05,700 disse uvante farvande. 258 00:14:05,700 --> 00:14:09,030 >> Og det har ikke hjulpet i de seneste år at når du gør dette i CS50, når vi 259 00:14:09,030 --> 00:14:12,500 bruges til at være bestået / ikke bestået, ligeledes ville snesevis eller hundredvis af dine klassekammerater 260 00:14:12,500 --> 00:14:15,970 nødt til at komme op, Gud forbyde det, ved forsiden af ​​Sanders med denne form, 261 00:14:15,970 --> 00:14:19,520 i nogle sind repræsenterer en manglende evne, Jeg tør sige, at udføre 262 00:14:19,520 --> 00:14:20,800 er dine kammerater 'niveau. 263 00:14:20,800 --> 00:14:23,410 Hvilket er latterligt, men jeg tror Der er denne mentalitet. 264 00:14:23,410 --> 00:14:27,210 Og der har aldrig været i denne kultur af SAT / unsat eller bestået / ikke bestået mere 265 00:14:27,210 --> 00:14:30,610 generelt i dette kursus, eller virkelig på denne campus. 266 00:14:30,610 --> 00:14:32,310 >> Så dette år vi ændrede det. 267 00:14:32,310 --> 00:14:35,630 Jeg ville være ekstatisk halvdel af denne klasse eller mere sluttede 268 00:14:35,630 --> 00:14:38,700 at tage CS50 SAT / unsat. 269 00:14:38,700 --> 00:14:42,130 I et års tid, ville det være vidunderligt om næsten alle er. 270 00:14:42,130 --> 00:14:44,410 Derefter måske vi vil arbejde på brev kvaliteter ved Harvard 271 00:14:44,410 --> 00:14:45,480 College mere generelt. 272 00:14:45,480 --> 00:14:48,900 Men for nu, vil vi gøre dette inden for vores egen sfære, og jeg vil varmt 273 00:14:48,900 --> 00:14:53,400 opfordre dig til at gennemgå disse ofte stillede spørgsmål og stille spørgsmål, som du ønsker, så 274 00:14:53,400 --> 00:14:58,000 forhåbentlig du, i modsætning til mig, vil ikke helt har den samme frygt faktor, når 275 00:14:58,000 --> 00:15:01,040 udforske, hvad er nok et ukendt sted. 276 00:15:01,040 --> 00:15:02,786 >> Så hvad er CS50? 277 00:15:02,786 --> 00:15:06,150 Det er en introduktion til den intellektuelle virksomheder af computer 278 00:15:06,150 --> 00:15:07,700 videnskaben og kunsten for programmering. 279 00:15:07,700 --> 00:15:08,770 Men hvad betyder det egentlig? 280 00:15:08,770 --> 00:15:12,510 >> Nå, hidtil, vi talte meget kort om repræsentation af information. 281 00:15:12,510 --> 00:15:15,070 Men formoder, at vi faktisk ønsker at gøre noget med det. 282 00:15:15,070 --> 00:15:17,890 Vi er nødt til at introducere begrebet hvad vi vil kalde en algoritme. 283 00:15:17,890 --> 00:15:21,540 En algoritme er en procedure, en proces, et sæt af instruktioner til 284 00:15:21,540 --> 00:15:22,780 gør noget. 285 00:15:22,780 --> 00:15:25,620 >> Og en algoritme kan være noget super enkel. 286 00:15:25,620 --> 00:15:28,660 For eksempel eksempel en som en række af jer kan være bekendt er det 287 00:15:28,660 --> 00:15:29,350 ting her. 288 00:15:29,350 --> 00:15:32,510 Så denne bog her er i stigende grad dateret, men engang det 289 00:15:32,510 --> 00:15:34,720 indeholdt en hel masse navne og telefonnumre. 290 00:15:34,720 --> 00:15:37,710 Og ja, hvis jeg ønskede at finde nogen i denne telefonbog - 291 00:15:37,710 --> 00:15:39,800 sige, nogen ved navn Mike Smith - 292 00:15:39,800 --> 00:15:43,810 Jeg kunne finde Mike Smith i et vilkårligt antal af forholdsvis ukomplicerede måder. 293 00:15:43,810 --> 00:15:47,700 Jeg kunne starte ved begyndelsen og gå videre til side 1, der ikke. 294 00:15:47,700 --> 00:15:49,240 Side 2, der ikke. 295 00:15:49,240 --> 00:15:49,960 Page 3. 296 00:15:49,960 --> 00:15:53,430 Er denne algoritme er at proces, korrekt? 297 00:15:53,430 --> 00:15:54,620 >> Så det er korrekt, right? 298 00:15:54,620 --> 00:15:58,070 Jeg er lidt en idiot for at gøre det i denne måde, men til sidst vil jeg 299 00:15:58,070 --> 00:16:02,670 finde efternavnet S, og forhåbentlig Mike er i denne sektion, og jeg bliver 300 00:16:02,670 --> 00:16:04,100 gjort med min algoritme. 301 00:16:04,100 --> 00:16:05,440 Men sikkert er det ikke intuitivt. 302 00:16:05,440 --> 00:16:08,020 De fleste enhver rimelig menneske i denne plads ikke ville have gjort. 303 00:16:08,020 --> 00:16:10,180 Hvad ville du have gjort? 304 00:16:10,180 --> 00:16:11,480 >> Du ville være gået direkte til midten, right? 305 00:16:11,480 --> 00:16:12,000 Nogenlunde til midten. 306 00:16:12,000 --> 00:16:16,310 Og du indser, åh, det er disse Ms Så Mike Smith, efternavn bliver Smith, 307 00:16:16,310 --> 00:16:19,050 er ikke klart, derefter i venstre halvdel af bogen. 308 00:16:19,050 --> 00:16:21,040 Han skal være mod S er i den rigtige. 309 00:16:21,040 --> 00:16:24,090 Og på dette punkt, selvom de fleste af os ikke gør dette i virkeligheden, kan vi 310 00:16:24,090 --> 00:16:27,125 bogstaveligt rive dette problem i halve. 311 00:16:27,125 --> 00:16:27,640 >> [Jubler og klapper] 312 00:16:27,640 --> 00:16:28,950 >> DAVID MALAN: Tak. 313 00:16:28,950 --> 00:16:30,150 >> [Jubler og klapper] 314 00:16:30,150 --> 00:16:34,660 >> DAVID MALAN: Du kan bogstaveligt talt rive dette problem i halve, forlader mig med, 315 00:16:34,660 --> 00:16:36,120 bogstaveligt, et problem, halvt så stort. 316 00:16:36,120 --> 00:16:39,750 Så hvis dette telefonbog var - og det formentlig var - omkring 1.000 sider, nu 317 00:16:39,750 --> 00:16:40,840 det er kun 500. 318 00:16:40,840 --> 00:16:44,710 Hvis jeg gør det igen, og jeg er klar over, åh, damn, jeg gik for langt, jeg er i Ts 319 00:16:44,710 --> 00:16:46,480 sektionen, kan jeg ligeledes - 320 00:16:46,480 --> 00:16:48,030 billedligt eller bogstaveligt - 321 00:16:48,030 --> 00:16:50,260 rippe telefonbogen - det var faktisk meget nemmere at tid. 322 00:16:50,260 --> 00:16:53,610 Jeg kan bogstaveligt talt rippe telefonbogen i halve, forlader mig nu med 323 00:16:53,610 --> 00:16:55,186 ikke 1.000, 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 halvdelen af ​​det, og halvdelen af ​​det, og halvdelen af ​​denne, 326 00:17:00,210 --> 00:17:04,760 indtil jeg til sidst vil stå tilbage med blot 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 I mislykkes på. 329 00:17:07,589 --> 00:17:10,400 En enkelt side, hvor Mike forhåbentlig er. 330 00:17:10,400 --> 00:17:14,630 Nu er de forskellige algoritmer kan være slags bedømt eller vurderet i 331 00:17:14,630 --> 00:17:15,270 forskellige måder. 332 00:17:15,270 --> 00:17:17,300 Den første var meget lineær, right? 333 00:17:17,300 --> 00:17:18,500 Vend siden, kigge efter Mike. 334 00:17:18,500 --> 00:17:19,630 Vend siden, kigge efter Mike. 335 00:17:19,630 --> 00:17:20,560 Det er meget lineær. 336 00:17:20,560 --> 00:17:23,339 Hvis der er én side mere i telefonen bog, er det sandsynligvis kommer til at tage mig 337 00:17:23,339 --> 00:17:27,380 en mere sekund, en mere enhed af tid, Men vi computing tid. 338 00:17:27,380 --> 00:17:32,470 >> Så jeg kunne tegne som dette denne linje her, hvorved som størrelsen af ​​den 339 00:17:32,470 --> 00:17:34,700 problemet stiger fra venstre til højre - 340 00:17:34,700 --> 00:17:37,480 telefonbog bliver mindre til større - 341 00:17:37,480 --> 00:17:41,080 og tid kommer til at stige på den lodrette akse, jo større 342 00:17:41,080 --> 00:17:42,030 telefonbogen er. 343 00:17:42,030 --> 00:17:46,180 Så n er blot en generel variabel, dataloger bruger til at repræsentere 344 00:17:46,180 --> 00:17:48,210 vis værdi, nogle tal. 345 00:17:48,210 --> 00:17:50,740 Så n vil øges lineært. 346 00:17:50,740 --> 00:17:53,040 Fordoble størrelsen af ​​telefonbogen, er det kommer til at tage mig dobbelt så meget 347 00:17:53,040 --> 00:17:54,780 tid, mest sandsynligt, at finde Mike. 348 00:17:54,780 --> 00:17:56,390 >> Nu kunne jeg have været smarte om dette, right? 349 00:17:56,390 --> 00:17:57,800 Jeg fik kede hurtigt. 350 00:17:57,800 --> 00:17:58,910 Kunne have gjort dette ved toere. 351 00:17:58,910 --> 00:18:01,870 Så to sider, derefter fire, derefter seks, derefter otte. 352 00:18:01,870 --> 00:18:05,220 Og jeg kunne begynde at flyve igennem det en lidt hurtigere, omend på mindre risiko for 353 00:18:05,220 --> 00:18:09,210 overskridelse Mike, men at kurven ikke er kommer til at være så forskellig. 354 00:18:09,210 --> 00:18:12,550 Det er stadig kommer til at være en lige linje, men lidt hurtigere. 355 00:18:12,550 --> 00:18:13,710 >> Men hvad gjorde jeg? 356 00:18:13,710 --> 00:18:15,845 Jeg rent faktisk gjorde noget fundamentalt bedre. 357 00:18:15,845 --> 00:18:21,990 Jeg opnåede, hvad vi vil kalde logaritmisk tid, log n, hvorved denne grønne 358 00:18:21,990 --> 00:18:27,730 line har en meget, meget, meget mindre lige kant til det. 359 00:18:27,730 --> 00:18:33,050 Og i stedet, det antyder, som det sortere i mod uendelig nogensinde så gradvist, 360 00:18:33,050 --> 00:18:36,700 at jeg faktisk kunne tage en 1.000-siders telefonbog, fordoble sin størrelse 361 00:18:36,700 --> 00:18:39,610 næste år - fordi formoder, at en masse flere mennesker flytter ind til byen. 362 00:18:39,610 --> 00:18:43,250 >> Så nu har jeg fået 2.000 sider, men hvor mange flere trin er, at smartere 363 00:18:43,250 --> 00:18:45,200 algoritme kommer til at tage? 364 00:18:45,200 --> 00:18:46,060 Blot én. 365 00:18:46,060 --> 00:18:48,060 Jeg mener, det er en kraftfuld ting. 366 00:18:48,060 --> 00:18:51,400 Hvis vi går til 4.000 sider næste år, der kommer til at tage mig 367 00:18:51,400 --> 00:18:53,020 kun to trin. 368 00:18:53,020 --> 00:18:56,500 Så du kan smide større og større problemer på mig, ikke ulig nettet er 369 00:18:56,500 --> 00:18:59,560 smide større og større problemer hver dag på Googles og Facebooks af 370 00:18:59,560 --> 00:19:01,590 i verden, og det er ikke sådan en big deal. 371 00:19:01,590 --> 00:19:05,840 Fordi jeg lægge mere tanke og pleje i min algoritme med at løse 372 00:19:05,840 --> 00:19:07,020 problemer effektivt. 373 00:19:07,020 --> 00:19:09,260 >> Og ja, vil det være en af målene for dette kursus. 374 00:19:09,260 --> 00:19:11,230 Du vil undervejs, lære at programmere. 375 00:19:11,230 --> 00:19:13,360 Du vil lære hvordan man programmerer i vilkårligt antal sprog. 376 00:19:13,360 --> 00:19:16,670 Men i slutningen af ​​dagen, er kurset om at løse problemer og få 377 00:19:16,670 --> 00:19:20,490 bedre til at løse problemer - og som i tilfælde som dette, løse problemer 378 00:19:20,490 --> 00:19:22,030 mere effektivt. 379 00:19:22,030 --> 00:19:23,990 >> Nu hidtil har vi gjort dette forholdsvis intuitivt. 380 00:19:23,990 --> 00:19:27,420 Lad os indføre noget forholdsvis generisk kaldet pseudokode. 381 00:19:27,420 --> 00:19:29,150 Så vi vil i sidste ende får, i dette kursus, at 382 00:19:29,150 --> 00:19:30,570 forskellige programmeringssprog. 383 00:19:30,570 --> 00:19:34,280 Men i dag vil vi gøre det på engelsk-lignende syntaks, hvor du bare slags siger 384 00:19:34,280 --> 00:19:37,330 hvad du mener, men du er nogensinde så kortfattet og du behøver ikke bekymre dig om 385 00:19:37,330 --> 00:19:38,960 grammatik og hele sætninger. 386 00:19:38,960 --> 00:19:41,600 Du skal bare udtrykke dig selv som kortfattet som muligt. 387 00:19:41,600 --> 00:19:45,400 >> Så pseudokode er engelsk-lignende syntaks, der repræsenterer 388 00:19:45,400 --> 00:19:46,750 et programmeringssprog. 389 00:19:46,750 --> 00:19:51,170 Og mod denne ende, lad mig foreslå, at vi nu modellere proces vi bare 390 00:19:51,170 --> 00:19:54,990 beskrevet for at tælle noget lidt anderledes, denne gang tager en 391 00:19:54,990 --> 00:19:59,040 se på dette fem-minutters produceret video af vores venner på TED, at 392 00:19:59,040 --> 00:20:03,170 definerer, hvad pseudokode er definerer, hvad algoritmisk tankegang er, og endda 393 00:20:03,170 --> 00:20:07,030 selvom det eksempel, du er ved at se er, i sig selv, super enkel, det er 394 00:20:07,030 --> 00:20:09,820 vil begynde at give os den mentale model, ordforråd, med til at 395 00:20:09,820 --> 00:20:14,588 gøre meget, meget mere kompleks algoritmer ganske hurtigt. 396 00:20:14,588 --> 00:20:15,576 >> [BEGIN VIDEOAFSPILNING] 397 00:20:15,576 --> 00:20:29,920 >> [MUSIC Playing] 398 00:20:29,920 --> 00:20:31,100 >> Fortæller: Hvad er en algoritme? 399 00:20:31,100 --> 00:20:34,730 I datalogi, er en algoritme en sæt af instruktioner til at løse nogle 400 00:20:34,730 --> 00:20:36,620 problem trin for trin. 401 00:20:36,620 --> 00:20:39,650 Typisk algoritmer udføres af computere, men vi mennesker har 402 00:20:39,650 --> 00:20:41,230 algoritmer, så godt. 403 00:20:41,230 --> 00:20:43,290 For eksempel, hvordan ville du gå om at tælle antallet 404 00:20:43,290 --> 00:20:44,750 mennesker i et rum? 405 00:20:44,750 --> 00:20:47,980 Tja, hvis du ligesom mig, du ville nok punkt på hver person, én ad 406 00:20:47,980 --> 00:20:50,120 en tid, og tælle op 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 >> Nå, det er en algoritme. 409 00:20:54,140 --> 00:20:57,600 Faktisk, lad os prøve at udtrykke det en lidt mere formelt i pseudokode - 410 00:20:57,600 --> 00:21:00,700 Engelsk-lignende syntaks der ligner et programmeringssprog. 411 00:21:00,700 --> 00:21:02,580 Lad N være lig med 0.. 412 00:21:02,580 --> 00:21:06,970 For hver person i rummet, der N lig med N plus 1. 413 00:21:06,970 --> 00:21:08,400 >> Hvordan man skal fortolke dette pseudokode? 414 00:21:08,400 --> 00:21:12,840 Nå, line man erklærer, så at sige, en variabel kaldet N og initialiserer 415 00:21:12,840 --> 00:21:14,250 dens værdi til 0. 416 00:21:14,250 --> 00:21:17,550 Det betyder bare, at i begyndelsen af vores algoritme, de ting, som 417 00:21:17,550 --> 00:21:19,650 Vi regner har en værdi af 0. 418 00:21:19,650 --> 00:21:22,620 Efter alt, vi før begynde at tælle, Vi har ikke talt noget endnu. 419 00:21:22,620 --> 00:21:25,340 Opkald denne variabel N er blot en konvention. 420 00:21:25,340 --> 00:21:26,890 Jeg kunne have kaldt det mest noget. 421 00:21:26,890 --> 00:21:30,560 >> Nu line to demarks starten på en løkke, en sekvens af trin, som vil 422 00:21:30,560 --> 00:21:32,310 gentage nogle antal gange. 423 00:21:32,310 --> 00:21:35,910 Så i vores eksempel, det skridt vi tager regner mennesker i lokalet. 424 00:21:35,910 --> 00:21:38,730 Under linie to er linie tre, der beskriver præcis hvordan 425 00:21:38,730 --> 00:21:40,160 vi vil gå om at tælle. 426 00:21:40,160 --> 00:21:43,440 Indrykningen indebærer, at det er line tre, der vil gentage. 427 00:21:43,440 --> 00:21:47,380 >> Så hvad pseudokode siger, er der efter start på 0, for hver 428 00:21:47,380 --> 00:21:50,690 person i rummet, vi vil øge N med 1. 429 00:21:50,690 --> 00:21:53,050 Nu er denne algoritme korrekt? 430 00:21:53,050 --> 00:21:54,580 Nå, lad os bang på det en smule. 431 00:21:54,580 --> 00:21:57,270 Virker det, hvis der er to personer i rummet? 432 00:21:57,270 --> 00:21:58,170 Lad os se. 433 00:21:58,170 --> 00:22:00,260 >> På linje et, initialisere vi N til 0. 434 00:22:00,260 --> 00:22:03,660 For hver af disse to personer, vi derefter tilvækst N med 1. 435 00:22:03,660 --> 00:22:07,310 Så på den første tur gennem loop, vi opdaterer N fra 0 til 1. 436 00:22:07,310 --> 00:22:11,070 På anden tur gennem den samme loop, vi opdaterer N 1 til 2. 437 00:22:11,070 --> 00:22:15,780 Og så ved denne algoritme udgang, er n 2, som faktisk svarer til det antal 438 00:22:15,780 --> 00:22:16,700 personer i rummet. 439 00:22:16,700 --> 00:22:17,760 >> Så langt, så godt. 440 00:22:17,760 --> 00:22:19,610 Hvordan omkring et hjørne tilfælde? Selv 441 00:22:19,610 --> 00:22:22,590 Antag at der er 0 personer i rummet - ud over mig, 442 00:22:22,590 --> 00:22:24,170 hvem der gør optællingen. 443 00:22:24,170 --> 00:22:27,150 På linje et, initialisere vi N til 0. 444 00:22:27,150 --> 00:22:30,280 Denne gang dog linje tre ikke udføre på alle, da der ikke er en 445 00:22:30,280 --> 00:22:31,370 person i rummet. 446 00:22:31,370 --> 00:22:35,260 Og så N forbliver 0, hvilket svarer til Antallet af personer i lokalet. 447 00:22:35,260 --> 00:22:36,420 Ret simpelt, ikke? 448 00:22:36,420 --> 00:22:39,630 >> Men tælle folk én ad gangen er temmelig ineffektiv, også, ikke? 449 00:22:39,630 --> 00:22:40,920 Sikkert vi kan gøre bedre. 450 00:22:40,920 --> 00:22:43,120 Hvorfor ikke tæller to personer ad gangen? 451 00:22:43,120 --> 00:22:49,300 I stedet for at tælle 1, 2, 3, 4, 5, 6, 7, 8, og så videre, hvorfor ikke tælle, 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 lyder endda hurtigere, og det er helt sikkert. 454 00:22:53,700 --> 00:22:56,240 >> Lad os udtrykke denne optimering i pseudokode. 455 00:22:56,240 --> 00:22:57,800 Lad N være lig med 0.. 456 00:22:57,800 --> 00:23:02,450 For hvert par af mennesker i rummet, indstille N lig N plus 2. 457 00:23:02,450 --> 00:23:04,120 Temmelig simpel ændring, right? 458 00:23:04,120 --> 00:23:06,750 Snarere end tæller folk én på en gang, i stedet vi tæller 459 00:23:06,750 --> 00:23:08,300 dem to ad gangen. 460 00:23:08,300 --> 00:23:10,980 Denne algoritme er således to gange så hurtigt som det sidste. 461 00:23:10,980 --> 00:23:12,180 >> Men er det korrekt? 462 00:23:12,180 --> 00:23:12,920 Lad os se. 463 00:23:12,920 --> 00:23:15,330 Virker det, hvis der er to personer i rummet? 464 00:23:15,330 --> 00:23:17,550 På linje et, initialisere vi N til 0. 465 00:23:17,550 --> 00:23:20,920 For at et par mennesker, vi derefter tilvækst N med to. 466 00:23:20,920 --> 00:23:24,860 Og så ved denne algoritme udgang, er N2, som faktisk svarer til det antal 467 00:23:24,860 --> 00:23:25,650 personer i rummet. 468 00:23:25,650 --> 00:23:28,250 >> Antag næste, at der er 0 personer i rummet. 469 00:23:28,250 --> 00:23:30,840 På linje et, initialisere vi N til 0. 470 00:23:30,840 --> 00:23:34,330 Som før, er linie tre ikke eksekvere på alle, der siden er ikke nogen par 471 00:23:34,330 --> 00:23:35,380 mennesker i lokalet. 472 00:23:35,380 --> 00:23:38,350 Og så N forbliver 0, hvilket faktisk svarer til det antal 473 00:23:38,350 --> 00:23:39,570 personer i rummet. 474 00:23:39,570 --> 00:23:42,280 >> Men hvad nu, hvis der er tre personer i rummet? 475 00:23:42,280 --> 00:23:44,130 Hvordan denne algoritme billetpris? 476 00:23:44,130 --> 00:23:44,990 Lad os se. 477 00:23:44,990 --> 00:23:47,460 På linje et, initialisere vi N til 0. 478 00:23:47,460 --> 00:23:50,870 For et par af de mennesker, vi derefter tilvækst N med 2. 479 00:23:50,870 --> 00:23:51,800 Men hvad så? 480 00:23:51,800 --> 00:23:54,960 Der er ikke en anden fuld par af mennesker i rummet, så linie to nej 481 00:23:54,960 --> 00:23:56,180 længere gælder. 482 00:23:56,180 --> 00:24:00,530 Og så ved denne algoritme udgang, N er stadig 2, hvilket ikke er korrekt. 483 00:24:00,530 --> 00:24:03,810 >> Faktisk er denne algoritme siges at være buggy, fordi det har en fejl. 484 00:24:03,810 --> 00:24:05,820 Lader oprejsning med nogle nye pseudokode. 485 00:24:05,820 --> 00:24:09,670 Lad n lige 0 for hvert par mennesker i lokalet. 486 00:24:09,670 --> 00:24:12,550 Indstil N lig med N plus 2. 487 00:24:12,550 --> 00:24:17,140 Hvis en person er fortsat uparrede, indstille N lig N plus 1. 488 00:24:17,140 --> 00:24:20,140 For at løse dette særlige problem, vi har indsat i overensstemmelse fire, en 489 00:24:20,140 --> 00:24:24,520 betingelse, ellers kendt som en filial at kun henretter hvis der er en 490 00:24:24,520 --> 00:24:26,640 person, som vi ikke kunne par med en anden. 491 00:24:26,640 --> 00:24:30,440 Og så nu, om der er én eller tre eller enhver ulige antal personer i 492 00:24:30,440 --> 00:24:33,290 rummet, denne algoritme vil nu tælle dem. 493 00:24:33,290 --> 00:24:34,560 >> Kan vi gøre det endnu bedre? 494 00:24:34,560 --> 00:24:38,820 Nå, kunne vi tælle i 3s eller 4s eller endda 5s og 10s, men ud over det, er det 495 00:24:38,820 --> 00:24:41,360 kommer til at få en lille smule svært at pege. 496 00:24:41,360 --> 00:24:44,660 Ved slutningen af ​​dagen, udføres om af computere eller mennesker, 497 00:24:44,660 --> 00:24:46,750 algoritmer er blot et sæt af instruktioner med 498 00:24:46,750 --> 00:24:48,290 at løse problemer. 499 00:24:48,290 --> 00:24:49,792 Det var blot 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 VIDEOAFSPILNING] 502 00:24:52,901 --> 00:24:55,883 >> DAVID MALAN: Det er den eneste gang Jeg vil blive vist i tegneserie formular. 503 00:24:55,883 --> 00:25:01,050 Men hvor denne historie blade off, nu er, hvordan kan vi gøre bedre? 504 00:25:01,050 --> 00:25:04,680 Treere og firere, vi påstår, at vi kan regne folk meget hurtigere, men kan vi 505 00:25:04,680 --> 00:25:06,290 gøre fundamentalt bedre end det? 506 00:25:06,290 --> 00:25:07,540 Og jeg vædde vi kan. 507 00:25:07,540 --> 00:25:11,980 >> Hvis vi indfører en smule af vores egne pseudokode her, vil jeg foreslå 508 00:25:11,980 --> 00:25:14,550 at vi kan nå en linje som denne. 509 00:25:14,550 --> 00:25:17,280 Vi kommer ikke til at tælle folk én, to, tre, fire. 510 00:25:17,280 --> 00:25:19,470 Vi kommer ikke til at gå to, fire, seks, otte. 511 00:25:19,470 --> 00:25:23,390 Vi kommer til at gøre fundamentalt bedre ved nytænkning af problemet, og i dette 512 00:25:23,390 --> 00:25:27,080 tilfælde, gearing en ellers underudnyttede ressource. 513 00:25:27,080 --> 00:25:31,460 >> På bare et øjeblik, jeg håber du vil tilgive og humor os ved at stå op i 514 00:25:31,460 --> 00:25:34,470 sted, på hvilket punkt vi kommer til at bede hver af jer til at tage på i din 515 00:25:34,470 --> 00:25:36,400 sind nummer 1. 516 00:25:36,400 --> 00:25:39,560 Du derefter gå til stigende kejtet, som tiden går, finder 517 00:25:39,560 --> 00:25:42,740 en anden, der står, kombinere dine tal sammen 518 00:25:42,740 --> 00:25:43,720 ved at tilføje dem op. 519 00:25:43,720 --> 00:25:47,490 En af jer bliver derefter gå til kapløbet om at sidde ned først, og den anden person 520 00:25:47,490 --> 00:25:48,880 kommer til at gentage. 521 00:25:48,880 --> 00:25:53,090 >> Så med andre ord, ved podning alle dig med nummer 1 og derefter 522 00:25:53,090 --> 00:25:57,800 kombinerer disse 1s i 2s og de 2s i 4s, i stigende grad med alle 523 00:25:57,800 --> 00:26:02,740 sidder ned, bør vi i slutningen af denne algoritme, har kun én lån 524 00:26:02,740 --> 00:26:07,570 sjæl, som ikke sidde ned hurtigt nok, men der har hele publikum tæller 525 00:26:07,570 --> 00:26:09,180 i hans eller hendes sind. 526 00:26:09,180 --> 00:26:13,730 >> Så hvis du gerne, så lad os gå videre og - Step One - stå op på plads. 527 00:26:13,730 --> 00:26:15,600 Og udføre. 528 00:26:15,600 --> 00:26:36,580 >> [CROWD mumlende] 529 00:26:36,580 --> 00:26:38,820 >> DAVID MALAN: Kender du hvor Lauren er? 530 00:26:38,820 --> 00:26:40,179 729? 531 00:26:40,179 --> 00:27:23,350 >> [CROWD mumlende] 532 00:27:23,350 --> 00:27:24,340 >> DAVID MALAN: Okay? 533 00:27:24,340 --> 00:27:39,110 >> [CROWD mumlende] 534 00:27:39,110 --> 00:27:41,365 >> DAVID MALAN: Okay, vi skal være nærmer sig slutningen. 535 00:27:41,365 --> 00:27:44,340 536 00:27:44,340 --> 00:27:47,670 Vi ser en fyr stå her stadig. 537 00:27:47,670 --> 00:27:48,770 Hvem ellers skal parres? 538 00:27:48,770 --> 00:27:50,020 Hvis du fyre vil parre sig. 539 00:27:50,020 --> 00:27:53,260 540 00:27:53,260 --> 00:27:56,520 Nogen op øverst. 541 00:27:56,520 --> 00:27:58,150 Hvorfor kan jeg ikke give en hånd her. 542 00:27:58,150 --> 00:28:01,370 For de meget få mennesker, der stadig stående, hvilke numre gør du 543 00:28:01,370 --> 00:28:02,790 har i dit sind? 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 hvem der står hernede? 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 Plus hvem der ellers stadig stående? 550 00:28:12,310 --> 00:28:13,650 81? 551 00:28:13,650 --> 00:28:15,960 OK, hvem ellers? 552 00:28:15,960 --> 00:28:17,200 En anden 81? 553 00:28:17,200 --> 00:28:17,860 Wow. 554 00:28:17,860 --> 00:28:19,210 Og så hvad der er i tilbage? 555 00:28:19,210 --> 00:28:20,360 >> STUDENT: 49.. 556 00:28:20,360 --> 00:28:21,812 >> DAVID MALAN: 49 plus? 557 00:28:21,812 --> 00:28:22,950 >> STUDENT: 98. 558 00:28:22,950 --> 00:28:24,980 >> DAVID MALAN: 98 plus? 559 00:28:24,980 --> 00:28:28,190 Er det en anden? 560 00:28:28,190 --> 00:28:29,155 12? 561 00:28:29,155 --> 00:28:30,460 Godt arbejde. 562 00:28:30,460 --> 00:28:33,610 >> [Latter] 563 00:28:33,610 --> 00:28:34,690 >> DAVID MALAN: Åh, 112 - 564 00:28:34,690 --> 00:28:35,410 oh. 565 00:28:35,410 --> 00:28:36,220 Godt arbejde! 566 00:28:36,220 --> 00:28:38,660 >> [Latter] 567 00:28:38,660 --> 00:28:42,570 >> [Applaus] 568 00:28:42,570 --> 00:28:43,820 >> DAVID MALAN: Alle andre stadig stående? 569 00:28:43,820 --> 00:28:46,710 570 00:28:46,710 --> 00:28:47,260 Undskyld? 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 stadig stående? 574 00:28:52,620 --> 00:28:57,290 Og det samlede antal studerende her er faktisk, ifølge - 575 00:28:57,290 --> 00:28:59,400 har du et nummer? 576 00:28:59,400 --> 00:29:03,170 Åh, det faktiske antal personer i rum, ifølge den konto, 577 00:29:03,170 --> 00:29:07,660 de pædagogiske fellows lavede på alles måde, var 729. 578 00:29:07,660 --> 00:29:11,070 Så ud af en stuen fuld af Harvard studerende der tælles 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å tæt. 582 00:29:16,350 --> 00:29:17,360 Men stadig. 583 00:29:17,360 --> 00:29:22,110 OK, så det er en undervisning øjeblik, right? 584 00:29:22,110 --> 00:29:24,120 Det er nu, hvad vi beskriver som en fejl. 585 00:29:24,120 --> 00:29:28,120 Et eller andet sted på vejen, vi gjorde nogle aritmetiske forkert, eller nogen satte sig ned, 586 00:29:28,120 --> 00:29:29,930 eller venstre, eller noget gik 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 stadig, vi fik temmelig tæt på. 589 00:29:33,390 --> 00:29:37,480 Og jeg ville argumentere for, at vi kom til den forkerte besvare en masse hurtigere, end jeg ville have 590 00:29:37,480 --> 00:29:39,770 bruger min mere lineær tilgang. 591 00:29:39,770 --> 00:29:42,630 >> Så lad os antage, at vi rent faktisk få det rette, men synes nu over, hvad 592 00:29:42,630 --> 00:29:46,870 skete hver gang, kontra min egen naive peger algoritme. 593 00:29:46,870 --> 00:29:48,420 En, to, tre. 594 00:29:48,420 --> 00:29:53,010 Hvis der er faktisk 729 eller 637 personer her, ville der have taget mig 595 00:29:53,010 --> 00:29:57,720 bogstaveligt 637 eller 729 pointings af fingeren og 596 00:29:57,720 --> 00:29:59,490 forøgelse min samlede optælling. 597 00:29:59,490 --> 00:30:01,910 Og jeg kunne gøre lidt bedre ved går to, fire, seks, otte, og 598 00:30:01,910 --> 00:30:05,660 det dobbelte hastighed, måske endda tredobbelt eller firdoble, afhængig af hvor godt jeg kan 599 00:30:05,660 --> 00:30:07,110 gør, at tælle i mit hoved. 600 00:30:07,110 --> 00:30:10,720 >> Men denne tilgang, at du fyre tog var fundamentalt anderledes. 601 00:30:10,720 --> 00:30:12,770 Fordi i begyndelsen, alle jer stod op. 602 00:30:12,770 --> 00:30:14,620 Så alt 729. 603 00:30:14,620 --> 00:30:17,370 Og så bogstaveligt halvdelen af du sad. 604 00:30:17,370 --> 00:30:19,720 Og efter det, en anden halvdelen af ​​du sad. 605 00:30:19,720 --> 00:30:22,650 Og efter det, en anden halvdelen af ​​du sad. 606 00:30:22,650 --> 00:30:27,470 >> Og det samlede antal gange, som du fyre kunne have siddet ned er nogenlunde 607 00:30:27,470 --> 00:30:31,740 otte eller ni eller ti i alt tider, afhængigt af, hvad vores samlede optælling er. 608 00:30:31,740 --> 00:30:33,300 Og vi kan sortere i gøre dette den anden vej. 609 00:30:33,300 --> 00:30:37,740 Hvis vi havde 1.024 personer i rummet, samlede antal gange, du kan 610 00:30:37,740 --> 00:30:41,870 halvere 1.024 mennesker er 10. 611 00:30:41,870 --> 00:30:43,370 >> Nu tænker over det i den anden retning. 612 00:30:43,370 --> 00:30:49,170 Antag, latterligt, at vi havde, siger fire milliarder mennesker i dette rum, 613 00:30:49,170 --> 00:30:50,860 eller et lidt større rum. 614 00:30:50,860 --> 00:30:54,550 Hvor mange gange ville vi være gået gennem denne algoritme, således at halvdelen 615 00:30:54,550 --> 00:30:58,110 af denne klasse sidder ned? 616 00:30:58,110 --> 00:31:03,050 Det er kun kommer til at tage 32 sådanne drift, selv i en klasse af størrelse 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 mia går til en million, går til 620 00:31:06,980 --> 00:31:09,925 500 millioner går til 250 million, prik, prik, prik. 621 00:31:09,925 --> 00:31:14,940 Jeg kan kun gøre denne deling nogle 32 tidspunkter, på hvilket tidspunkt, alle undtagen 622 00:31:14,940 --> 00:31:17,820 én person ville blive efterladt stående. 623 00:31:17,820 --> 00:31:21,590 >> Og det også er en slags magtfuld idé, at vi i stigende grad vil prøve at 624 00:31:21,590 --> 00:31:24,690 gearing i dette kursus, og programmering og datalogi mere 625 00:31:24,690 --> 00:31:29,400 Generelt er disse bakterier i en idé med som vi derefter kan løse problemer meget, 626 00:31:29,400 --> 00:31:31,130 meget mere kraftfuldt. 627 00:31:31,130 --> 00:31:34,610 Så vi startede ganske enkel med det pseudokode og en fyr i et rum, men 628 00:31:34,610 --> 00:31:38,205 nu med et helt rum fuld af mennesker har vi gjort fundamentalt bedre. 629 00:31:38,205 --> 00:31:41,460 >> Nå, lad os nu overgang fra pseudokode til nogle konkrete kode. 630 00:31:41,460 --> 00:31:44,200 Dette sprog du er ved at se ske at blive kaldt JavaScript og 631 00:31:44,200 --> 00:31:46,190 vi vil vende tilbage til dette i retning af semesters afslutning. 632 00:31:46,190 --> 00:31:49,960 Det er et programmeringssprog, som du bruger til at lave hjemmesider og andre sådanne 633 00:31:49,960 --> 00:31:51,360 software i disse dage. 634 00:31:51,360 --> 00:31:54,890 Og vi har brugt det, takket være en ven af vores på Stanford, indkode til 635 00:31:54,890 --> 00:31:56,630 nogle skjulte oplysninger her. 636 00:31:56,630 --> 00:31:59,500 Dette er kunsten steganografi, så at sige, hvor du kan skjule 637 00:31:59,500 --> 00:32:03,990 oplysninger i hvad der ellers synes at være støj eller en helt anden 638 00:32:03,990 --> 00:32:05,220 billede helt. 639 00:32:05,220 --> 00:32:10,120 Men indlejret i denne bestemt billede er faktisk en hemmelig besked slags. 640 00:32:10,120 --> 00:32:12,950 >> Så lad mig gå videre og trække op det samme billede her, dette 641 00:32:12,950 --> 00:32:14,270 tid i en webbrowser. 642 00:32:14,270 --> 00:32:17,710 Og jeg har tænkt mig at vinke min hånd på nogle af detaljerne for i dag, især 643 00:32:17,710 --> 00:32:21,780 for dem af jer der det ligner ikke kun JavaScript, men græsk, som en 644 00:32:21,780 --> 00:32:23,930 helt uvant sprog. 645 00:32:23,930 --> 00:32:26,190 Men dette er et eksempel på et programmeringssprog. 646 00:32:26,190 --> 00:32:30,660 >> Og for nu, tage på tro på, at denne første linje kode - 647 00:32:30,660 --> 00:32:32,470 og kode, jeg bare betyde tekst. 648 00:32:32,470 --> 00:32:35,660 Tekst, jeg kunne have bogstaveligt indtastet til Microsoft Word, I, hvis havde 649 00:32:35,660 --> 00:32:37,630 rigtige software til at så gøre noget med det. 650 00:32:37,630 --> 00:32:42,120 Kildekode, programmering kode, er egentlig bare tekst, og det 651 00:32:42,120 --> 00:32:45,420 ser anderledes baseret på, hvad sprog du bruger, ikke ulig engelsk og 652 00:32:45,420 --> 00:32:49,200 Spansk og russisk alle ser anderledes når du skriver dem på tastaturet. 653 00:32:49,200 --> 00:32:53,520 >> Så dette første linje, tager for nu tro, blot åbner en grafik fra 654 00:32:53,520 --> 00:32:56,160 internettet, at støjende grafik vi lige så. 655 00:32:56,160 --> 00:32:59,900 Denne næste linie her er et eksempel på en loop, og vi faktisk så, at samme 656 00:32:59,900 --> 00:33:01,130 jargon i TED video. 657 00:33:01,130 --> 00:33:03,750 En løkke er noget, der sker igen og igen, og selvom dette 658 00:33:03,750 --> 00:33:08,440 absolut ser kryptisk, med nøgleordet for, og nogle parenteser, og 659 00:33:08,440 --> 00:33:09,510 nogle semikolon. 660 00:33:09,510 --> 00:33:13,070 Vi vil vende tilbage til dette inden længe, men at sløjfe der hovedsagelig er 661 00:33:13,070 --> 00:33:17,310 fortæller programmet, gentage over alle af disse støjende prikker, venstre fra til 662 00:33:17,310 --> 00:33:18,980 højre, top til bund. 663 00:33:18,980 --> 00:33:21,260 >> Fordi i slutningen af ​​dagen, et billede gerne dette - og du kan faktisk 664 00:33:21,260 --> 00:33:22,860 slags se det på denne projektor - 665 00:33:22,860 --> 00:33:25,280 er egentlig bare et gitter af prikker. 666 00:33:25,280 --> 00:33:29,730 Så vi kan identificere hver enkelt af disse punkter ved et koordinatsystem, x, y, med og dette 667 00:33:29,730 --> 00:33:33,890 program, kan vi nu begynde at gøre noget for disse prikker. 668 00:33:33,890 --> 00:33:37,540 >> Så hvad jeg har tænkt mig at gå videre her og gør, er jeg har tænkt mig at foretage nogle ændringer. 669 00:33:37,540 --> 00:33:41,000 Først vil jeg tænkt mig at gå videre og slippe af alt dette grønlig og blålig 670 00:33:41,000 --> 00:33:43,520 støj, og jeg har tænkt mig at gå videre og skriv følgende 671 00:33:43,520 --> 00:33:45,710 ganske kryptisk syntaks. 672 00:33:45,710 --> 00:33:48,020 im for billedet. 673 00:33:48,020 --> 00:33:53,380 sæt blåt ved placeringen x, komma, Placeringen y, til 0. 674 00:33:53,380 --> 00:33:55,610 Med andre ord, vil jeg bare slukke for alle de blå 675 00:33:55,610 --> 00:33:56,920 prikker i det billede. 676 00:33:56,920 --> 00:33:59,800 >> Jeg har tænkt mig at gå videre nu, og klik på denne Run / Save-knappen, og du vil 677 00:33:59,800 --> 00:34:02,850 mærke på højre side, det resulterende billede vises. 678 00:34:02,850 --> 00:34:06,120 Nu er det super grøn, men det er ikke overraskende, fordi jeg bogstaveligt talt vendt 679 00:34:06,120 --> 00:34:11,070 slukket, ved at lave en 1 en 0, af alle det blå i dette billede. 680 00:34:11,070 --> 00:34:12,540 >> Nå, nu lad os gøre det lidt mere. 681 00:34:12,540 --> 00:34:16,989 im til billedet, dot setGreen, x, y. 682 00:34:16,989 --> 00:34:20,659 Og det betyder bare gentage fra venstre mod højre og derefter fra top til bund. 683 00:34:20,659 --> 00:34:23,520 Slå funktionen fra med en værdi af 0, så godt. 684 00:34:23,520 --> 00:34:24,750 Gem. 685 00:34:24,750 --> 00:34:28,100 Og på projektoren, kan du faktisk ikke rigtig se noget overhovedet. 686 00:34:28,100 --> 00:34:31,380 >> På min laptop skærm, I, hvis peer i blot den rigtige måde, kan jeg se lidt af en 687 00:34:31,380 --> 00:34:33,300 billede, fordi de er stadig nogle røde derinde. 688 00:34:33,300 --> 00:34:35,540 Hvis du nogensinde har hørt akronymet RGB - 689 00:34:35,540 --> 00:34:36,830 rød, grøn, blå - 690 00:34:36,830 --> 00:34:39,110 det er med henvisning til denne sammensætning af et billede ved hjælp af 691 00:34:39,110 --> 00:34:40,230 netop disse tre farver. 692 00:34:40,230 --> 00:34:43,159 Og lige nu har vi smidt væk alle grønne, alt blåt, men 693 00:34:43,159 --> 00:34:44,500 der er ikke meget rødt. 694 00:34:44,500 --> 00:34:45,920 >> Så lad mig skrue op for rødt. 695 00:34:45,920 --> 00:34:47,070 Hvordan kan jeg gøre det? 696 00:34:47,070 --> 00:34:49,300 Nå, først vil jeg bede dette program et spørgsmål. 697 00:34:49,300 --> 00:34:52,030 Jeg har tænkt mig at gå videre og lad os kalde det en variabel, ligesom i algebra. 698 00:34:52,030 --> 00:34:54,060 Du kan have x eller y eller z. 699 00:34:54,060 --> 00:34:57,230 Jeg har tænkt mig at erklære en variabel og sige, sat i denne variabel, 700 00:34:57,230 --> 00:35:02,790 midlertidigt, værdien af billeder getRed værdi på x, y. 701 00:35:02,790 --> 00:35:05,870 >> Og igen, vi vil komme tilbage til alle af denne detalje i fremtiden. 702 00:35:05,870 --> 00:35:10,630 Men for nu, blot tage på tro, at denne linje beder programmet, hvad 703 00:35:10,630 --> 00:35:12,740 er den røde værdi ved x, y? 704 00:35:12,740 --> 00:35:14,450 På det pågældende prik? 705 00:35:14,450 --> 00:35:15,710 >> Så jeg har tænkt mig at gøre noget for det. 706 00:35:15,710 --> 00:35:21,100 Så jeg har tænkt mig at gøre billedet dot sæt rød ved x, y, y, men denne gang jeg har tænkt mig at 707 00:35:21,100 --> 00:35:24,760 øge det ved at gøre røde tider, lad os sige, 10. 708 00:35:24,760 --> 00:35:26,870 Så øge det ved en faktor 10. 709 00:35:26,870 --> 00:35:29,880 Lad mig zoome ud nu, og klik kunne løbe / Gem. 710 00:35:29,880 --> 00:35:36,430 Og voila, der var der hele tid, selv om vores menneskelige øjne 711 00:35:36,430 --> 00:35:37,900 kunne ikke helt se det. 712 00:35:37,900 --> 00:35:41,470 >> Så igen, denne nu er reel kode, en eksempel på et sprog, som vi vil komme 713 00:35:41,470 --> 00:35:42,770 tilbage til inden længe. 714 00:35:42,770 --> 00:35:46,670 Men indse, især dem af jer uden en sådan erfaring, er det helt 715 00:35:46,670 --> 00:35:50,280 snart at vi selv vil være skrive kode som den der. 716 00:35:50,280 --> 00:35:54,520 I virkeligheden som et værktøj, du er alle noget fortrolig, måske, er CS50 s 717 00:35:54,520 --> 00:35:57,330 eget kursus-shopping værktøj, som var faktisk genstartet denne sommer af nogle 718 00:35:57,330 --> 00:36:01,070 af CS50 egne tidligere elever, nu vende TFs. 719 00:36:01,070 --> 00:36:04,740 >> Så det sker for at være en indbygget hjemmeside på et sprog, der kaldes PHP. 720 00:36:04,740 --> 00:36:08,510 Det bruger en database kaldet MySQL, tingene som vi får vores hænder 721 00:36:08,510 --> 00:36:10,190 beskidt senere i semesteret. 722 00:36:10,190 --> 00:36:14,140 Men tro det eller ej, selv noget ligesom dette i sidste ende reducerer de 723 00:36:14,140 --> 00:36:19,480 enkleste af loops og betingelser, og grene, som dem, vi oplevede bare en 724 00:36:19,480 --> 00:36:21,530 øjeblik siden i TED video. 725 00:36:21,530 --> 00:36:25,180 >> Hvad jeg troede, jeg ville gøre nu, er aktien ikke bare noget, vi har personale gjort 726 00:36:25,180 --> 00:36:28,010 for campus, men snarere noget en tidligere elev - tre 727 00:36:28,010 --> 00:36:29,080 studerende, i virkeligheden - 728 00:36:29,080 --> 00:36:33,950 gjort det seneste år, Sierra, Daniel og Sam, den sidste af dem havde ingen forudgående 729 00:36:33,950 --> 00:36:36,370 programmering erfaring da han tog CS50. 730 00:36:36,370 --> 00:36:39,950 Og for deres afsluttende projekt, de udstillet på CS50 Fair, en 731 00:36:39,950 --> 00:36:43,720 program kaldet wrdly, hvilket er en web-baseret program, som de gjorde 732 00:36:43,720 --> 00:36:47,670 denne video, som jeg troede, jeg ville dele med give dig en fornemmelse af, hvad der er 733 00:36:47,670 --> 00:36:49,280 muligt ved udtrykket udgang. 734 00:36:49,280 --> 00:37:57,170 >> [MUSIC Playing] 735 00:37:57,170 --> 00:38:00,570 >> DAVID MALAN: Det er fra uge Zero til uge 12 det seneste år. 736 00:38:00,570 --> 00:38:05,470 >> [Applaus] 737 00:38:05,470 --> 00:38:09,520 >> DAVID MALAN: Som en teaser, også, virkelig at hvæsse din appetit er, hvad der er 738 00:38:09,520 --> 00:38:14,580 muligt, kan du allerede har set, eller måske snart se, market.cs50.net, en 739 00:38:14,580 --> 00:38:17,710 nyt værktøj, som kursets hold har arbejdet på, denne gang i 740 00:38:17,710 --> 00:38:21,530 samarbejde med Harvard Student Organer, såsom at der starter i år 741 00:38:21,530 --> 00:38:24,980 og fortsætter forhåbentlig i dette kommende sommer har du en standard 742 00:38:24,980 --> 00:38:27,890 lejlighed på campus for at købe og sælge ting af interesse for dig. 743 00:38:27,890 --> 00:38:32,220 Og med partnerskabet via HSA, vil du også være i stand til at slippe elementer fra 744 00:38:32,220 --> 00:38:35,950 i en af ​​HSA fysiske butikker ved nogle i fremtiden, således at 745 00:38:35,950 --> 00:38:39,150 proxy ting, især som du graduate og ikke nødvendigvis ønsker at 746 00:38:39,150 --> 00:38:44,110 kassere ting, men faktisk betaler det videresende til folk, der kan følge dig 747 00:38:44,110 --> 00:38:45,270 her på campus. 748 00:38:45,270 --> 00:38:46,740 Så mere om det at komme. 749 00:38:46,740 --> 00:38:49,830 >> Men lidt mere konkret, et værktøj der er kommet ud af CS50 i de seneste 750 00:38:49,830 --> 00:38:52,760 år som nogle af jer måske velkendte, og andre af jer måske 751 00:38:52,760 --> 00:38:57,940 googling nu, CS50.net/2x, du finde et link til en Chrome forlængelse 752 00:38:57,940 --> 00:39:01,250 hvilket er demonstrative, hvordan du kan bruge JavaScript, det samme sprog, vi 753 00:39:01,250 --> 00:39:06,660 bruges med Eiffeltårnet et øjeblik siden, at gennemføre 2x afspilningshastighed 754 00:39:06,660 --> 00:39:09,000 for alle Harvard iSites videoer. 755 00:39:09,000 --> 00:39:11,880 Det er noget, der er bygget i CS50 egen videoafspiller. 756 00:39:11,880 --> 00:39:14,870 Men også dette til, hvis du begynder at grave i kildekoden, som vi vil 757 00:39:14,870 --> 00:39:18,840 lykkeligt til rådighed, vil du se, hvordan du kan endda løse problemer som disse, 758 00:39:18,840 --> 00:39:23,180 accelererende widgets i hjemmesider med som du allerede godt bekendt. 759 00:39:23,180 --> 00:39:26,630 >> Så et ord nu er på kurset og forventninger og hvad der ligger forude. 760 00:39:26,630 --> 00:39:29,445 Generelt vil vi faktisk samles her på mandage og onsdage - selvom 761 00:39:29,445 --> 00:39:31,490 denne fredag, vil vi samles, fordi af Shopping Week - 762 00:39:31,490 --> 00:39:34,640 1:00 til 2:00, skønt undertiden indtil 02:30. 763 00:39:34,640 --> 00:39:38,700 I betragtning af at du derfor måske ønsker eller nødt til at tage nogle klasse på 02:00 764 00:39:38,700 --> 00:39:42,480 fremefter, eller endda før, indser de Kurset er støtter, hvad der kaldes 765 00:39:42,480 --> 00:39:45,900 samtidige tilmelding, hvorved vi får understøtte et andragende til Ad bestyrelsen og 766 00:39:45,900 --> 00:39:49,400 din bopæl dekaner på dine vegne, hvis du har en konflikt sted i dette 767 00:39:49,400 --> 00:39:50,790 1:00 til 02:30 rækkevidde. 768 00:39:50,790 --> 00:39:54,110 Head til denne URL online for yderligere oplysninger. 769 00:39:54,110 --> 00:39:57,750 >> Men i form af støttestrukturen der kendetegner CS50, for studerende 770 00:39:57,750 --> 00:40:01,750 mere og mindre behagelig ens, vi tilbyde forskellige spor af sektioner. 771 00:40:01,750 --> 00:40:04,730 Og det er et par uger væk, men inden længe vil du blive bedt om at 772 00:40:04,730 --> 00:40:05,770 din komfort niveau. 773 00:40:05,770 --> 00:40:08,590 Er du blandt dem mindre behagelig, mere komfortabel, eller 774 00:40:08,590 --> 00:40:10,520 et sted i mellem? 775 00:40:10,520 --> 00:40:13,150 >> Og vi har tre særskilte spor, der appellerer til 776 00:40:13,150 --> 00:40:14,470 netop de målgrupper. 777 00:40:14,470 --> 00:40:17,900 Så på intet tidspunkt i udtrykket skulle du engang har lyst til du konkurrerer 778 00:40:17,900 --> 00:40:21,390 mod enhver studerende med mere eller mindre baggrund end dig. 779 00:40:21,390 --> 00:40:24,160 Faktisk er det naturligvis menes at være langt mere samarbejdsorienteret og meget 780 00:40:24,160 --> 00:40:25,650 mere åben end det. 781 00:40:25,650 --> 00:40:29,030 >> Med hensyn til problemet sæt, vil du finde også, at ud over de 782 00:40:29,030 --> 00:40:32,130 Standardudgaven af ​​hver uge problem indstillet, er der ofte en "hacker 783 00:40:32,130 --> 00:40:37,010 edition ", der er beregnet til at være målrettet ved 5% til 10% eller deromkring af 784 00:40:37,010 --> 00:40:40,270 demografiske der er faktisk blandt dem mere komfortabel og gerne mere 785 00:40:40,270 --> 00:40:43,960 af en udfordring end standard udgave af denne Pset forventer. 786 00:40:43,960 --> 00:40:46,390 Flere detaljer om dem, der skal findes i pensum. 787 00:40:46,390 --> 00:40:49,430 >> Men også i der kan findes oplysninger på kurserne sene dage. 788 00:40:49,430 --> 00:40:51,570 Typisk problem sætter skyldes om torsdagen. 789 00:40:51,570 --> 00:40:55,550 Men du kan udvide mange af dine deadlines dette efterår fra torsdag til 790 00:40:55,550 --> 00:41:00,010 Fredage blot at møde os halvvejs, så at sige, besvare et par warm-up 791 00:41:00,010 --> 00:41:03,370 spørgsmål i nogle af ugens problemet sæt, der vil automatisk 792 00:41:03,370 --> 00:41:05,710 derefter give dig en ekstra 24 timer. 793 00:41:05,710 --> 00:41:09,120 Vi vil også slippe dine laveste score, som pr pensum. 794 00:41:09,120 --> 00:41:12,170 >> For at give dig en fornemmelse af, hvad problemet sæt er - fordi det er faktisk 795 00:41:12,170 --> 00:41:15,120 kursets problemet sæt, at sidste ende definerer næsten alle 796 00:41:15,120 --> 00:41:18,760 studerendes erfaringer, mere end foredrag i højere grad end sektioner flere 797 00:41:18,760 --> 00:41:21,230 grad end de fleste andre aspekt af kurset. 798 00:41:21,230 --> 00:41:25,140 Sidste år, for eksempel, begyndte vi som Vi begynder i år, med Scratch. 799 00:41:25,140 --> 00:41:29,150 Især denne fredag, vil vi bruge, for kun én dags tid, en grafisk 800 00:41:29,150 --> 00:41:32,260 programmeringssprog, som vi vil starte programmeringen ved at trække og 801 00:41:32,260 --> 00:41:37,580 droppe puslespilsbrikker der kun samle fysisk, hvis det giver mening 802 00:41:37,580 --> 00:41:38,990 at gøre det logisk. 803 00:41:38,990 --> 00:41:43,460 >> I næste uge, vi vil hurtigt overgang til C, en temmelig gamle, men meget lille og 804 00:41:43,460 --> 00:41:48,510 enkelt sprog, som vil give os mulighed for at virkelig gå 0-60 løbet 805 00:41:48,510 --> 00:41:52,290 af blot et par uger, og derefter parlay de samme færdigheder og viden om 806 00:41:52,290 --> 00:41:56,160 grundlæggende programmering konstruktioner i højere niveau sprog som PHP, 807 00:41:56,160 --> 00:41:58,240 JavaScript og endnu andre stille. 808 00:41:58,240 --> 00:42:02,560 >> Sidste år, den tredje Pset i løbet var, at kryptografi, en 809 00:42:02,560 --> 00:42:06,380 domain-specifik anvendelse, hvorved vi udfordret eleverne til at gennemføre nogen 810 00:42:06,380 --> 00:42:11,140 antal ciphers, programmer, som at forvrænge eller dekryptere information, 811 00:42:11,140 --> 00:42:11,880 at kryptere det. 812 00:42:11,880 --> 00:42:16,300 For hackeren edition, derimod Vi gav hacker eleverne en fil 813 00:42:16,300 --> 00:42:19,900 fra en standard UNIX computer indeholdende brugernavne og adgangskoder, 814 00:42:19,900 --> 00:42:22,740 sidstnævnte som var krypteret, og vi udfordrede dem hacker 815 00:42:22,740 --> 00:42:26,850 studerende til at dekryptere, som de bedst kunne, disse passwords, stadig på, at 816 00:42:26,850 --> 00:42:27,770 samme domæne. 817 00:42:27,770 --> 00:42:30,580 >> Scramble, et spil med, hvor nogle af jer er måske bekendt. 818 00:42:30,580 --> 00:42:34,410 En retsvidenskab stykke hvor vi spørge eleverne at gendanne data, der havde været 819 00:42:34,410 --> 00:42:38,530 ellers slettet fra min egen digitale kameraets compact flash-kort, som 820 00:42:38,530 --> 00:42:42,740 faktisk skriver software til at regne ud, hvor var nuller og ettaller i 821 00:42:42,740 --> 00:42:46,850 at digitale kamera, der tidligere komponeret en JPEG grafik? 822 00:42:46,850 --> 00:42:49,710 >> En udfordring af sorterer sidste år involverer skriver den hurtigste 823 00:42:49,710 --> 00:42:53,160 stavekontrol er muligt, konkurrerende mod venner og klassekammerater, hvis 824 00:42:53,160 --> 00:42:53,860 de gerne vil. 825 00:42:53,860 --> 00:42:56,330 Implementering Huff 'n Puff, en kompression program. 826 00:42:56,330 --> 00:43:01,930 Og så slutter semesteret med CS50 Finance, et web-baseret program med 827 00:43:01,930 --> 00:43:06,570 som du opretter en eTrade-lignende website at købe og sælge aktier, så at 828 00:43:06,570 --> 00:43:09,860 tale, ved faktisk at trække næsten real-time citater Yahoo! 829 00:43:09,860 --> 00:43:10,450 Finansiering. 830 00:43:10,450 --> 00:43:13,590 >> Hvad vi ikke gjorde sidste år, var ét problem sæt, der forbliver 831 00:43:13,590 --> 00:43:14,810 ikke desto mindre en favorit. 832 00:43:14,810 --> 00:43:18,400 Hvis du aldrig har gået til shuttle.cs50.net, vil du se en brugers 833 00:43:18,400 --> 00:43:19,670 interface en lidt ligesom dette. 834 00:43:19,670 --> 00:43:23,530 Men for to år siden, klassen implementeres ved hjælp af Google Maps og 835 00:43:23,530 --> 00:43:28,570 Google Earth plug-in og en lille smule af kyndige med at køre rundt campus, 836 00:43:28,570 --> 00:43:33,290 så målet i dette spil var, som du kan se nogle af de ansigter, 837 00:43:33,290 --> 00:43:37,530 er at køre rundt campus søger personale, undervisning stipendiater og CA, og 838 00:43:37,530 --> 00:43:40,080 når du gør, sætte dem på din shuttle bus. 839 00:43:40,080 --> 00:43:44,035 Ingen af ​​dem synes faktisk at være her, så vi kommer til at indtaste en snyde kode. 840 00:43:44,035 --> 00:43:47,150 >> [Latter] 841 00:43:47,150 --> 00:43:48,430 >> DAVID MALAN: Der går vi. 842 00:43:48,430 --> 00:43:49,240 Ok. 843 00:43:49,240 --> 00:43:51,750 Og her nu er personalet snøret hele campus. 844 00:43:51,750 --> 00:43:54,530 Og som du kan se, på højre hånd side af skærmen, shuttle bus 845 00:43:54,530 --> 00:43:55,510 har tomme pladser. 846 00:43:55,510 --> 00:43:59,000 Og målet var at skrive kode med at simulere dette 847 00:43:59,000 --> 00:44:01,790 kørsel og optagning og slippe off af passagerer. 848 00:44:01,790 --> 00:44:04,960 At man, også ved hjælp af et sprog hedder JavaScript. 849 00:44:04,960 --> 00:44:10,030 Så indse, at programmer som der vil være på vores samme bane dette 850 00:44:10,030 --> 00:44:10,910 år, så godt. 851 00:44:10,910 --> 00:44:13,640 >> Med hensyn nu, for supplerende støtte, Vi har kontortid. 852 00:44:13,640 --> 00:44:16,520 Som du måske har set i dit eget hus spisesal eller i Annenberg, 853 00:44:16,520 --> 00:44:19,280 vi vil være i huset spisning haller fire nætter om ugen - 854 00:44:19,280 --> 00:44:24,450 Leverett, Pfoho, Eliot og Annenberg dette år, fra 20:00 til 11:00. 855 00:44:24,450 --> 00:44:26,830 Og hvad vi troede, vi ville gøre dette år er noget lidt anderledes. 856 00:44:26,830 --> 00:44:29,650 >> Hvis du har hørt rygter sidste år, at det var lidt for stressende, dette 857 00:44:29,650 --> 00:44:32,800 års kontortid, som vi vil beskrive i næste uge, vil være mere organisk, 858 00:44:32,800 --> 00:44:36,900 hvorved ved ankomsten, vil du være sendes til en bestemt tabel 859 00:44:36,900 --> 00:44:39,860 hvor flere medarbejdere venter, og vi vil gøre tingene meget mere 860 00:44:39,860 --> 00:44:40,440 økologisk. 861 00:44:40,440 --> 00:44:43,740 Ikke mere kø, ikke mere iPad, men hellere have mere intim 862 00:44:43,740 --> 00:44:47,300 samtaler omkring et bord for bare otte eller så studerende så vi 863 00:44:47,300 --> 00:44:50,880 omtrentlige fornemmelsen af ​​hvad der ellers ville være en meget mindre klasse. 864 00:44:50,880 --> 00:44:54,120 >> Vi tilbyder, så godt, disse ting vi kaldet walkthroughs, filmet videoer 865 00:44:54,120 --> 00:44:57,330 forhånd af en af ​​kursets undervisning stipendiater, Zamyla, hvor hun 866 00:44:57,330 --> 00:45:00,690 fører dig gennem ugen problem sæt, der tilbyder tips og tricks til 867 00:45:00,690 --> 00:45:02,640 udfordringer, der lå forude. 868 00:45:02,640 --> 00:45:06,230 Og omvendt, når problemet sæt er skyldes dette år, vil vi også frigive 869 00:45:06,230 --> 00:45:09,100 små klip kalder obduktioner, at faktisk gå dig igennem 870 00:45:09,100 --> 00:45:13,630 repræsentative løsninger, både gode og dårlig, via hvilket du kan udlede, hvordan 871 00:45:13,630 --> 00:45:17,550 du kunne have eller burde have implementeret din egen løsning. 872 00:45:17,550 --> 00:45:20,500 >> Og hvad vi vil tilbyde for første gang dette år så godt, især 873 00:45:20,500 --> 00:45:23,420 for de studerende, der benytter sig af kurset øvrige 874 00:45:23,420 --> 00:45:28,580 ressourcer, men ikke desto mindre kæmper alt for meget, kurset 875 00:45:28,580 --> 00:45:33,030 selv vil parre de studerende, som ressourcerne tillader, med undervisere, så 876 00:45:33,030 --> 00:45:35,840 De har en meget mere intim mulighed end hus spisesale 877 00:45:35,840 --> 00:45:38,700 give mulighed for en-til-én assistance. 878 00:45:38,700 --> 00:45:42,780 >> Nu er en endelig glimt på nogle de endelige spil i syne. 879 00:45:42,780 --> 00:45:44,580 Du vil måske være bekendt med Den CS50 hackathon. 880 00:45:44,580 --> 00:45:48,120 Nå, der kommer i december, 8:00 PM til 7:00, ved begyndelsen af 881 00:45:48,120 --> 00:45:51,410 Læsning Periode, vil være en anledning at samles med klassekammerater - 882 00:45:51,410 --> 00:45:53,130 dette ville være omkring 21:00 - 883 00:45:53,130 --> 00:45:56,550 hvor du dykker ned i din endelige projektets gennemførelse sammen 884 00:45:56,550 --> 00:45:59,910 klassekammerater, venner og mad. 885 00:45:59,910 --> 00:46:03,680 Dette ville være omkring 01:00, når det første parti af fødevarer ankom. 886 00:46:03,680 --> 00:46:08,470 Og det er omkring 4:00, at bestemt år på CS50 hackathon. 887 00:46:08,470 --> 00:46:12,000 >> Men den sande klimaks af kurset er betydet for CS50 Fair, en campus-dækkende 888 00:46:12,000 --> 00:46:15,790 udstilling af dine egne afgangsprojekter, hvortil familie og venner er alle 889 00:46:15,790 --> 00:46:18,730 inviterede, som vores personalekonsulenter og vores venner fra industrien. 890 00:46:18,730 --> 00:46:22,170 Dette, for eksempel, er et glimt af 2.000-plus mennesker, der har deltaget i 891 00:46:22,170 --> 00:46:23,160 seneste år. 892 00:46:23,160 --> 00:46:27,180 Udtryk som dette er ikke ualmindeligt, og ligeledes gør dit 893 00:46:27,180 --> 00:46:29,660 klassekammerater glæde i tingene du har opnået. 894 00:46:29,660 --> 00:46:33,170 >> Og faktisk mod dette formål har vi en start-of-sigt begivenhed, samt. 895 00:46:33,170 --> 00:46:37,400 Hvis ting som dette appellerer til dig, eller du er mindst spændt på, hvad 896 00:46:37,400 --> 00:46:41,590 dette ved, at en ny tradition for Kurset hedder CS50 Puzzle Day. 897 00:46:41,590 --> 00:46:45,710 Og dette blev indført for et par år tilbage til virkelig at signalere til campus 898 00:46:45,710 --> 00:46:48,930 at datalogi ikke handler om programmering, og det er bestemt ikke 899 00:46:48,930 --> 00:46:51,960 omkring omfavne kun de studerende der har forudgående erfaring. 900 00:46:51,960 --> 00:46:54,200 Det handler i virkeligheden om problemløsning mere generelt. 901 00:46:54,200 --> 00:46:57,360 >> Og så puslespil Day, i løbet af de sidste par år nu, har udviklet sig til en hyggelig 902 00:46:57,360 --> 00:47:00,500 partnerskab med vores venner på Facebook, hvor der vil være fantastisk 903 00:47:00,500 --> 00:47:04,830 præmier og pizza over floden på i-lab denne kommende lørdag. 904 00:47:04,830 --> 00:47:09,180 Head til denne webadresse med to eller tre venner, hvis du gerne vil deltage 905 00:47:09,180 --> 00:47:10,830 i denne nye tradition. 906 00:47:10,830 --> 00:47:14,180 >> Så jeg vil gerne bede om, at du holder en ting i tankerne, og vi har fået bare en 907 00:47:14,180 --> 00:47:17,070 to minutter klip på hvilke at lukke dag. 908 00:47:17,070 --> 00:47:19,640 73% er antallet at huske. 909 00:47:19,640 --> 00:47:23,900 Kage, vil også venter dig uden for dette tværskib som vi udsætte på bare et 910 00:47:23,900 --> 00:47:26,710 par øjeblikke, hvilket er en tradition af kurset. samt 911 00:47:26,710 --> 00:47:29,860 Men det er nøglen citat fra kursets pensum at huske på. 912 00:47:29,860 --> 00:47:32,820 Der i sidste ende betyder noget i dette kursus er ikke så meget, hvor du ender 913 00:47:32,820 --> 00:47:36,580 i forhold til dine klassekammerater, men hvor dig, i uge 12, ender i forhold til 914 00:47:36,580 --> 00:47:37,960 dig selv i uge 0. 915 00:47:37,960 --> 00:47:43,670 >> Men glimt, at vi vil forlade dig med her i dag, er det sidste her 916 00:47:43,670 --> 00:47:47,580 af vores samme Daniel gjorde hvem wrdly video bare for et øjeblik siden. 917 00:47:47,580 --> 00:47:50,000 Jeg forlader dig med denne glimt af, hvad der ligger forude. 918 00:47:50,000 --> 00:47:53,360 Og når vi gør det, hvis vi kunne få CS50 personale fra den forreste del af rummet 919 00:47:53,360 --> 00:47:57,280 at komme videre op på scenen for at male alle jo mere af et visuelt billede af, 920 00:47:57,280 --> 00:47:59,100 hvad der venter dig i år - 921 00:47:59,100 --> 00:48:00,350 få akavet. 922 00:48:00,350 --> 00:48:02,200 923 00:48:02,200 --> 00:48:05,188 Vi slutte med dette her på skærmen. 924 00:48:05,188 --> 00:48:18,634 >> [MUSIC Playing] 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 i orden"] 927 00:50:00,226 --> 00:50:03,245 >> SPEAKER 1: Jeg elsker CS50 mere end katte. 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: Denne er altså CS50. 931 00:50:08,140 --> 00:50:10,050 Vi vil se dig på fredag. 932 00:50:10,050 --> 00:50:13,370 >> [Applaus og råber] 933 00:50:13,370 --> 00:50:17,540 >> Fortæller: På det næste CS50, på scenen en demo ikke går som planlagt. 934 00:50:17,540 --> 00:50:19,080 >> DAVID MALAN: Vi ønsker at finde Mike Smith i denne telefonbog. 935 00:50:19,080 --> 00:50:20,380 Nå, hvad er dine instinkter? 936 00:50:20,380 --> 00:50:23,750 Jeg kunne springe nogenlunde til midten af telefonbogen, blik ned, se, at 937 00:50:23,750 --> 00:50:26,830 Jeg er på M, og jeg ved nu, at Mike Smith er ikke til venstre. 938 00:50:26,830 --> 00:50:27,840 Han må være til højre. 939 00:50:27,840 --> 00:50:30,515 Og så på dette punkt, vi kan bogstaveligt talt rive - 940 00:50:30,515 --> 00:50:33,300 på dette punkt, kan vi bogstaveligt rive - 941 00:50:33,300 --> 00:50:36,490 på dette punkt, kan vi billedligt rive telefonbogen i halve. 942 00:50:36,490 --> 00:50:38,954 >> [Ukelele strumming]