1 00:00:14,320 --> 00:00:17,970 Så det är min största glädje att välkomna er alla här i dag 2 00:00:17,970 --> 00:00:20,600 för första föreläsningen , ja, Introduktion 3 00:00:20,600 --> 00:00:22,510 till Beräkningar och programmering. 4 00:00:22,510 --> 00:00:29,110 Även känd som CS50 eller brunn, CPSC 100, officiellt här vid Yale. 5 00:00:29,110 --> 00:00:34,820 >> Så vi kunde inte vara mer upphetsad att välkomna er alla här. 6 00:00:34,820 --> 00:00:36,620 Mitt namn är Patrick Rebeschini. 7 00:00:36,620 --> 00:00:39,180 Jag är huvudinstruktör för klassen. 8 00:00:39,180 --> 00:00:43,600 Jag här representerar en grupp cirka 60 anställda 9 00:00:43,600 --> 00:00:46,380 som kommer att arbeta med dig hela terminen. 10 00:00:46,380 --> 00:00:49,040 Denna siffra är nästan 60 av oss. 11 00:00:49,040 --> 00:00:52,440 Ändå längs extraordinära nivån på åtagandena 12 00:00:52,440 --> 00:00:56,555 att vi lagt ned på detta klass gör CS50 klassen 13 00:00:56,555 --> 00:01:00,690 vid Yale University som erbjuder den högsta nivån av stöd 14 00:01:00,690 --> 00:01:01,960 till alla er. 15 00:01:01,960 --> 00:01:05,940 Och vi kunde inte vara mer stolt över erbjuder denna klass här igen. 16 00:01:05,940 --> 00:01:11,380 >> I själva verket, som snart kommer att uppleva, CS50 är mycket mer än en klass. 17 00:01:11,380 --> 00:01:13,120 Det är en gemenskap. 18 00:01:13,120 --> 00:01:15,250 Och du kommer att vara en del snart av denna gemenskap. 19 00:01:15,250 --> 00:01:18,730 Detta är andra året som Yale erbjuder denna klass. 20 00:01:18,730 --> 00:01:21,640 Vi bygger på den yttersta framgången med förra året, där 21 00:01:21,640 --> 00:01:24,340 för första gången, här på universitetet, 22 00:01:24,340 --> 00:01:28,930 grund-lärande assistent antogs i klassrum. 23 00:01:28,930 --> 00:01:32,650 Det hela började med denna klass förra året. 24 00:01:32,650 --> 00:01:37,050 >> Så som ni vet, är klassen undervisas tillsammans med Harvard University. 25 00:01:37,050 --> 00:01:39,920 Att lära den här kursen vi är relying-- vi kan 26 00:01:39,920 --> 00:01:44,850 räkna med stor sakkunskap David Malan och Harvard laget. 27 00:01:44,850 --> 00:01:48,930 Så David har varit undervisning CS50 för väl, 10 år nu. 28 00:01:48,930 --> 00:01:51,160 Och varje år han har varit tänja på gränserna 29 00:01:51,160 --> 00:01:54,210 och förbättra klassrummet erfarenhet. 30 00:01:54,210 --> 00:01:58,940 Återigen, vi kunde inte vara mer glad att fortsätta samarbetet med dem. 31 00:01:58,940 --> 00:02:01,840 >> I själva verket en av de mest intressanta delarna, 32 00:02:01,840 --> 00:02:06,560 Jag kommer att säga att köra denna klass nu, både vid Harvard och här vid Yale, 33 00:02:06,560 --> 00:02:09,420 är det verkligen otroligt korsbefruktning 34 00:02:09,420 --> 00:02:13,770 av idéer, som syftar till att förbättra lärandet till er alla. 35 00:02:13,770 --> 00:02:18,130 Så som ett resultat av denna omfattande samarbete mellan de två 36 00:02:18,130 --> 00:02:23,070 universitet, är CS50 stolt tillkännage den nya versionen i år 37 00:02:23,070 --> 00:02:24,770 med märkbara förändringar. 38 00:02:24,770 --> 00:02:27,580 David kommer alla berätta om dem nu. 39 00:02:27,580 --> 00:02:31,450 Så please-- denna varelse sade, vänligen gå mig 40 00:02:31,450 --> 00:02:34,220 och välkommen att ge en stor applåd 41 00:02:34,220 --> 00:02:37,290 välkomna David och Harvard team här på Yale. 42 00:02:37,290 --> 00:02:40,032 >> [APPLÅDER] 43 00:02:40,032 --> 00:02:41,882 44 00:02:41,882 --> 00:02:43,247 >> DAVID MALAN: Tack. 45 00:02:43,247 --> 00:02:43,746 Tack. 46 00:02:43,746 --> 00:02:46,550 47 00:02:46,550 --> 00:02:51,400 Detta är CS50, Harvard University och Yale University introduktion 48 00:02:51,400 --> 00:02:53,960 till den intellektuella företag i datavetenskap 49 00:02:53,960 --> 00:02:55,490 och konsten att programmera. 50 00:02:55,490 --> 00:02:59,640 Och vad det betyder är att denna kurs i slutändan handlar om problemlösning. 51 00:02:59,640 --> 00:03:01,849 I själva verket många av er kanske har kommit ut ur gymnasiet 52 00:03:01,849 --> 00:03:04,931 eller har tillbringat de senaste åren undrar vad några av dina vänner 53 00:03:04,931 --> 00:03:06,380 gjorde förra året eller i andra klasser. 54 00:03:06,380 --> 00:03:08,449 Och ändå, verkligheten är, oavsett vad vi 55 00:03:08,449 --> 00:03:11,740 göra i slutet av dagen i denna klass, det kommer att handla om problemlösning. 56 00:03:11,740 --> 00:03:14,320 >> Och som sådan, kanske ta några försäkringar i det faktum 57 00:03:14,320 --> 00:03:16,770 att 73% av eleverna som ta denna klass, både här 58 00:03:16,770 --> 00:03:20,235 vid Yale liksom vid Harvard, har aldrig tagit en CS klass innan. 59 00:03:20,235 --> 00:03:22,610 Så om du sitter här i publiken idag undrar 60 00:03:22,610 --> 00:03:24,520 varför du sitter här i publiken idag, 61 00:03:24,520 --> 00:03:26,300 eller kanske du bara följt tillsammans med några vänner, 62 00:03:26,300 --> 00:03:28,299 eller kanske du har varit en lite nyfiken på vad 63 00:03:28,299 --> 00:03:30,194 datavetenskap och programmering, inser 64 00:03:30,194 --> 00:03:32,860 att de flesta av dina klasskamrater till vänster och till höger om du 65 00:03:32,860 --> 00:03:35,840 är mycket i samma demografiska. 66 00:03:35,840 --> 00:03:38,120 >> Och faktiskt, om vi ser Vid förra årets statistik 67 00:03:38,120 --> 00:03:42,760 inom studentkåren i CS50, både här och på Harvard, 58% av studenterna 68 00:03:42,760 --> 00:03:44,630 beskriver sig själva som mindre bekväm. 69 00:03:44,630 --> 00:03:46,090 9% är mer bekväm. 70 00:03:46,090 --> 00:03:47,699 Och då 33% är någonstans mittemellan. 71 00:03:47,699 --> 00:03:50,240 Och det finns ingen formell definition vad dessa hinkar betyder. 72 00:03:50,240 --> 00:03:52,335 Du vet slags du mindre bekvämt om du är. 73 00:03:52,335 --> 00:03:54,840 Du känner dig lite orolig med kanske vara i klassen. 74 00:03:54,840 --> 00:03:57,840 Du är inte helt säker på om en dator vetenskap klass är ytterst för dig, 75 00:03:57,840 --> 00:04:00,009 och inse att du är i mycket gott sällskap. 76 00:04:00,009 --> 00:04:01,800 Och faktiskt graderingen, och bedömningen, 77 00:04:01,800 --> 00:04:04,466 och återkopplings, och allt det stödstruktur i klassen 78 00:04:04,466 --> 00:04:06,550 i slutändan mycket individuellt. 79 00:04:06,550 --> 00:04:09,187 Mer så än de flesta någon annan klass av design. 80 00:04:09,187 --> 00:04:11,520 Och faktiskt, det som slutligen frågor i denna klass är inte 81 00:04:11,520 --> 00:04:14,180 så mycket där du avslutar upp i förhållande till andra, 82 00:04:14,180 --> 00:04:18,070 men där man i vecka 11 eller sista, och i förhållande till sig själv i veckan 83 00:04:18,070 --> 00:04:20,372 0 här vår första. 84 00:04:20,372 --> 00:04:21,330 Så vad betyder det? 85 00:04:21,330 --> 00:04:24,750 Tja, innebär detta för de 73% av studenter förra året som aldrig hade tagit 86 00:04:24,750 --> 00:04:26,917 en CS-klass innan, av terminsstart de 87 00:04:26,917 --> 00:04:29,500 var syssla med ett språk kallas Scratch, som vi själva 88 00:04:29,500 --> 00:04:30,340 kommer att se här i dag. 89 00:04:30,340 --> 00:04:32,190 Och i slutet av den termin hade de gått 90 00:04:32,190 --> 00:04:34,700 genom hela denna lista utmaningar. 91 00:04:34,700 --> 00:04:36,399 Från och med ett språk som kallas c. 92 00:04:36,399 --> 00:04:38,190 Genomföra, vad är vid första anblicken, gå 93 00:04:38,190 --> 00:04:41,010 att vara lite av en utmaning för några, men ganska glädjande när du 94 00:04:41,010 --> 00:04:44,510 få Super Mario studsa upp och ner en pyramid 95 00:04:44,510 --> 00:04:47,005 genomförts, om än med bara något som kallas ASCII-konst. 96 00:04:47,005 --> 00:04:49,380 Genomföra sista year-- vad studenterna förra året då 97 00:04:49,380 --> 00:04:53,270 gjorde efter som genomför sina egen Caesar chiffer och Vigenère chiffer. 98 00:04:53,270 --> 00:04:55,180 Så krypteringsalgoritmer som du kan 99 00:04:55,180 --> 00:04:58,920 scramble information och sedan unscramble information för att skicka hemliga meddelanden. 100 00:04:58,920 --> 00:05:00,010 Spelet 15. 101 00:05:00,010 --> 00:05:02,260 Om du kommer ihåg från barndom eller någon partyfavör, 102 00:05:02,260 --> 00:05:05,000 den lilla plast spel där du flyttar siffrorna uppåt, nedåt, vänster och höger 103 00:05:05,000 --> 00:05:07,500 för att försöka få dem i ordning, faktiskt genomföra det spelet 104 00:05:07,500 --> 00:05:09,640 och lösa den logik som behövs där. 105 00:05:09,640 --> 00:05:11,640 Och då vi sysslat med forensics förra året. 106 00:05:11,640 --> 00:05:13,810 >> Så i mitten av terminen, studenter som aldrig 107 00:05:13,810 --> 00:05:16,130 använde sina tangentbord för detta ändamål före, 108 00:05:16,130 --> 00:05:19,030 skrev programvara att återhämta sig, så att säga, 109 00:05:19,030 --> 00:05:21,420 JPEG eller fotografier att vi hade av misstag 110 00:05:21,420 --> 00:05:24,430 utgår från en digital minneskort från en kamera. 111 00:05:24,430 --> 00:05:28,130 Återställning hemliga meddelanden från insidan av en bitmappsbild 112 00:05:28,130 --> 00:05:30,030 och andra sådana typer grafik samt. 113 00:05:30,030 --> 00:05:32,770 >> Vi övergick sedan till att ge hela klassen ett lexikon. 114 00:05:32,770 --> 00:05:36,330 Bara en riktigt stor textfil med 150.000 engelska ord. 115 00:05:36,330 --> 00:05:39,080 Och alla utmanades att på något sätt läsa, så att säga, 116 00:05:39,080 --> 00:05:40,780 dessa ord i minnet. 117 00:05:40,780 --> 00:05:42,060 I datorns minne. 118 00:05:42,060 --> 00:05:44,310 Och sedan svara på frågor av formen, är detta ett ord? 119 00:05:44,310 --> 00:05:44,934 Är detta ett ord? 120 00:05:44,934 --> 00:05:45,580 Är detta ett ord? 121 00:05:45,580 --> 00:05:47,880 Egentligen bara genomföra en stavningskontroll. 122 00:05:47,880 --> 00:05:50,320 Och sedan utmana varje andra med en stor board-- 123 00:05:50,320 --> 00:05:53,040 en ledartavlan för att se vem som kunde använda den minsta mängden minne, 124 00:05:53,040 --> 00:05:56,470 i kortast möjliga tid till faktiskt stavningskontrollera stora dokument. 125 00:05:56,470 --> 00:05:59,760 >> Vi flyttade därefter till genomföra sin egen webbserver. 126 00:05:59,760 --> 00:06:04,070 Så inte göra webbsidor i språk som HTML och CSS, om du är bekant. 127 00:06:04,070 --> 00:06:06,360 Men faktiskt genomföra servern som 128 00:06:06,360 --> 00:06:09,260 lyssnar på internet för förfrågningar från webbläsare 129 00:06:09,260 --> 00:06:11,022 och sedan svara på dessa förfrågningar. 130 00:06:11,022 --> 00:06:13,230 Sedan genomföra vår egen e-handel som hemsida, där 131 00:06:13,230 --> 00:06:15,490 studenter kan köpa och sälja aktier. 132 00:06:15,490 --> 00:06:18,590 Ritning i nästan realtid aktiekurser från Yahoo Finance. 133 00:06:18,590 --> 00:06:21,200 Och låta elever se hur deras portfölj utvecklas. 134 00:06:21,200 --> 00:06:23,570 Och slutligen en mash up Google News och Google 135 00:06:23,570 --> 00:06:26,540 Kartor där studenterna genom sikt genom termer slut 136 00:06:26,540 --> 00:06:30,110 hade förmågan att klicka, och runda, och söka på en Google-karta. 137 00:06:30,110 --> 00:06:32,060 Och sedan se alla de nyhetsartiklar som 138 00:06:32,060 --> 00:06:33,940 finns i närheten dessa särskilda områden. 139 00:06:33,940 --> 00:06:36,180 Så verkligen går från noll till 60. 140 00:06:36,180 --> 00:06:39,420 >> Och längs vägen har vad vi hade förra året kallas hacker tillägg. 141 00:06:39,420 --> 00:06:41,211 Att höja ribban ytterligare för er 142 00:06:41,211 --> 00:06:44,390 som kan mycket väl ha en bra mängd erfarenhet är att 9% 143 00:06:44,390 --> 00:06:45,349 av mer bekväm. 144 00:06:45,349 --> 00:06:47,140 Så inser att det finns en mycket högt i tak 145 00:06:47,140 --> 00:06:49,200 även inom de utmaningar för studenter 146 00:06:49,200 --> 00:06:50,660 kommer från en annan bakgrund. 147 00:06:50,660 --> 00:06:52,618 Eftersom i slutet av dagen, vi är i slutändan 148 00:06:52,618 --> 00:06:54,910 fokuserade helt enkelt på detta. 149 00:06:54,910 --> 00:06:57,010 >> Men vad gör detta menar, problemlösning? 150 00:06:57,010 --> 00:06:59,100 Så låt oss föreslå att vi destillera det så här. 151 00:06:59,100 --> 00:07:01,550 Så problemlösning är verkligen just denna typ av bild. 152 00:07:01,550 --> 00:07:04,675 Så du har ingångar till vissa problem, något du verkligen vill lösa. 153 00:07:04,675 --> 00:07:07,020 Målet är att få resultat, en lösning på det problemet. 154 00:07:07,020 --> 00:07:09,950 Och sedan i mitten är vad vi kallar en svart låda. 155 00:07:09,950 --> 00:07:13,970 Du behöver inte nödvändigtvis vet eller ens bry sig om vad som finns inuti den svarta lådan. 156 00:07:13,970 --> 00:07:16,670 Allt du vet är att när du mata bidrag till det, 157 00:07:16,670 --> 00:07:19,890 du förhoppningsvis få utgång eller en lösning av det. 158 00:07:19,890 --> 00:07:22,380 Och medan vi i dag kommer att se både på in- och utgångar, 159 00:07:22,380 --> 00:07:24,838 vi ska långsiktigt, och över under hela terminen, 160 00:07:24,838 --> 00:07:26,880 fokusera på vad som finns inuti den rutan. 161 00:07:26,880 --> 00:07:30,040 >> Och däri kommer att ligga något som kallas algoritmer. 162 00:07:30,040 --> 00:07:33,300 Steg för steg instruktioner för faktiskt lösa några problem. 163 00:07:33,300 --> 00:07:35,090 Men vad är ett exempel på några ingångar? 164 00:07:35,090 --> 00:07:37,840 Så kanske en enkel sak på start av varje läsår, någon 165 00:07:37,840 --> 00:07:39,090 kanske vill ta närvaro. 166 00:07:39,090 --> 00:07:42,030 Så vi kan göra en, två, tre, fyra, fem, sex, 167 00:07:42,030 --> 00:07:44,010 och hur skulle jag behålla reda på den informationen. 168 00:07:44,010 --> 00:07:46,051 Jag kan bara gå en, två, tre, fyra, fem, sex. 169 00:07:46,051 --> 00:07:47,720 Och bara använda slags ensiffriga tal. 170 00:07:47,720 --> 00:07:51,210 >> Eller jag kunde faktiskt spela detta lite längre sikt. 171 00:07:51,210 --> 00:07:53,340 Och hur gör jag representerar alla människorna i det här rummet? 172 00:07:53,340 --> 00:07:54,900 Tja, jag kan göra något, OK. 173 00:07:54,900 --> 00:07:56,070 Jag ser en person. 174 00:07:56,070 --> 00:07:56,600 Okej. 175 00:07:56,600 --> 00:08:01,180 Jag ser en annan person, en tredje person, och så vidare. 176 00:08:01,180 --> 00:08:04,070 Men ingen räknar personer gillar detta. 177 00:08:04,070 --> 00:08:06,952 Så bokstavligt, de flesta av oss om vi är även kommer att dra någonting alls, 178 00:08:06,952 --> 00:08:08,910 är förmodligen kommer att gå ett två tre Fyra, 179 00:08:08,910 --> 00:08:14,240 kanske få lite fantasi, fem, sex, sju, åtta, nio, tio och så vidare. 180 00:08:14,240 --> 00:08:16,960 >> Och det är faktiskt en system som kallas unär. 181 00:08:16,960 --> 00:08:20,549 Uno, som uno innebär ett, där du bara har en bokstav i alfabetet. 182 00:08:20,549 --> 00:08:21,840 Du har just fått denna hash märke. 183 00:08:21,840 --> 00:08:24,570 Och jag, Effektivitet, bara drog dessa hash märken, i slutändan 184 00:08:24,570 --> 00:08:25,500 som raka linjer. 185 00:08:25,500 --> 00:08:27,666 Men jag kunde ha dragit dem så lite streckgubbar. 186 00:08:27,666 --> 00:08:29,550 Var för att representera en person, en ingång, 187 00:08:29,550 --> 00:08:32,210 Jag drar bara en pinne figur eller en hash märke. 188 00:08:32,210 --> 00:08:33,910 Men detta är inte allt som uttrycks. 189 00:08:33,910 --> 00:08:38,020 >> Om allt jag har är dessa hash märken, för att inte tala pinne figurerar, 190 00:08:38,020 --> 00:08:41,410 Hur kan jag företräder något som nummer 15? 191 00:08:41,410 --> 00:08:43,050 Eller 15 personer i rummet? 192 00:08:43,050 --> 00:08:48,740 Jag kanske måste göra något liknande en, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 193 00:08:48,740 --> 00:08:51,270 14, 15. 194 00:08:51,270 --> 00:08:52,830 Det kan bara inte fungerar mycket bra. 195 00:08:52,830 --> 00:08:55,730 Som ingångarna får stora, vi behöver ett bättre system än detta. 196 00:08:55,730 --> 00:08:57,910 >> Och det visar sig att system som datorer använder 197 00:08:57,910 --> 00:09:00,510 är inte så annorlunda från vad du och jag vet. 198 00:09:00,510 --> 00:09:03,301 De flesta människor i det här rummet, även om du är bland de mindre 199 00:09:03,301 --> 00:09:06,300 bekväm, inte nödvändigtvis vet hur din Mac eller PC verkligen fungerar, 200 00:09:06,300 --> 00:09:09,810 du har förmodligen åtminstone hört, att under huven är 0: or och 1: or. 201 00:09:09,810 --> 00:09:11,390 Det så kallade binära systemet. 202 00:09:11,390 --> 00:09:15,340 Så ja, datorer har mer än bara hash märken i deras ordförråd, 203 00:09:15,340 --> 00:09:17,450 men inte så mycket av en ordförråd som vi människor. 204 00:09:17,450 --> 00:09:19,210 >> I själva verket behöver vi människor inte använder binär. 205 00:09:19,210 --> 00:09:21,160 Bi betyder två, 0 och 1. 206 00:09:21,160 --> 00:09:24,140 Men decimal, deka vilket innebär 10, 0 till 9. 207 00:09:24,140 --> 00:09:27,660 Så vi har en mycket mer uttrycks kapacitet i vår normala mänskliga världen. 208 00:09:27,660 --> 00:09:31,720 Men jag skulle hävda att dessa system, binär, och decimal, och allt 209 00:09:31,720 --> 00:09:35,290 i mellan och utanför, är faktiskt alla ganska bekant. 210 00:09:35,290 --> 00:09:39,650 Till exempel anser detta exempel här, 123. 211 00:09:39,650 --> 00:09:43,850 Så detta är verkligen, naturligtvis, ett antal som vi känner som 123. 212 00:09:43,850 --> 00:09:47,160 Men allt jag bara drog var just detta mönster av symboler, skåror så att säga. 213 00:09:47,160 --> 00:09:49,100 Sortera former på tavlan med krita. 214 00:09:49,100 --> 00:09:52,951 >> Men varför gör vi omedelbart och intuitivt förstå detta som 123? 215 00:09:52,951 --> 00:09:54,700 Tja, om du var som mig i skolan, 216 00:09:54,700 --> 00:09:59,920 du lärt förmodligen att det är 1s kolumnen är detta 10s kolumnen 217 00:09:59,920 --> 00:10:01,330 detta är den 100s kolumn. 218 00:10:01,330 --> 00:10:02,860 Och varför är det bra? 219 00:10:02,860 --> 00:10:06,440 Tja, det enkla aritmetiska du nu göra för att komma från ett mönster av symboler 220 00:10:06,440 --> 00:10:08,940 till ett antal som vi förstår intuitivt. 221 00:10:08,940 --> 00:10:14,160 Är vad, 100 gånger 1, och sedan 10 gånger 2 och 1 gånger 3, 222 00:10:14,160 --> 00:10:17,860 vilket naturligtvis är bara 100, och detta är 20, och detta är tre. 223 00:10:17,860 --> 00:10:19,740 Och så om vi lägga till dem together-- ah. 224 00:10:19,740 --> 00:10:23,880 Så ligger däri slags resonemang bakom varför denna uppsättning av symboler 225 00:10:23,880 --> 00:10:26,550 betyder något verkligt och numerisk. 226 00:10:26,550 --> 00:10:32,030 >> Tja, datorer gör exakt samma sak, men de bara kan räkna så högt som en. 227 00:10:32,030 --> 00:10:34,400 Medan jag kunde räkna så högt som tre. 228 00:10:34,400 --> 00:10:37,380 Och faktiskt, om jag fortsatte jag kunde gå så högt som nio i detta system. 229 00:10:37,380 --> 00:10:40,430 Datorer har bara nollor och de i sin alfabetet. 230 00:10:40,430 --> 00:10:41,410 >> Så vad betyder det? 231 00:10:41,410 --> 00:10:46,900 Tja, det betyder bara att om en dator vill representera, säger siffran 0, 232 00:10:46,900 --> 00:10:51,300 kanske med hjälp av tre characters-- tre bokstäverna i alfabetet så att säga, 233 00:10:51,300 --> 00:10:53,050 det är hur en dator representerar 0. 234 00:10:53,050 --> 00:10:54,620 Så inte så skrämmande hittills. 235 00:10:54,620 --> 00:10:56,450 Det är precis vad vi människor skulle göra. 236 00:10:56,450 --> 00:10:59,410 Och i själva verket de flesta av oss skulle bara ignorera inledande nollor i alla fall. 237 00:10:59,410 --> 00:11:01,640 >> En dator, om den vill att lagra numret 1, 238 00:11:01,640 --> 00:11:03,330 visar sig kommer att göra detta. 239 00:11:03,330 --> 00:11:05,630 Och en dator för att lagra siffran 2 är inte 240 00:11:05,630 --> 00:11:09,280 kommer att göra unära systemet, som jag nämnt tidigare. 241 00:11:09,280 --> 00:11:11,360 Det är faktiskt kommer att göra detta. 242 00:11:11,360 --> 00:11:13,570 Och det är förmodligen där mönstret börjar 243 00:11:13,570 --> 00:11:15,570 att bli mindre självklart för de flesta människor. 244 00:11:15,570 --> 00:11:18,580 Det är två, är detta 3. 245 00:11:18,580 --> 00:11:21,600 Märkligt nog är det nu fyra. 246 00:11:21,600 --> 00:11:24,120 Och nu är det verkligen verkar vara kanske kryptisk, 247 00:11:24,120 --> 00:11:26,762 men det är inte om vi anser vilken binär egentligen innebär. 248 00:11:26,762 --> 00:11:28,720 Det betyder att du har två bokstäverna i din alfabetet. 249 00:11:28,720 --> 00:11:31,940 Så två möjliga tecken för varje platshållare. 250 00:11:31,940 --> 00:11:35,970 >> Så det verkligen betyder att vi ska behöver en 1s eller 2s plats, 251 00:11:35,970 --> 00:11:40,800 en 4s plats och sedan 8 och 16, 32, och 64. 252 00:11:40,800 --> 00:11:42,290 Och vad är skillnaden där? 253 00:11:42,290 --> 00:11:47,150 Liksom dessa är 1, 2, 4, 8, 16, 32, 64. 254 00:11:47,150 --> 00:11:50,690 Och innan vi hade 110, 100,000, 10,000. 255 00:11:50,690 --> 00:11:53,170 Vad är likheten där? 256 00:11:53,170 --> 00:11:54,940 Och vad är mönstret? 257 00:11:54,940 --> 00:11:55,505 Ja. 258 00:11:55,505 --> 00:11:57,380 Elev: befogenheter 2 i stället för befogenheter 10. 259 00:11:57,380 --> 00:11:57,660 DAVID MALAN: Ja. 260 00:11:57,660 --> 00:11:59,290 Befogenheter 2 i stället för befogenheter 10. 261 00:11:59,290 --> 00:12:02,160 Och så om jag ville behålla gå, 8, 16s och så forth-- 262 00:12:02,160 --> 00:12:05,822 men nu om du har denna typ ledtråd, nu det binära talsystemet 263 00:12:05,822 --> 00:12:07,280 är faktiskt ganska enkelt. 264 00:12:07,280 --> 00:12:10,910 Varför är detta mönster av 0: or i en värld av datorer 0? 265 00:12:10,910 --> 00:12:14,910 Jo eftersom det är 4 gånger 0, 2 gånger 0, 1 gånger 0 och du får 0. 266 00:12:14,910 --> 00:12:16,650 >> Varför är detta nummer ett? 267 00:12:16,650 --> 00:12:20,070 Samma resonemang, men nu har vi har en 1 i en kolonn. 268 00:12:20,070 --> 00:12:21,840 Varför är detta två? 269 00:12:21,840 --> 00:12:24,450 Vi har en 1 i 2s kolumnen. 270 00:12:24,450 --> 00:12:30,190 Och hur gör sedan jag representerar säga, nummer 7 i binär? 271 00:12:30,190 --> 00:12:31,324 Säger starkare. 272 00:12:31,324 --> 00:12:32,170 >> STUDENT: Tre 1s. 273 00:12:32,170 --> 00:12:33,086 >> DAVID MALAN: Tre 1s. 274 00:12:33,086 --> 00:12:37,110 Så en, ett, ett, eftersom vi behöver bara 4 plus två plus ett ger mig 7. 275 00:12:37,110 --> 00:12:37,610 Okej. 276 00:12:37,610 --> 00:12:40,410 Så därifrån hur gör vi representera 8 med 3 platshållare? 277 00:12:40,410 --> 00:12:43,310 278 00:12:43,310 --> 00:12:43,922 Ja. 279 00:12:43,922 --> 00:12:45,070 >> STUDENTEN 1, 0, 0, 0. 280 00:12:45,070 --> 00:12:46,970 >> DAVID MALAN: Ja 1, 0, 0, 0. 281 00:12:46,970 --> 00:12:49,380 Och ändå kanske, jag typ tekniskt behöver 282 00:12:49,380 --> 00:12:52,380 att lägga till en annan platshållare till styrelsen. 283 00:12:52,380 --> 00:12:55,480 Om jag vill passa på att jag verkligen behöver göra något sådant. 284 00:12:55,480 --> 00:12:58,990 Så jag faktiskt behöver använda nu den 8s kolumnen, och det är bra. 285 00:12:58,990 --> 00:13:02,680 Men märkliga i computing är att det kommer att kosta oss något. 286 00:13:02,680 --> 00:13:04,390 Du behöver mer RAM-minne i datorn nu. 287 00:13:04,390 --> 00:13:06,348 Du behöver mer minne eftersom du behöver något 288 00:13:06,348 --> 00:13:09,650 fysiska att lagra den extra bit, så att säga. 289 00:13:09,650 --> 00:13:10,700 Binära siffror. 290 00:13:10,700 --> 00:13:13,260 Och faktiskt allt som har hänt här, som decimalsystemet, 291 00:13:13,260 --> 00:13:17,380 Om vi ​​fortsätter att lägga till siffror upp och upp och upp, går vi till 5-6 till 7-8 292 00:13:17,380 --> 00:13:19,330 det är som bär en, bokstavligen. 293 00:13:19,330 --> 00:13:21,940 Och sedan allt annat går tillbaka ner till noll. 294 00:13:21,940 --> 00:13:25,870 >> Men hur vi faktiskt representerar dessa saker fysiskt i en dator? 295 00:13:25,870 --> 00:13:29,380 Ja, vid slutet av dagen, den enda fysisk ingång går in i min dator 296 00:13:29,380 --> 00:13:33,630 Här är denna nätsladd, så elektricitet eller elektroner från väggen. 297 00:13:33,630 --> 00:13:36,920 Och så hur gör jag får från något fysiska sådär faktiskt 298 00:13:36,920 --> 00:13:40,630 representerar en idé så här istället. 299 00:13:40,630 --> 00:13:41,930 >> Tja, vad kan vi göra? 300 00:13:41,930 --> 00:13:45,560 Vi skulle kunna överväga att, okej, kanske om elektricitet flödar 301 00:13:45,560 --> 00:13:47,420 Jag kunde lagra den och hålla fast vid det. 302 00:13:47,420 --> 00:13:49,250 Och om jag håller på till viss el, 303 00:13:49,250 --> 00:13:51,700 som bara kommer att godtyckligt representera en 1. 304 00:13:51,700 --> 00:13:53,997 Och om jag dra ur kontakten och det finns inget där, 305 00:13:53,997 --> 00:13:56,330 du vet att det bara kommer godtyckligt representerar en 0. 306 00:13:56,330 --> 00:13:57,700 >> Så om något är det, en. 307 00:13:57,700 --> 00:13:59,280 Om ingenting är där, 0. 308 00:13:59,280 --> 00:14:01,420 Eller så kan du göra det här lite mer visuellt. 309 00:14:01,420 --> 00:14:02,704 Här är en 0. 310 00:14:02,704 --> 00:14:05,370 Det finns inget intressant pågående på om baksidan av min telefon. 311 00:14:05,370 --> 00:14:08,690 Men om jag tillåter lite bit av elektricitet att flyta, 312 00:14:08,690 --> 00:14:11,490 även om det är lite ljus här gick min ficklampa på. 313 00:14:11,490 --> 00:14:15,840 Så jag lagra en laddning och ergo, den här telefonen utgör nu en 1. 314 00:14:15,840 --> 00:14:17,700 Så 0 1. 315 00:14:17,700 --> 00:14:23,630 >> Så med en iPhone hur högt kan jag räkna med denna typ av strategi? 316 00:14:23,630 --> 00:14:24,490 Jag menar att en. 317 00:14:24,490 --> 00:14:25,900 Det är inte så övertygande. 318 00:14:25,900 --> 00:14:27,170 Så vad mer kan vi göra? 319 00:14:27,170 --> 00:14:31,180 Nåväl låt oss se, är alla på deras telefon just nu att jag kunde låna? 320 00:14:31,180 --> 00:14:33,800 Den som har en telefon med en ficklampa inbyggd? 321 00:14:33,800 --> 00:14:34,969 Kan jag få låna? 322 00:14:34,969 --> 00:14:36,010 Jag behöver inte den upplåst. 323 00:14:36,010 --> 00:14:36,510 Okej. 324 00:14:36,510 --> 00:14:37,150 Tack. 325 00:14:37,150 --> 00:14:37,780 Låt mig låna detta. 326 00:14:37,780 --> 00:14:38,279 Okej. 327 00:14:38,279 --> 00:14:45,570 Så om jag rullar nu upp och här, vad jag representerar nu? 328 00:14:45,570 --> 00:14:46,070 Ja. 329 00:14:46,070 --> 00:14:49,350 Så det är en tre eftersom det är i 1s kolonn, detta är i den 2s kolumnen. 330 00:14:49,350 --> 00:14:50,480 Så ett plus två är tre. 331 00:14:50,480 --> 00:14:53,410 Och sedan om vi försöker få verkligen creative-- åh, tack. 332 00:14:53,410 --> 00:14:54,690 Mycket förebyggande. 333 00:14:54,690 --> 00:14:55,560 Okej. 334 00:14:55,560 --> 00:14:57,100 Jag har nu tre iPhones. 335 00:14:57,100 --> 00:14:58,810 Okej. 336 00:14:58,810 --> 00:15:02,500 >> Och nu this-- jag kommer inte göra något mer än detta. 337 00:15:02,500 --> 00:15:04,380 Vad jag representerar nu? 338 00:15:04,380 --> 00:15:05,090 Bara sjuor. 339 00:15:05,090 --> 00:15:08,000 Men jag behövde fysiskt mer minne i det här fallet. 340 00:15:08,000 --> 00:15:08,920 Men det är allt det är. 341 00:15:08,920 --> 00:15:12,870 Du kan tänka på vad som händer on-- tacka du-- insidan av din telefon 342 00:15:12,870 --> 00:15:16,240 som bara är en switch som är att slås på och av. 343 00:15:16,240 --> 00:15:18,350 >> Och om du någonsin hört ordet transistor. 344 00:15:18,350 --> 00:15:21,312 Eller om du någonsin hört marknadsföring tala Intel inside, 345 00:15:21,312 --> 00:15:24,270 som är att tala med den typ av hårdvara det är insidan av din dator. 346 00:15:24,270 --> 00:15:26,707 Intel gör processorer, centralenheter, 347 00:15:26,707 --> 00:15:28,790 som är som hjärnorna insidan av din dator. 348 00:15:28,790 --> 00:15:30,640 Och dessa processorer och saker som de är anslutna 349 00:15:30,640 --> 00:15:32,740 att ha massor av små switchar. 350 00:15:32,740 --> 00:15:36,440 Miljoner, miljarder switchar som kan vara antingen på eller av. 351 00:15:36,440 --> 00:15:38,840 >> Så datorer, tack och lov, som våra Mac och PC, 352 00:15:38,840 --> 00:15:43,830 kan räkna sätt högre än 7 eller 8 eftersom de har mycket mer än tre 353 00:15:43,830 --> 00:15:44,660 eller fyra bitar. 354 00:15:44,660 --> 00:15:48,140 Sätt mer än motsvarigheten till tre ficklampor som vi just haft. 355 00:15:48,140 --> 00:15:52,110 Men nu detta börjar bli ganska ointressant snabbt. 356 00:15:52,110 --> 00:15:55,810 Om jag vill nu att faktiskt kunna att göra något mer intressant, 357 00:15:55,810 --> 00:16:00,340 Jag vill kunna hoppa till något sådant. 358 00:16:00,340 --> 00:16:03,604 >> Så ASCII, det är egentligen inte en användbar akronym, men American Standard Code 359 00:16:03,604 --> 00:16:04,770 för informationsutbyte. 360 00:16:04,770 --> 00:16:07,450 Det betyder bara några år sedan vi människor beslutade 361 00:16:07,450 --> 00:16:10,724 Vet du vad, vill vi kunna göra mer med datorer än bara siffror. 362 00:16:10,724 --> 00:16:12,890 Vi vill inte att de bara vara dyra miniräknare, 363 00:16:12,890 --> 00:16:16,730 Vi skulle vilja kunna göra saker som ordbehandling, om än mycket enkelt. 364 00:16:16,730 --> 00:16:20,030 Senare hade vi e-post och andra sådana medier. 365 00:16:20,030 --> 00:16:23,700 >> Och så världen bestämde några år sedan enligt detta system ASCII, 366 00:16:23,700 --> 00:16:24,770 vet du vad? 367 00:16:24,770 --> 00:16:26,970 I vissa typer av program varje gång du 368 00:16:26,970 --> 00:16:30,649 se motsvarande antalet 65, i likhet med mönstret av bitar. 369 00:16:30,649 --> 00:16:32,440 Och vi kunde göra matematik här på bordet. 370 00:16:32,440 --> 00:16:34,450 Mönstret av bitar som representerar 65. 371 00:16:34,450 --> 00:16:37,240 Tänk inte på det som 65 i decimal. 372 00:16:37,240 --> 00:16:41,620 Tänk på det som godtyckligt, men globalt, konsekvent som huvudstad 373 00:16:41,620 --> 00:16:42,201 EN. 374 00:16:42,201 --> 00:16:43,950 Och då världen bestämt, vet du vad? 375 00:16:43,950 --> 00:16:45,630 Låt oss ta ett annat mönster av bitar. 376 00:16:45,630 --> 00:16:47,770 Och om vi någonsin se nummer 66, låt oss bara 377 00:16:47,770 --> 00:16:50,573 antar att det är kapital B. Spola fram till H 378 00:16:50,573 --> 00:16:55,510 och jag, om du ser 72 eller 73, som bör vara en H och ett I, respektive. 379 00:16:55,510 --> 00:16:57,780 Och så länge som hela världen kommer överens om detta. 380 00:16:57,780 --> 00:17:01,342 Så att när du tar emot ett e-postmeddelande, eller du skulle få en fil på ett USB-minne, 381 00:17:01,342 --> 00:17:03,800 eller något liknande that-- när du ser att mönstret av bitar, 382 00:17:03,800 --> 00:17:06,980 du vet att det ska vara så här brev eller någon annan bokstav. 383 00:17:06,980 --> 00:17:08,620 >> Men det är sammanhanget specifikt, höger. 384 00:17:08,620 --> 00:17:12,250 Ett e-postprogram kan tolka dessa saker som tecken, 385 00:17:12,250 --> 00:17:15,760 men en grafräknare eller kalkylator kan representera eller tolka 386 00:17:15,760 --> 00:17:18,370 dessa saker, naturligtvis, som bokstäver. 387 00:17:18,370 --> 00:17:21,610 >> Så med det sagt, snabb liten recension. 388 00:17:21,610 --> 00:17:25,440 Detta är kanske en tre tecken e-post som har skickats till mig. 389 00:17:25,440 --> 00:17:27,990 Under huven är det allt i 0 och 1, men vi bryr oss inte. 390 00:17:27,990 --> 00:17:31,580 Vi kommer att börja abstrakt ovanför 0 och 1 till bokstäver. 391 00:17:31,580 --> 00:17:36,830 Och om jag ser ett mönster av 0 och 1 som verkligen representerar 72, tips, tips, 73, 392 00:17:36,830 --> 00:17:38,866 och sedan 33, vad är budskapet? 393 00:17:38,866 --> 00:17:40,348 >> STUDENT: [OHÖRBART] 394 00:17:40,348 --> 00:17:42,639 DAVID MALAN: Så om du tror tillbaka bara för en stund sedan, HI 395 00:17:42,639 --> 00:17:47,210 var budskapet jag försökte kommunicera här eftersom H är 72, 396 00:17:47,210 --> 00:17:50,925 Jag är 73, och nu 33-- du skulle inte nödvändigtvis vet detta i förväg, 397 00:17:50,925 --> 00:17:53,800 men det visar sig om man faktiskt se mer av diagrammet och systemet 398 00:17:53,800 --> 00:17:56,800 att mänskligheten överenskomna år sedan är det bara ett utropstecken. 399 00:17:56,800 --> 00:18:01,590 Och faktiskt, det finns ett mönster av symboler och siffror för varje tecken 400 00:18:01,590 --> 00:18:03,849 som du kan ha på tangentbordet. 401 00:18:03,849 --> 00:18:04,389 >> Okej. 402 00:18:04,389 --> 00:18:05,660 Låt oss abstrakt ytterligare. 403 00:18:05,660 --> 00:18:09,380 Om vi ​​inte vill bara ha saker som siffror och bokstäver, 404 00:18:09,380 --> 00:18:11,420 vi faktiskt vill genomföra grafik. 405 00:18:11,420 --> 00:18:13,351 Tja, om du har någonsin hörde akronymen RGB. 406 00:18:13,351 --> 00:18:15,559 Det är typ av daterad nu, men det är fortfarande typ av där. 407 00:18:15,559 --> 00:18:17,380 RGB är röd, grön, blå. 408 00:18:17,380 --> 00:18:19,380 Och det är bara ett system att säga, vet du vad, 409 00:18:19,380 --> 00:18:21,650 låt oss använda tre uppsättningar bitar. 410 00:18:21,650 --> 00:18:25,280 En uppsättning av 8 bitar, en annan uppsättning av åtta bitar, och en annan uppsättning av 8 bitar. 411 00:18:25,280 --> 00:18:27,710 Och låt oss använda dessa bitar att lagra hur mycket rött vi 412 00:18:27,710 --> 00:18:31,430 vill på vår skärm, hur mycket grön vi vill ha på vår skärmen, 413 00:18:31,430 --> 00:18:34,070 och hur mycket blå vi vill ha på vår skärmen. 414 00:18:34,070 --> 00:18:37,860 Och det betyder bara att om du har en lot-- ett stort antal för rött, 415 00:18:37,860 --> 00:18:39,200 det innebär att ge mig en hel del rött. 416 00:18:39,200 --> 00:18:41,658 Om du har ett stort antal för grön, ge mig en hel del grönt. 417 00:18:41,658 --> 00:18:44,660 Och om du har bara en liten bit blå eller ett litet antal som 33, 418 00:18:44,660 --> 00:18:45,960 ge mig lite blå. 419 00:18:45,960 --> 00:18:49,720 Och om du råkar kombinera dem tre storheter, så att säga, 420 00:18:49,720 --> 00:18:53,160 du får this-- du knappt kan se på projektorn här, men denna skumma 421 00:18:53,160 --> 00:18:54,630 nyans av gult eller brunt. 422 00:18:54,630 --> 00:18:58,590 >> Men detta är att säga, med hjälp av att mönster av åtta plus åtta plus plus 8-- 423 00:18:58,590 --> 00:19:01,710 att mönstret av 24 bitar är hur en dator skulle 424 00:19:01,710 --> 00:19:06,460 lagra den nyans av gult i en liten prick en pixel på skärmen. 425 00:19:06,460 --> 00:19:10,570 Så vi har gått från 0 och 1 till decimal nummer till bokstäver i alfabetet. 426 00:19:10,570 --> 00:19:13,680 Eller mer intressant, färgade prickar. 427 00:19:13,680 --> 00:19:16,200 >> Nå, vad naturligtvis då kommer nästa? 428 00:19:16,200 --> 00:19:19,040 Ja, vad är en bild som du se på Facebook eller få i ett e-postmeddelande? 429 00:19:19,040 --> 00:19:20,172 Eller liknande? 430 00:19:20,172 --> 00:19:22,130 Vad är definitionen tekniskt av en bild? 431 00:19:22,130 --> 00:19:25,090 432 00:19:25,090 --> 00:19:27,710 Ja. 433 00:19:27,710 --> 00:19:31,270 Vad är en bild som består av om du ser riktigt nära på skärmen? 434 00:19:31,270 --> 00:19:31,770 Ja. 435 00:19:31,770 --> 00:19:33,186 Det är bara en massa pixlar. 436 00:19:33,186 --> 00:19:35,220 I själva verket, om du tar din laptop kanske senare, 437 00:19:35,220 --> 00:19:37,180 och ser verkligen nära vid det-- beroende 438 00:19:37,180 --> 00:19:40,370 på hur dyr den bärbara datorn är och hur hög kvalitet skärmen är, 439 00:19:40,370 --> 00:19:43,480 du kan mycket väl se alla de små prickar på skärmen. 440 00:19:43,480 --> 00:19:45,890 >> Och dessa punkter eller pixlar, vilket innebär att det finns 441 00:19:45,890 --> 00:19:49,810 24 bitar som representerar varje pixel i den fotografi som du ser på Facebook, 442 00:19:49,810 --> 00:19:52,049 eller att du just tagit på din iPhone nyligen. 443 00:19:52,049 --> 00:19:54,090 Och så det är hur vi får saker som grafik. 444 00:19:54,090 --> 00:19:55,120 Ja, vad är en video? 445 00:19:55,120 --> 00:19:58,660 En video är bara en uppsättning av grafik flyger förbi på skärmen igen 446 00:19:58,660 --> 00:19:59,780 och om och om igen. 447 00:19:59,780 --> 00:20:04,080 Och så filmer verkligen är bara mönster bitar som representerar stödraster, rader 448 00:20:04,080 --> 00:20:06,880 och kolumner av punkter, flyger förbi skärmbilden, 449 00:20:06,880 --> 00:20:09,240 efter bild, efter bild, alias 450 00:20:09,240 --> 00:20:10,650 Rörliga bilder. 451 00:20:10,650 --> 00:20:12,340 Så det är det för in- och utgångar. 452 00:20:12,340 --> 00:20:14,420 >> Allt vi har nu är en antagandet att du 453 00:20:14,420 --> 00:20:17,190 vet vad, om vi vill ha en dator att representera information, 454 00:20:17,190 --> 00:20:18,560 Vi har ett system för att göra det. 455 00:20:18,560 --> 00:20:20,780 Vi kan göra det med 0: or och 1s vid slutet av dagen. 456 00:20:20,780 --> 00:20:23,160 Men vi kan abstrakt, så att tala, på toppen av det 457 00:20:23,160 --> 00:20:25,140 för att representera mer intressanta saker. 458 00:20:25,140 --> 00:20:28,790 Och här på ut i CS50, och datavetenskap mer generellt, 459 00:20:28,790 --> 00:20:31,250 vi nu står på axlarna av alla de människor som 460 00:20:31,250 --> 00:20:33,530 kom före oss som räknat ut det. 461 00:20:33,530 --> 00:20:38,170 Och nu bara anta att datorer kan representera in- och utgångar. 462 00:20:38,170 --> 00:20:41,140 >> Men nu ska vi faktiskt göra något med dem. 463 00:20:41,140 --> 00:20:44,850 Så en algoritm är bara en uppsättning instruktioner, steg för steg, 464 00:20:44,850 --> 00:20:46,340 för att lösa vissa problem. 465 00:20:46,340 --> 00:20:48,730 Och vad skulle ett sådant problem vara. 466 00:20:48,730 --> 00:20:52,440 Så detta är en gammal skola teknik, en telefonbok. 467 00:20:52,440 --> 00:20:55,534 Och inne i en telefonbok är en massa namn och nummer. 468 00:20:55,534 --> 00:20:57,700 Och dessa namn är i allmänhet sorterade i bokstavsordning. 469 00:20:57,700 --> 00:21:01,310 >> Så om jag ville hitta någon i denna telefonbok som Mike Smith, 470 00:21:01,310 --> 00:21:02,930 vad är en typisk människa ska göra? 471 00:21:02,930 --> 00:21:06,000 Tja, kan du helt enkelt öppna upp, titta på den första sidan. 472 00:21:06,000 --> 00:21:07,390 Jag ser inte Mike Smith. 473 00:21:07,390 --> 00:21:09,740 Vänd dig till den andra sidan, Jag ser inte Mike Smith. 474 00:21:09,740 --> 00:21:11,830 Och bara hålla på och gå. 475 00:21:11,830 --> 00:21:14,397 Är detta steg för steg korrekt? 476 00:21:14,397 --> 00:21:17,380 477 00:21:17,380 --> 00:21:18,310 Ja. 478 00:21:18,310 --> 00:21:20,080 Det är typ av dum, höger. 479 00:21:20,080 --> 00:21:21,646 Det är ineffektivt, höger. 480 00:21:21,646 --> 00:21:24,520 Eftersom det kommer att ta för evigt att komma till Mike, men det är korrekt. 481 00:21:24,520 --> 00:21:26,620 För om Mike är här Jag kommer verkligen hitta honom. 482 00:21:26,620 --> 00:21:29,030 >> Så vad är en något mer förnuftig person kommer att göra? 483 00:21:29,030 --> 00:21:32,180 De kan fortfarande öppna till fronten, och kanske flyga genom telefonboken 484 00:21:32,180 --> 00:21:33,250 två sidor åt gången. 485 00:21:33,250 --> 00:21:34,840 Två, fyra, sex, åtta. 486 00:21:34,840 --> 00:21:36,830 Jag kan faktiskt inte fysiskt gör det mycket bra. 487 00:21:36,830 --> 00:21:39,560 Men i teorin borde detta vara dubbelt så snabbt, två sidor åt gången. 488 00:21:39,560 --> 00:21:41,152 Är denna algoritm korrekt? 489 00:21:41,152 --> 00:21:43,252 >> STUDENT: [OHÖRBART] 490 00:21:43,252 --> 00:21:44,460 DAVID MALAN: Inte nödvändigtvis. 491 00:21:44,460 --> 00:21:44,960 Bra. 492 00:21:44,960 --> 00:21:46,112 Varför det förbehållet? 493 00:21:46,112 --> 00:21:50,020 >> STUDENT: Eftersom han kunde vara på en av de sidor som du hoppa. 494 00:21:50,020 --> 00:21:50,770 DAVID MALAN: Ja. 495 00:21:50,770 --> 00:21:52,260 Så även om jag får närmare och närmare. 496 00:21:52,260 --> 00:21:56,150 Tänk om han är bara av misstag, dålig lycka, inklämt mellan de två sidorna 497 00:21:56,150 --> 00:21:57,290 att jag flyger över? 498 00:21:57,290 --> 00:21:59,920 499 00:21:59,920 --> 00:22:01,730 Så vi behöver en fix för detta. 500 00:22:01,730 --> 00:22:03,590 Vi behöver faktiskt sedan säga, vänta en minut, 501 00:22:03,590 --> 00:22:06,240 kanske om vi går för långt, kanske om vi träffade T avsnitt, 502 00:22:06,240 --> 00:22:09,670 för T kommer efter Smith, då vi bör åtminstone dubbelt tillbaka åtminstone en sida. 503 00:22:09,670 --> 00:22:12,630 Så fastställbara, men det finns en villkorad fråga där. 504 00:22:12,630 --> 00:22:16,159 Så det är dubbelt så snabbt, men du kanske måste fördubbla tillbaka bara lite. 505 00:22:16,159 --> 00:22:19,200 Men ingen i hans rum, även om du inte verkligen använda telefonböcker längre, 506 00:22:19,200 --> 00:22:20,740 kommer att börja från början. 507 00:22:20,740 --> 00:22:23,317 Vad ska du göra efter Mike Smith? 508 00:22:23,317 --> 00:22:24,900 Du kommer att gå ungefär till S. 509 00:22:24,900 --> 00:22:26,820 Eller om du inte verkligen har den fusklapp på papperet, 510 00:22:26,820 --> 00:22:28,365 du kommer att gå åtminstone ungefär till mitten. 511 00:22:28,365 --> 00:22:30,220 Och absolut inte framsidan av boken. 512 00:22:30,220 --> 00:22:31,130 Du kommer att titta ner. 513 00:22:31,130 --> 00:22:33,770 Och matematiskt du förmodligen kommer att se M avsnitt, som 514 00:22:33,770 --> 00:22:34,890 är ungefär i mitten. 515 00:22:34,890 --> 00:22:36,848 Och då du kommer att inse vad som är sant? 516 00:22:36,848 --> 00:22:37,968 Var är Mike? 517 00:22:37,968 --> 00:22:39,170 >> STUDENT: [OHÖRBART] 518 00:22:39,170 --> 00:22:39,920 DAVID MALAN: Ja. 519 00:22:39,920 --> 00:22:41,530 Så han är över på denna sida. 520 00:22:41,530 --> 00:22:42,710 Och så vad kan du göra? 521 00:22:42,710 --> 00:22:48,870 Tja, både bildligt och bokstavligt kan du riva problem i halv gång? 522 00:22:48,870 --> 00:22:54,260 Och då vet att du kan kasta Halv av problemet bort. 523 00:22:54,260 --> 00:22:58,170 Och nu är vi kvar med grunden samma problem, men det är hälften så stort. 524 00:22:58,170 --> 00:22:59,920 Och så nu vad är uppsättning instruktioner? 525 00:22:59,920 --> 00:23:01,753 Vad är algoritmen för att hitta Mike Smith? 526 00:23:01,753 --> 00:23:03,030 Det är exakt samma sak. 527 00:23:03,030 --> 00:23:05,750 >> Nu händer det att vara M sektionen och detta är den Z sektion, 528 00:23:05,750 --> 00:23:08,650 men det grundläggande formeln är fortfarande densamma. 529 00:23:08,650 --> 00:23:10,800 Gå ungefär till mitten, titta ner, oh, darn det. 530 00:23:10,800 --> 00:23:13,160 Nu är jag i T avsnittet Jag har gått för långt. 531 00:23:13,160 --> 00:23:16,640 Men även här kan du tillämpa samma logik. 532 00:23:16,640 --> 00:23:19,189 Throw halv av problemet bort och nu är vi 533 00:23:19,189 --> 00:23:21,230 vänster med ett problem som är en fjärdedel av storleken. 534 00:23:21,230 --> 00:23:28,140 Och vi kan upprepa, och vi kan upprepa, och vi kan upprepa tills teoretiskt 535 00:23:28,140 --> 00:23:32,190 det finns bara en sida kvar på som Mike antingen är eller inte. 536 00:23:32,190 --> 00:23:34,014 >> Så vad är så kraftfull om denna idé? 537 00:23:34,014 --> 00:23:35,680 Jag menar efter allt, det är ganska intuitivt. 538 00:23:35,680 --> 00:23:37,390 Ingen kommer att börja på i början av telefonboken 539 00:23:37,390 --> 00:23:39,320 och flip 1.000 sidor för att hitta Mike Smith. 540 00:23:39,320 --> 00:23:42,319 De flesta alla i det här rummet kommer att göra ungefär den typen av algoritm 541 00:23:42,319 --> 00:23:43,220 spara för rivningen. 542 00:23:43,220 --> 00:23:45,480 >> Och så varför vi gör det? 543 00:23:45,480 --> 00:23:47,810 Tja, anser effektiviteten. 544 00:23:47,810 --> 00:23:51,500 Överväga hur mycket bättre den här algoritm var genom att bryta ner 545 00:23:51,500 --> 00:23:52,890 i sina beståndsdelar. 546 00:23:52,890 --> 00:23:53,980 Så vad gjorde jag först göra? 547 00:23:53,980 --> 00:23:55,389 Jag plockade upp telefonboken. 548 00:23:55,389 --> 00:23:57,180 Och en datorforskare, och en programmerare, 549 00:23:57,180 --> 00:24:00,090 mer generellt visar det sig, går att börja räkna allt på 0. 550 00:24:00,090 --> 00:24:00,610 >> Varför? 551 00:24:00,610 --> 00:24:03,240 Tja, det är lite konstigt att vi människor räknas, i allmänhet, 552 00:24:03,240 --> 00:24:04,400 utgående från en. 553 00:24:04,400 --> 00:24:08,110 För vad är det minsta antalet Vi kan tydligt representerar baserad 554 00:24:08,110 --> 00:24:09,930 även på vår gamla grundskolan matte? 555 00:24:09,930 --> 00:24:12,400 Ja, det var 0, om det är i decimal eller binär. 556 00:24:12,400 --> 00:24:14,900 Och så du ser i världen av datorer och programmering, 557 00:24:14,900 --> 00:24:17,620 specifikt, vi börjar räknar allt från 0. 558 00:24:17,620 --> 00:24:19,690 >> Så jag plockade upp telefonboken steg 0. 559 00:24:19,690 --> 00:24:21,924 Jag kommer att öppna för mitt i telefonboken. 560 00:24:21,924 --> 00:24:23,840 Och det är sannerligen en uttryck för vad jag gjorde. 561 00:24:23,840 --> 00:24:25,900 Och sedan steg två var titta på namnen. 562 00:24:25,900 --> 00:24:29,110 Steg tre är en liten annorlunda konceptuellt. 563 00:24:29,110 --> 00:24:30,600 Jag frågar mig själv en fråga. 564 00:24:30,600 --> 00:24:33,610 Om Smith är bland de namn, Jag kommer att fatta ett beslut. 565 00:24:33,610 --> 00:24:36,550 Om han är bland de namn, då jag kommer att kalla Mike. 566 00:24:36,550 --> 00:24:39,590 Och jag kommer att fatta ett beslut baserat på denna del av information. 567 00:24:39,590 --> 00:24:44,100 >> Men om inte, om Smith är tidigare i boken till vänster, 568 00:24:44,100 --> 00:24:48,200 Jag kommer att öppna till mitten av den vänstra halvan av boken. 569 00:24:48,200 --> 00:24:51,674 Och så här är skicklighet, Jag kommer att gå tillbaka till steg två. 570 00:24:51,674 --> 00:24:53,590 Jag kommer att sortera av stå på egna axlar 571 00:24:53,590 --> 00:24:55,110 och bara upprepa tidigare arbete jag gjorde. 572 00:24:55,110 --> 00:24:58,062 Men det arbete jag har kvar är mindre, och mindre, och mindre. 573 00:24:58,062 --> 00:24:59,270 Men det är fortfarande kommer att fungera. 574 00:24:59,270 --> 00:25:02,110 Men om Mike är i stället senare i boken till höger, 575 00:25:02,110 --> 00:25:04,980 Jag kommer att öppna till mitten av den högra halvan av boken, 576 00:25:04,980 --> 00:25:07,240 sedan gå tillbaka till steg två. 577 00:25:07,240 --> 00:25:09,330 >> Men det finns faktiskt en fjärde scenario. 578 00:25:09,330 --> 00:25:13,336 Mike är antingen här, eller här, eller här, eller-- 579 00:25:13,336 --> 00:25:14,152 >> STUDENT: Inte där. 580 00:25:14,152 --> 00:25:15,110 DAVID MALAN: Inte där. 581 00:25:15,110 --> 00:25:18,580 Och faktiskt, om vi räknar inte med denna fjärde och sista scenariot 582 00:25:18,580 --> 00:25:21,510 vårt program kan vara buggig eller brister på något sätt. 583 00:25:21,510 --> 00:25:25,020 Else, sluta när det gäller att Vi har inte hittat Mike alls. 584 00:25:25,020 --> 00:25:27,720 Och faktiskt, om du har någonsin märkt datorn hängande, eller alla 585 00:25:27,720 --> 00:25:30,490 plötsligt ord eller någon annan Programmet avslutas bara oväntat, 586 00:25:30,490 --> 00:25:32,614 och ibland thee fel meddelande är bokstavligen det. 587 00:25:32,614 --> 00:25:34,070 Detta program avslutas oväntat. 588 00:25:34,070 --> 00:25:35,570 Det kan vara för någon av flera skäl. 589 00:25:35,570 --> 00:25:38,120 Men ibland är det något så enkelt som detta. 590 00:25:38,120 --> 00:25:40,440 Den mänskliga programmerare som skrev att mjukvaran 591 00:25:40,440 --> 00:25:43,610 inte inse att, åh, det finns en fjärde sak som faktiskt kan hända. 592 00:25:43,610 --> 00:25:46,480 Och om du inte skriva kod för att fånga den fjärde scenario, 593 00:25:46,480 --> 00:25:51,342 det är verkligen oväntat ibland vad datorn kan faktiskt göra. 594 00:25:51,342 --> 00:25:53,050 Nu ropar en några av dessa saker. 595 00:25:53,050 --> 00:25:55,465 Så i gult här, jag har markerade villkor 596 00:25:55,465 --> 00:25:57,590 som hädanefter vi bara kommer att kalla funktioner. 597 00:25:57,590 --> 00:26:00,700 Funktioner i världen av programmering är precis som åtgärder, 598 00:26:00,700 --> 00:26:01,850 uttalanden av åtgärder. 599 00:26:01,850 --> 00:26:05,720 Så plocka upp, öppen för, titta på, ring, öppna, öppna, sluta. 600 00:26:05,720 --> 00:26:09,350 Det är en funktion, en procedur, en åtgärd, vilket som helst antal synonymer 601 00:26:09,350 --> 00:26:10,184 skulle fungera lika bra. 602 00:26:10,184 --> 00:26:11,850 Nu vad är dessa saker nu i gult? 603 00:26:11,850 --> 00:26:14,210 Om annat, om annat, om annat, dessa är vad 604 00:26:14,210 --> 00:26:16,500 vi kommer att kalla villkoren i programmering, 605 00:26:16,500 --> 00:26:19,270 eller filialer, beslut Parlamentet, om man så vill. 606 00:26:19,270 --> 00:26:22,759 Men hur vet du vilken gaffel i vägen för att ta, så att säga? 607 00:26:22,759 --> 00:26:24,550 Vi måste lyfta fram villkoren till höger 608 00:26:24,550 --> 00:26:27,570 där, vilket är dessa Ja Nej frågor. 609 00:26:27,570 --> 00:26:29,040 Dessa sanna falska frågor. 610 00:26:29,040 --> 00:26:30,880 Smith bland namn? 611 00:26:30,880 --> 00:26:32,190 Smith tidigare i boken? 612 00:26:32,190 --> 00:26:33,260 Smith senare i boken? 613 00:26:33,260 --> 00:26:35,490 Det är frågor till där det finns en ja eller nej, 614 00:26:35,490 --> 00:26:42,110 eller ekvivalent sant, eller falskt, eller ekvivalent, ett eller noll svar. 615 00:26:42,110 --> 00:26:44,260 >> Och under tiden finns det bara en sista biten. 616 00:26:44,260 --> 00:26:45,940 Detta har här vilken typ av effekt? 617 00:26:45,940 --> 00:26:48,230 Oavsett om du programmerar innan, hur skulle du 618 00:26:48,230 --> 00:26:51,030 beskriva vad steg sju och 10 gör? 619 00:26:51,030 --> 00:26:54,110 620 00:26:54,110 --> 00:26:55,027 Vad sa du? 621 00:26:55,027 --> 00:26:56,110 STUDENT: En rekursiv steg. 622 00:26:56,110 --> 00:26:56,980 DAVID MALAN: En rekursiv steget. 623 00:26:56,980 --> 00:26:58,000 Ja, i huvudsak. 624 00:26:58,000 --> 00:27:00,384 Det är tekniskt iterativ här om du är bekant. 625 00:27:00,384 --> 00:27:01,550 Men vi ska återkomma till det. 626 00:27:01,550 --> 00:27:03,930 Men det gör något klart. 627 00:27:03,930 --> 00:27:06,370 Återigen, det är att framkalla en cykel, en slinga, rätt. 628 00:27:06,370 --> 00:27:08,770 Du bokstavligen gå tillbaka till någon tidigare steg. 629 00:27:08,770 --> 00:27:12,592 Och så sannerligen, detta kommer att genomföra någon form av cykel. 630 00:27:12,592 --> 00:27:15,050 Men du kommer inte att få fastnat i denna oändligt, höger. 631 00:27:15,050 --> 00:27:19,290 För om du ständigt kontrollera är Mike här, eller till vänster, eller inte här, 632 00:27:19,290 --> 00:27:21,360 småningom han inte kommer att vara där. 633 00:27:21,360 --> 00:27:24,590 Och du kan bara sluta helt och hållet enligt den sista raden. 634 00:27:24,590 --> 00:27:25,834 >> Så det är det för vokabulär. 635 00:27:25,834 --> 00:27:28,250 Och det var vad vi skulle i allmänhet kallar pseudokoden. 636 00:27:28,250 --> 00:27:29,570 Det är inte en faktisk språk. 637 00:27:29,570 --> 00:27:32,405 Det är bara mycket bryskt engelska, men den kommunicerar punkten. 638 00:27:32,405 --> 00:27:33,780 Det finns ingen formell struktur här. 639 00:27:33,780 --> 00:27:35,738 Du använder bara det fåtal ord, men som tydliga ord 640 00:27:35,738 --> 00:27:37,870 som du kan kommunicera din idé. 641 00:27:37,870 --> 00:27:40,580 >> Nu hur bra är att algoritmen och hur mycket bättre är det? 642 00:27:40,580 --> 00:27:43,570 Tja, vi har inte att komma in i detaljerna i siffror eller något 643 00:27:43,570 --> 00:27:44,069 sådär. 644 00:27:44,069 --> 00:27:46,300 Men vi kan titta på form av denna lösning. 645 00:27:46,300 --> 00:27:50,194 Så om vi drar bara några xy plot här på den horisontella axeln här. 646 00:27:50,194 --> 00:27:51,860 Låt oss bara ringa storleken på problemet. 647 00:27:51,860 --> 00:27:55,540 Och datavetare skulle typiskt använder n som variabel här. 648 00:27:55,540 --> 00:27:59,690 Så n sidor, eller n personer i rummet, eller vad det är du försöker räkna. 649 00:27:59,690 --> 00:28:03,039 >> Och sedan på den vertikala axeln på vänster, skulle det vara dags att lösa. 650 00:28:03,039 --> 00:28:05,330 Så hur många sekunder gör det ta mig att hitta Mike Smith? 651 00:28:05,330 --> 00:28:06,621 Eller hur många steg tar det? 652 00:28:06,621 --> 00:28:08,100 Hur många sida varv tar det? 653 00:28:08,100 --> 00:28:11,370 Så det är hur mycket det kostar mig i tid för att lösa ett problem. 654 00:28:11,370 --> 00:28:15,030 Och vi skulle kunna dra den första algoritmer lutning, om man så vill, 655 00:28:15,030 --> 00:28:16,910 som just denna raka linje i rött. 656 00:28:16,910 --> 00:28:18,450 Och jag ska kalla det n. 657 00:28:18,450 --> 00:28:19,117 >> Varför n? 658 00:28:19,117 --> 00:28:20,950 Varför är det just detta en till en relation? 659 00:28:20,950 --> 00:28:22,700 Tja, om Verizon eller oavsett telefonbolag 660 00:28:22,700 --> 00:28:25,130 adderar ytterligare en sida till telefonboken nästa år, 661 00:28:25,130 --> 00:28:28,370 som kan driva Mike en steg närmare slutet, 662 00:28:28,370 --> 00:28:29,950 beroende på var den sidan är. 663 00:28:29,950 --> 00:28:32,380 Och så effekten kanske bara vara att lägga till ytterligare en sekund. 664 00:28:32,380 --> 00:28:33,520 Eller en mer sida sväng. 665 00:28:33,520 --> 00:28:34,970 En 1-1-förhållande. 666 00:28:34,970 --> 00:28:37,410 >> Däremot den andra algoritmen. 667 00:28:37,410 --> 00:28:41,406 Hur mycket snabbare var det intuitivt? 668 00:28:41,406 --> 00:28:42,780 Där jag gick två sidor åt gången? 669 00:28:42,780 --> 00:28:43,664 Ja. 670 00:28:43,664 --> 00:28:44,497 >> STUDENT: [OHÖRBART] 671 00:28:44,497 --> 00:28:47,255 672 00:28:47,255 --> 00:28:48,080 >> DAVID MALAN: Ja. 673 00:28:48,080 --> 00:28:49,220 Så det kommer att bli dubbelt så snabbt. 674 00:28:49,220 --> 00:28:51,344 Och vi skulle dra det här beroende på omfattningen. 675 00:28:51,344 --> 00:28:54,220 Det är fortfarande en rak linje, men lägre än den röda linjen. 676 00:28:54,220 --> 00:28:56,410 Eftersom det för ett visst antal sidor, om det tar 677 00:28:56,410 --> 00:28:58,360 du här många steg med den första algoritmen, 678 00:28:58,360 --> 00:29:00,570 det kommer att ta dig halv så många steg med den andra. 679 00:29:00,570 --> 00:29:02,770 Och så den gula linjen som beskriver den andra algoritmen 680 00:29:02,770 --> 00:29:03,990 bara kommer att ligga under den. 681 00:29:03,990 --> 00:29:07,250 >> Men vad är riktigt kraftfull är att tänka på tredje och sista, 682 00:29:07,250 --> 00:29:10,480 och otroligt mest intuitiva algoritm, som har denna form. 683 00:29:10,480 --> 00:29:12,720 Tekniskt vi skulle kalla detta en logaritmisk kurva. 684 00:29:12,720 --> 00:29:14,309 Log bas 2 n i detta fall. 685 00:29:14,309 --> 00:29:15,600 Men som egentligen inte roll. 686 00:29:15,600 --> 00:29:19,140 Det viktiga är egentligen grunden annan form som den har. 687 00:29:19,140 --> 00:29:22,810 Och du kan överväga hur mycket kortare denna linje verkligen 688 00:29:22,810 --> 00:29:24,620 är i det långa loppet. 689 00:29:24,620 --> 00:29:25,870 Det är hela tiden ökar. 690 00:29:25,870 --> 00:29:27,620 Det är inte platta ut perfekt. 691 00:29:27,620 --> 00:29:34,030 Men det blir allt så mycket långsammare eftersom problemet blir större och större. 692 00:29:34,030 --> 00:29:36,710 Och du kan tänka på det här way-- om Verizon inte bara 693 00:29:36,710 --> 00:29:40,410 lägga till en sida nästa år men dubblar antalet sidor i telefonboken, 694 00:29:40,410 --> 00:29:42,740 den första algoritmen kanske ta dubbelt så många steg. 695 00:29:42,740 --> 00:29:45,360 Om det är 1000 sidor detta år, 2.000 sidor nästa år, 696 00:29:45,360 --> 00:29:47,180 Mike kan vara så mycket längre bort. 697 00:29:47,180 --> 00:29:49,380 Så det är 1000 extra steg för att hitta honom. 698 00:29:49,380 --> 00:29:51,610 Den andra algoritmen kanske bara 500 mer 699 00:29:51,610 --> 00:29:55,490 åtgärder för att hitta honom eftersom igen, Jag flyger igenom det två åt gången. 700 00:29:55,490 --> 00:29:56,950 >> Men hur är det tredje algoritm? 701 00:29:56,950 --> 00:29:59,010 Om Verizon fördubblar storleken av telefonboken 702 00:29:59,010 --> 00:30:02,620 nästa år från 1000 till 2000 sidor, hur många fler steg 703 00:30:02,620 --> 00:30:05,540 är min tredje algoritm kommer att ta? 704 00:30:05,540 --> 00:30:06,630 Ja, det är bara en. 705 00:30:06,630 --> 00:30:08,600 Och det är den kraftfulla idén. 706 00:30:08,600 --> 00:30:12,780 Du kan ta 1000 sida bita ut ur det problemet på en gång. 707 00:30:12,780 --> 00:30:14,510 Och nu om man betänker en dum scenario, 708 00:30:14,510 --> 00:30:17,320 men det slags talar till kraften i denna typ av intuition-- 709 00:30:17,320 --> 00:30:21,494 om en telefonbok hade, liksom, fyra miljarder sidor, känns som ett riktigt stort problem. 710 00:30:21,494 --> 00:30:23,410 Och faktiskt, kanske det ta mig fyra miljarder sida 711 00:30:23,410 --> 00:30:26,549 vänder för att hitta Mike Smith i det fallet med den första algoritmen. 712 00:30:26,549 --> 00:30:28,840 Men hur många steg skulle det ta i den tredje algoritmen 713 00:30:28,840 --> 00:30:31,585 att hitta Mike bland fyra miljarder bitar av papper? 714 00:30:31,585 --> 00:30:34,865 715 00:30:34,865 --> 00:30:36,240 Så fyra miljarder man river på mitten. 716 00:30:36,240 --> 00:30:37,220 Du får två miljarder. 717 00:30:37,220 --> 00:30:42,810 Sedan en miljard, då 500 miljoner, 250 miljoner, 125 million-- men det 718 00:30:42,810 --> 00:30:44,780 känns som om detta är kommer att ta ett tag. 719 00:30:44,780 --> 00:30:47,340 Jag kanske behöver 32 fingrar att räkna upp så hög. 720 00:30:47,340 --> 00:30:51,340 Men det är verkligen som få som 32 Page tårar. 721 00:30:51,340 --> 00:30:54,060 Du kan gå från fyra miljarder till en sida delnings 722 00:30:54,060 --> 00:30:57,030 det ursprungliga antalet sidor i halv 32 gånger 723 00:30:57,030 --> 00:30:59,290 tills du är kvar med bara denna enda sida. 724 00:30:59,290 --> 00:31:01,320 >> Nu, naturligtvis, jag fusk här. 725 00:31:01,320 --> 00:31:06,470 Det är inte så att vi bara vara sort dumma helt med de två första 726 00:31:06,470 --> 00:31:07,470 algoritmer. 727 00:31:07,470 --> 00:31:11,500 Jag fusk i någon mening, eller verkligen jag utnyttja ett antagande. 728 00:31:11,500 --> 00:31:15,610 Vad var sant om telefonboken i sin ursprungliga form som tillät 729 00:31:15,610 --> 00:31:17,450 mig att ens använda det tredje algoritm? 730 00:31:17,450 --> 00:31:18,110 Ja? 731 00:31:18,110 --> 00:31:19,360 PUBLIK: Det var alfabetiskt. 732 00:31:19,360 --> 00:31:21,130 DAVID MALAN: Det var i alfabetisk ordning, eller hur? 733 00:31:21,130 --> 00:31:23,500 Om det var bara i slumpmässig ordning, är detta ett slöseri 734 00:31:23,500 --> 00:31:24,880 tid, hela det här samtalet. 735 00:31:24,880 --> 00:31:27,500 Jag måste titta på varje sida om det är i slumpmässig ordning 736 00:31:27,500 --> 00:31:30,350 att hitta Mike Smith innan jag kan konstatera att han är där eller inte. 737 00:31:30,350 --> 00:31:32,880 Och så hörnet vi har skurit är att jag har 738 00:31:32,880 --> 00:31:35,752 antas att någon annan i det här fallet gjorde jobbet åt mig. 739 00:31:35,752 --> 00:31:38,460 Och så att i slutändan inviterar frågan, ja, vänta en minut. 740 00:31:38,460 --> 00:31:41,284 How do you sorterar 1000 sidor av namn och nummer? 741 00:31:41,284 --> 00:31:43,200 Det är faktiskt en annan problem, något 742 00:31:43,200 --> 00:31:44,574 Vi ska återkomma till i framtiden. 743 00:31:44,574 --> 00:31:48,130 Men när man tänker på hemsidor som Facebook och Google för Gmail 744 00:31:48,130 --> 00:31:50,450 och saker som Googles egna sökindex, 745 00:31:50,450 --> 00:31:53,800 när man har miljoner eller miljarder bitar av data som finns lagrad i dessa dagar, 746 00:31:53,800 --> 00:31:56,660 searching-- och inte tala sortering dessa problems-- 747 00:31:56,660 --> 00:31:59,450 i slutändan är en utmaning i sig. 748 00:31:59,450 --> 00:32:02,250 Och faktiskt, så är detta bara en av dessa utmaningar 749 00:32:02,250 --> 00:32:03,460 att vi kommer att titta på. 750 00:32:03,460 --> 00:32:05,590 >> Så nu ska vi ta en stund och ta en titt på CS50 751 00:32:05,590 --> 00:32:09,082 själv och ge dig en känsla av vad som väntar den här terminen. 752 00:32:09,082 --> 00:32:11,540 Faktum är att om du inte redan har gjort, tar en titt på den här webbadressen. 753 00:32:11,540 --> 00:32:13,880 Och som Patrick hänvisade till detta år vi är 754 00:32:13,880 --> 00:32:17,130 gör en betydande investering alla desto mer under loppet stöd 755 00:32:17,130 --> 00:32:20,170 struktur i termer av terapi och CA, kontorstid, 756 00:32:20,170 --> 00:32:23,520 sektioner tillgänglighet, och digitalt material på nätet, liksom. 757 00:32:23,520 --> 00:32:27,489 Själva verket, i termer av banans föreläsning, vi är här i dag. 758 00:32:27,489 --> 00:32:29,780 Och förväntningarna detta år officiellt av kursen 759 00:32:29,780 --> 00:32:32,370 är sköta idag, kursens sista föreläsning, och en kurs 760 00:32:32,370 --> 00:32:35,161 ungefär i mitten av terminen med varje föreläsning i mellan 761 00:32:35,161 --> 00:32:37,280 förfogande i allmänhet på en fredag ​​eftermiddag 762 00:32:37,280 --> 00:32:40,240 på nätet, både för Yale studenter och Harvard studenter i år. 763 00:32:40,240 --> 00:32:42,090 I själva verket en av de grundläggande förändringar är 764 00:32:42,090 --> 00:32:44,310 att vi antar på Harvard ett paradigm mycket 765 00:32:44,310 --> 00:32:46,570 som vi gjorde här förra år och nu i år, 766 00:32:46,570 --> 00:32:50,300 så att liknande, vi fortfarande filma mest av kursens föreläsningar i Cambridge 767 00:32:50,300 --> 00:32:52,900 men göra dem tillgängliga tidigare än vad vi har i det förflutna 768 00:32:52,900 --> 00:32:55,540 så att de av du-- om du vill, till exempel, 769 00:32:55,540 --> 00:32:58,400 få ett försprång på material på den första helgen i stället 770 00:32:58,400 --> 00:33:02,000 än den andra helgen, har du tillgång till dessa typer av material, 771 00:33:02,000 --> 00:33:06,561 sökbar, inbäddningsbar, hyperlinkable till relaterade resurser allt tidigare. 772 00:33:06,561 --> 00:33:09,560 När det gäller de ämnen, för att ge dig en känsla av kursens trajectory-- 773 00:33:09,560 --> 00:33:12,365 och en del av detta kan vara jargong för nu, men inte för länge, vara säker. 774 00:33:12,365 --> 00:33:15,010 Vi börjar idag, i slutändan, med att titta på programmering en 775 00:33:15,010 --> 00:33:16,260 språk som kallas Scratch. 776 00:33:16,260 --> 00:33:19,380 Vi kommer övergången därefter nästa vecka till något som kallas C 777 00:33:19,380 --> 00:33:22,140 och sedan titta på andra byggnaden block för att lösa problem, 778 00:33:22,140 --> 00:33:26,230 saker som kallas matriser och algoritmer, hur vi använder minne till vår fördel 779 00:33:26,230 --> 00:33:28,326 och nackdelar, och saker som datastrukturer, 780 00:33:28,326 --> 00:33:31,200 och sedan mot den bakre änden av den klass tittar på maskininlärning 781 00:33:31,200 --> 00:33:33,410 och tittar på en annan språk som kallas Python, 782 00:33:33,410 --> 00:33:37,460 hur webben fungerar, hur internet mer i allmänhet fungerar, protokoll som HTTP, 783 00:33:37,460 --> 00:33:40,950 språk för databaser som SQL, JavaScript för webben, 784 00:33:40,950 --> 00:33:43,000 och slutligen binda alla av dem tillsammans. 785 00:33:43,000 --> 00:33:44,708 >> Och så sannerligen, vid slutet av dagen, du 786 00:33:44,708 --> 00:33:50,250 kommer inte lära sig i denna klass Scratch eller C eller Python eller SQL eller JavaScript. 787 00:33:50,250 --> 00:33:53,560 Du kommer i stället mer generellt lära datavetenskap och grunden 788 00:33:53,560 --> 00:33:55,790 därav, och du kommer lära sig att programmera 789 00:33:55,790 --> 00:33:58,800 i valfritt antal av dessa språk på vägen. 790 00:33:58,800 --> 00:34:00,970 Så ja, ett av målen av kursen i slutet 791 00:34:00,970 --> 00:34:04,160 är att ta bort alla kursens stödhjul av de sista veckor 792 00:34:04,160 --> 00:34:06,710 så att efter detta, kan du återgå till din egen fields-- 793 00:34:06,710 --> 00:34:08,510 oavsett om det är eller är inte datavetenskap 794 00:34:08,510 --> 00:34:12,290 eller teknik, i den naturliga vetenskaper, konst, humaniora eller beyond-- 795 00:34:12,290 --> 00:34:14,720 och ta del av detta kursens idéer och detta fältets 796 00:34:14,720 --> 00:34:17,400 idéer och praktiska kompetens till din egen domän 797 00:34:17,400 --> 00:34:19,480 För att lösa problem däri. 798 00:34:19,480 --> 00:34:22,990 >> Vad vi ska göra här tiden i de flesta torsdagar efter idag 799 00:34:22,990 --> 00:34:26,160 är med kursens huvuden leder vad vi kallar genomgångar 800 00:34:26,160 --> 00:34:27,620 av kursens problemsamlingar. 801 00:34:27,620 --> 00:34:29,610 Så varje vecka när vi har ett problem in, vi ska 802 00:34:29,610 --> 00:34:32,900 att gå igenom på en plats så här kursens utmaningar, 803 00:34:32,900 --> 00:34:35,582 erbjuder dig några tips och tricks och designtekniker. 804 00:34:35,582 --> 00:34:37,540 Men om du inte kan för att göra dem personligen, 805 00:34:37,540 --> 00:34:39,760 inser de samma resurser kommer att bäddas 806 00:34:39,760 --> 00:34:41,590 genom en av banans amanuenser 807 00:34:41,590 --> 00:34:43,860 i problemet ställer sig, liksom. 808 00:34:43,860 --> 00:34:47,124 >> Problemet ställer i år, till skillnad från förra året, baserat på återkoppling, 809 00:34:47,124 --> 00:34:48,540 kommer fortfarande att släppas på fredagar. 810 00:34:48,540 --> 00:34:51,310 Men snarare än att vara beroende efterföljande fredag, 811 00:34:51,310 --> 00:34:55,079 vilket ger dig bara sju dagar, kommer att effektivt bero 10 dagar senare. 812 00:34:55,079 --> 00:34:57,620 Och faktiskt, kommer detta att innebära att de kommer att överlappa med en helg. 813 00:34:57,620 --> 00:34:59,369 Men vi hoppas att detta år särskilt denna kommer 814 00:34:59,369 --> 00:35:02,320 tillåta elever att bättre tillgodose ebb och flod i sina scheman, 815 00:35:02,320 --> 00:35:05,040 oavsett om det är akademiker eller extracurriculars eller idrott 816 00:35:05,040 --> 00:35:06,280 eller midterm säsongen. 817 00:35:06,280 --> 00:35:10,060 Du kan antingen front-load eller back-belastning din vecka med fokus på CS50 baserad 818 00:35:10,060 --> 00:35:12,400 på egen hand vecka faktiska kurs belastning. 819 00:35:12,400 --> 00:35:14,990 >> Problemet ställer sig kommer att omfatta ett antal språk, 820 00:35:14,990 --> 00:35:17,990 även om vi ska fokusera främst tidigt på C 821 00:35:17,990 --> 00:35:23,040 innan vi fokuserar därefter på högre nivå, fler webbcentrerade språk. 822 00:35:23,040 --> 00:35:25,970 Och sedan ett par frågor här-- bör du ta en klass som CS50 823 00:35:25,970 --> 00:35:26,900 som en första året? 824 00:35:26,900 --> 00:35:27,970 Så absolut. 825 00:35:27,970 --> 00:35:30,470 Och faktiskt, det är inte nödvändigtvis något 826 00:35:30,470 --> 00:35:34,440 du bör skjuta upp tills du har klippt tänderna på andra typer av klasser. 827 00:35:34,440 --> 00:35:36,290 Utan snarare överväga att för många studenter, 828 00:35:36,290 --> 00:35:39,040 inklusive mig själv tillbaka i dag, detta är en mycket obekant område, 829 00:35:39,040 --> 00:35:40,997 särskilt om du aldrig tog en AP CSA 830 00:35:40,997 --> 00:35:42,580 eller något liknande i high school. 831 00:35:42,580 --> 00:35:44,705 Men inser att tidigt, oavsett om det är den här kursen 832 00:35:44,705 --> 00:35:47,900 eller någon annan introduktionskurs, nu är verkligen den bästa tiden, 833 00:35:47,900 --> 00:35:52,082 Jag tror, ​​att hitta någon ny väg eller några nya akademiskt intresse, liksom. 834 00:35:52,082 --> 00:35:55,040 Och sedan ta med andra courses-- så en av de viktigaste skillnaderna här 835 00:35:55,040 --> 00:35:57,906 kontra Harvard är att vi bara ta fyra kurser per termin 836 00:35:57,906 --> 00:35:59,030 vid Harvard av någon anledning. 837 00:35:59,030 --> 00:36:01,494 Och ni faktiskt dra av några 36 kurser totalt 838 00:36:01,494 --> 00:36:04,410 under loppet av dina fyra år, vilket innebär i allmänhet fyra eller fem 839 00:36:04,410 --> 00:36:05,040 klasser. 840 00:36:05,040 --> 00:36:08,367 Och jag tror att det är ganska rimligt att säga och frånsäger sig CS50, genom design, är 841 00:36:08,367 --> 00:36:10,700 förmodligen inte den typ av klass att du bör normalt 842 00:36:10,700 --> 00:36:13,680 ta med fyra andra kurser för totalt fem 843 00:36:13,680 --> 00:36:16,249 eftersom psets är genom utforma ganska intensivt. 844 00:36:16,249 --> 00:36:18,040 Faktum är att jag också lärt mig detta tillbaka i dag. 845 00:36:18,040 --> 00:36:21,110 Jag skulle inte beskriva CS50 och datavetenskap, programmering 846 00:36:21,110 --> 00:36:24,477 som så mycket hårt som det är bara tidskrävande. 847 00:36:24,477 --> 00:36:26,560 Det är inte sånt där efter middagen, du 848 00:36:26,560 --> 00:36:28,310 kan gå tillbaka till studentrummet rum, sitta ner och börja 849 00:36:28,310 --> 00:36:29,710 fokus på PSET tänker, okej, 850 00:36:29,710 --> 00:36:31,340 Jag är ute kommer bang detta i kväll och sedan flytta 851 00:36:31,340 --> 00:36:33,000 på min nästa ämne nästa dag. 852 00:36:33,000 --> 00:36:34,450 Ibland kan du bara trycka en vägg. 853 00:36:34,450 --> 00:36:35,690 Du har fel i koden. 854 00:36:35,690 --> 00:36:37,900 Du behöver inte nödvändigtvis vet hur man kan lösa vissa problem. 855 00:36:37,900 --> 00:36:41,670 Och en av de viktigaste funktionerna i programmering för mig i dag 856 00:36:41,670 --> 00:36:44,480 är du bara typ av behöva ta ett steg tillbaka ibland, sova på det 857 00:36:44,480 --> 00:36:47,870 eller tänka på det under loppet av en joggingtur eller någon annan aktivitet, 858 00:36:47,870 --> 00:36:49,240 och sedan komma tillbaka till det färska. 859 00:36:49,240 --> 00:36:50,930 Och du behöver bara dessa fönster tid. 860 00:36:50,930 --> 00:36:52,910 >> Och faktiskt, det är därför vi har förlängt den tid 861 00:36:52,910 --> 00:36:55,710 tillgängliga för problemsamlingar i år och även, per den webbadressen 862 00:36:55,710 --> 00:36:57,950 Jag satte upp tidigare för att vad som är nytt denna termin, 863 00:36:57,950 --> 00:37:00,950 trimmas problemet sätter så att de är i grunden inte mindre rigorös, 864 00:37:00,950 --> 00:37:03,741 och takeaways är inte mindre, men Det finns en hel del mindre front materia, 865 00:37:03,741 --> 00:37:07,630 en mycket mindre uppdragen som du behöver göra på framsidan av varje problem set, 866 00:37:07,630 --> 00:37:10,680 som du ser, innan du kan faktiskt dyka in i köttet av det. 867 00:37:10,680 --> 00:37:13,500 Så inse att dessa och andra förändringar på horisonten 868 00:37:13,500 --> 00:37:16,490 att bättre tillgodose studenter, men i slutändan för att se 869 00:37:16,490 --> 00:37:18,860 att de takeaways är faktiskt så högt som möjligt. 870 00:37:18,860 --> 00:37:21,330 Så medan mer arbete än det kan vara i en typisk klass, 871 00:37:21,330 --> 00:37:25,120 Vi hoppas att avkastningen för du och hämtställen för dig 872 00:37:25,120 --> 00:37:27,490 och kunskaper och idéer som du avslutar 873 00:37:27,490 --> 00:37:29,921 är desto mer övertygande som följd. 874 00:37:29,921 --> 00:37:32,420 Och för att få dig there-- och detta är en av de viktigaste hämtställen, 875 00:37:32,420 --> 00:37:35,470 som Patrick alluded earlier-- är kursens stödstruktur. 876 00:37:35,470 --> 00:37:39,720 Så inte bara CS50 har en av de största kurs personal på campus. 877 00:37:39,720 --> 00:37:41,750 Den har också en av de mest grund. 878 00:37:41,750 --> 00:37:43,700 I själva verket, CS50 förra året var den första klassen 879 00:37:43,700 --> 00:37:45,366 att ha en grund lärare. 880 00:37:45,366 --> 00:37:48,570 Och ett bevis på att framgång göra nu många andra kurser inom Yale CS 881 00:37:48,570 --> 00:37:49,500 har det, liksom. 882 00:37:49,500 --> 00:37:52,906 Och för studenter, specifikt kommer dessa terapi och kursassistenter 883 00:37:52,906 --> 00:37:55,030 att stödja en hel nätverk av supportresurser, 884 00:37:55,030 --> 00:37:58,250 Bland dem sektioner eller uppläsning, veckovis möjligheter 885 00:37:58,250 --> 00:38:01,674 att ha mer intima diskussioner och recensioner av material riktat 886 00:38:01,674 --> 00:38:04,590 för olika spår, för studenter mindre bekväm, bekvämare, 887 00:38:04,590 --> 00:38:05,720 eller någonstans däremellan. 888 00:38:05,720 --> 00:38:08,886 Dessa kommer att följa tillgången på föreläsningarna efter flera dagar varje vecka 889 00:38:08,886 --> 00:38:09,970 på måndagar och tisdagar. 890 00:38:09,970 --> 00:38:11,970 Och sedan kontor hours-- en-mot-en möjligheter 891 00:38:11,970 --> 00:38:15,490 för att få hjälp från kurs certifikatutfärdare och Tas kommer att vara på onsdagar och torsdagar 892 00:38:15,490 --> 00:38:18,400 och söndagar på flera tider, vilka alla 893 00:38:18,400 --> 00:38:22,180 kommer att publiceras på kursens hemsida, ännu mer än förra året, liksom. 894 00:38:22,180 --> 00:38:25,501 >> Men vad är nyckeln till CS50, om inte visserligen lite ovanligt, 895 00:38:25,501 --> 00:38:27,750 är kursen kultur som Vi har försökt att odla, 896 00:38:27,750 --> 00:38:30,672 både i Cambridge under många år och nu senast i New Haven. 897 00:38:30,672 --> 00:38:33,130 Och i själva verket kommer upp här Lördag, om du inte har hört, 898 00:38:33,130 --> 00:38:36,410 är CS50 Puzzle Dag, som har ingenting att göra med datavetenskap 899 00:38:36,410 --> 00:38:39,430 men är i sin helhet utformad för att skicka ett meddelande som datavetenskap är 900 00:38:39,430 --> 00:38:40,665 om problemlösning. 901 00:38:40,665 --> 00:38:43,540 Och faktiskt, om du vill att samarbeta med en eller två eller tre vänner 902 00:38:43,540 --> 00:38:46,150 och bilda ett team för CS50 Pussel Dag, ta en titt 903 00:38:46,150 --> 00:38:48,010 på annonser som är på väg ut. 904 00:38:48,010 --> 00:38:51,582 Och tre timmar av pizza och pussel och priser väntar. 905 00:38:51,582 --> 00:38:53,290 Och faktiskt, för första gången i år, 906 00:38:53,290 --> 00:38:54,873 Det kommer inte att hållas tillsammans med Harvard. 907 00:38:54,873 --> 00:38:57,530 Det kommer att vara här oberoende vid Yale. 908 00:38:57,530 --> 00:38:59,815 Så håll utkik efter de om du inte. 909 00:38:59,815 --> 00:39:02,440 De flesta varje fredag ​​i terminen vi försöker göra en stor klass 910 00:39:02,440 --> 00:39:06,710 känna sig liten och ta några 50 elever till lunch med kursen personal, 911 00:39:06,710 --> 00:39:08,730 med alumner, vänner från industrin att prata 912 00:39:08,730 --> 00:39:12,630 om hur livet är efter en klass som CS50 och över somrarna 913 00:39:12,630 --> 00:39:14,250 och efter examen. 914 00:39:14,250 --> 00:39:16,280 Så håll utkik efter inbjudningar till det. 915 00:39:16,280 --> 00:39:17,988 För första gången någonsin detta år kommer vi 916 00:39:17,988 --> 00:39:21,420 hålla den allra första CS50 kodning tävling, en valfri opt-in tillfälle 917 00:39:21,420 --> 00:39:25,580 mid-termin, efter alla av oss har haft vissa sex eller sju veckor av programmering 918 00:39:25,580 --> 00:39:30,100 i C under svångremmen för att konkurrera, om du vill så choose-- igen 919 00:39:30,100 --> 00:39:32,460 på teams-- försöker lösa så många utmaningar 920 00:39:32,460 --> 00:39:36,160 som du kan i programmering med vänner av era mot andra. 921 00:39:36,160 --> 00:39:38,850 >> Och mot den bakre delen av terminen kommer vi charter några bussar, 922 00:39:38,850 --> 00:39:40,850 faktiskt tillbringa lite tid i Cambridge, om du skulle 923 00:39:40,850 --> 00:39:43,460 vilja ansluta sig till oss, för s.k. CS50 hackathon. 924 00:39:43,460 --> 00:39:44,600 Vid 07:00 vi ska börja. 925 00:39:44,600 --> 00:39:45,970 Omkring 09:00, kommer vi att ha pizza. 926 00:39:45,970 --> 00:39:47,650 Omkring 01:00, kommer vi att ha burritos. 927 00:39:47,650 --> 00:39:50,550 Och någon fortfarande vaken på bussresa hem runt 05:00, 928 00:39:50,550 --> 00:39:54,070 vi stanna för pannkakor vid IHOP på vägen home-- 929 00:39:54,070 --> 00:39:57,540 en 12-timmars möjlighet att fördjupa själv med klasskamrater och personal 930 00:39:57,540 --> 00:39:59,950 under sista projekt, vilket är en möjlighet 931 00:39:59,950 --> 00:40:01,870 att gå långt utöver den kursens problemsamlingar 932 00:40:01,870 --> 00:40:05,950 och utforma och genomföra de flesta något av intresse för dig, 933 00:40:05,950 --> 00:40:09,170 som i slutändan kommer att vara visas här i Commons. 934 00:40:09,170 --> 00:40:12,510 Den första någonsin CS50 rättvis senast år, en slut-på-termin utställning 935 00:40:12,510 --> 00:40:15,460 eller firandet av vad alla i klassen hade åstadkommit, 936 00:40:15,460 --> 00:40:19,810 särskilt de, återigen, som gick från inget att något, från noll till 60, 937 00:40:19,810 --> 00:40:22,450 har ingen tidigare bakgrund och som uppvisar, i slutändan, 938 00:40:22,450 --> 00:40:26,960 något för hela campus och, om nätet, till världen se, liksom. 939 00:40:26,960 --> 00:40:30,780 >> Nu, dessa här är bara några av Resebyråerna och CA som gör CS50 möjligt. 940 00:40:30,780 --> 00:40:33,034 Låt mig inbjuda av dessa anställda 941 00:40:33,034 --> 00:40:35,700 som är här för att komma upp på scenen, liksom kursens huvuden, 942 00:40:35,700 --> 00:40:38,785 att erbjuda några ord inspiration, liksom. 943 00:40:38,785 --> 00:41:03,138 944 00:41:03,138 --> 00:41:03,950 >> ANDI: Hej, killar. 945 00:41:03,950 --> 00:41:05,290 Kan ni höra mig? 946 00:41:05,290 --> 00:41:10,260 Tack för att förena oss på detta vacker, regnig torsdag eftermiddag. 947 00:41:10,260 --> 00:41:11,010 Mitt namn är Andi. 948 00:41:11,010 --> 00:41:12,070 Jag är en junior i Berkeley. 949 00:41:12,070 --> 00:41:17,250 Och tillsammans med Stelios och sommaren, vi kommer att vara din tre huvud undervisning 950 00:41:17,250 --> 00:41:19,277 assistenter för kommande år. 951 00:41:19,277 --> 00:41:21,110 Så jag antar att, show av hands-- hur många av er 952 00:41:21,110 --> 00:41:26,680 har inte för avsikt att vara en CS större heller verkligen dykning djupt 953 00:41:26,680 --> 00:41:29,930 i datavetenskap som en stor här? 954 00:41:29,930 --> 00:41:30,520 Grymt bra. 955 00:41:30,520 --> 00:41:32,730 Det är lysande. 956 00:41:32,730 --> 00:41:35,850 >> Så jag är faktiskt en global frågor och kognitionsvetenskap som huvudämne. 957 00:41:35,850 --> 00:41:37,780 Jag kom bokstavligen Yale med avsikt 958 00:41:37,780 --> 00:41:42,199 att aldrig behöva titta på en antalet någonsin igen i mitt liv. 959 00:41:42,199 --> 00:41:44,990 När jag kom till Yale, var detta något som var aldrig på min radar. 960 00:41:44,990 --> 00:41:46,460 Jag ville lära sig om poesi. 961 00:41:46,460 --> 00:41:48,500 Jag ville lära om internationella affärer. 962 00:41:48,500 --> 00:41:50,510 Jag ville lära om vattenfärg ritningar. 963 00:41:50,510 --> 00:41:53,360 Ja, erbjuder vi en klass på vattenfärg ritningar. 964 00:41:53,360 --> 00:41:57,340 >> Men jag har aldrig riktigt var intresserad i något STEM närstående. 965 00:41:57,340 --> 00:41:59,620 Men då ju äldre jag fick, desto mer insåg jag 966 00:41:59,620 --> 00:42:03,340 att varje fält verkligen på något mening sysselsätter datavetenskap, 967 00:42:03,340 --> 00:42:05,700 eller om inte datavetenskap, beräkning. 968 00:42:05,700 --> 00:42:08,300 Faktum är att för min globala angelägenheter Capstone projekt, 969 00:42:08,300 --> 00:42:12,020 vi använder uppgifter analytics att analysera terroristattacker 970 00:42:12,020 --> 00:42:13,680 för Boko Haram i Nigeria. 971 00:42:13,680 --> 00:42:17,510 Och så som ni kan se, oavsett vad stor du hamna bedriver 972 00:42:17,510 --> 00:42:21,640 eller vad dina intressen här på Yale är programmering och grunderna 973 00:42:21,640 --> 00:42:24,130 oavsett färdigheter är super bra. 974 00:42:24,130 --> 00:42:29,840 Och CS50 verkligen är väl rustat för att typ av låna en hel del av sina resurser 975 00:42:29,840 --> 00:42:32,060 till dig, oavsett hur bekväm du är 976 00:42:32,060 --> 00:42:34,590 eller hur intresserad du är att fullfölja klassen. 977 00:42:34,590 --> 00:42:37,290 >> Sommar kommer att prata lite lite om vad ni är 978 00:42:37,290 --> 00:42:39,635 kommer att lära sig om detta år. 979 00:42:39,635 --> 00:42:40,510 SOMMAR: Hej, alla. 980 00:42:40,510 --> 00:42:41,320 Jag är Summer Wu. 981 00:42:41,320 --> 00:42:43,090 Jag är en junior i Morse. 982 00:42:43,090 --> 00:42:48,100 Och jag faktiskt började som CS50 studerande själv. 983 00:42:48,100 --> 00:42:51,460 Så tre år sedan var jag på ett sabbatsår. 984 00:42:51,460 --> 00:42:53,940 Jag hade aldrig tagit en CS klass i high school, 985 00:42:53,940 --> 00:42:57,800 men jag trodde att min fritid, det skulle vara häftigt att lära sig att koda. 986 00:42:57,800 --> 00:43:02,610 Så jag gjorde en snabb Google-sökning, letade efter vad som fanns tillgängligt på nätet, 987 00:43:02,610 --> 00:43:06,990 och såg den här videon med muppets och DJs och cool webbplatser. 988 00:43:06,990 --> 00:43:09,450 Jag var som, vill jag lära sig att göra det. 989 00:43:09,450 --> 00:43:14,690 >> Så jag tog kursen, och jag bara blev kär i den. 990 00:43:14,690 --> 00:43:20,410 Men jag minns att så avundsjuk på barn som kunde närvara vid hackathon, 991 00:43:20,410 --> 00:43:24,610 närvara Puzzle Dag, delta i kontor timmar, få hjälp från resebyråerna personligen. 992 00:43:24,610 --> 00:43:27,410 Och så jag aldrig trott att jag skulle få chansen 993 00:43:27,410 --> 00:43:30,640 att här involverade i kursen som först fick 994 00:43:30,640 --> 00:43:33,630 mig intresserad av dator vetenskap och är anledningen till 995 00:43:33,630 --> 00:43:35,690 Jag är en datavetenskap stor idag. 996 00:43:35,690 --> 00:43:39,290 Så jag ska varna dig, denna klass kommer att sträcka dig. 997 00:43:39,290 --> 00:43:41,120 Det kommer att utmana dig. 998 00:43:41,120 --> 00:43:43,910 Men det kommer också att lära dig hur man gör saker 999 00:43:43,910 --> 00:43:45,506 att du aldrig trott du kunde. 1000 00:43:45,506 --> 00:43:49,330 1001 00:43:49,330 --> 00:43:52,160 >> Stelios: Hej, alla. 1002 00:43:52,160 --> 00:43:53,510 Mitt namn är Stelios. 1003 00:43:53,510 --> 00:43:58,240 Jag är en junior i Branford College och en CS-dur. 1004 00:43:58,240 --> 00:44:01,640 Jag är också från Aten, Grekland. 1005 00:44:01,640 --> 00:44:03,830 Jag ser verkligen fram emot att träffa er alla, 1006 00:44:03,830 --> 00:44:09,010 chatta med dig i avsnitt, på kontorstid, på fredag ​​lunch. 1007 00:44:09,010 --> 00:44:11,250 Jag är verkligen glada eftersom Vi har lagt ned så mycket ansträngning 1008 00:44:11,250 --> 00:44:14,650 att skapa ett unikt stöd struktur för er alla 1009 00:44:14,650 --> 00:44:19,170 att göra din upplevelse med kursen på bästa sätt. 1010 00:44:19,170 --> 00:44:22,640 Och jag hoppas att även om de flesta av du har antagligen inte tagit CS 1011 00:44:22,640 --> 00:44:27,310 kurs innan, jag hoppas att det är CS50 för dig är vad gnistor intresse 1012 00:44:27,310 --> 00:44:30,260 gå vidare med dator vetenskap i framtiden, 1013 00:44:30,260 --> 00:44:33,270 som den har gjort med så många människor i det förflutna. 1014 00:44:33,270 --> 00:44:36,740 Så tack för att vara Här glada att se dig. 1015 00:44:36,740 --> 00:44:38,487 Jason Hirschhorn. 1016 00:44:38,487 --> 00:44:39,820 JASON Hirschhorn: Hej, alla. 1017 00:44:39,820 --> 00:44:41,700 Mitt namn är Jason Hirschhorn. 1018 00:44:41,700 --> 00:44:43,050 Jag bor i Silliman. 1019 00:44:43,050 --> 00:44:46,910 Och jag gick till Harvard som en undergrad och huvudämne i samhällskunskap 1020 00:44:46,910 --> 00:44:48,870 och minored i datavetenskap. 1021 00:44:48,870 --> 00:44:53,100 Och en av mina viktigaste roller här är att stödja denna underbara personalen 1022 00:44:53,100 --> 00:44:54,630 som de stöder er alla. 1023 00:44:54,630 --> 00:44:56,410 I själva verket är detta inte alla av dem. 1024 00:44:56,410 --> 00:45:01,230 Det finns 55 studenter och utexaminerade här för att stödja er. 1025 00:45:01,230 --> 00:45:04,420 Och jag daresay en av de bästa delar av kursen för dig 1026 00:45:04,420 --> 00:45:08,080 allt är att få arbeta med dem, lära känna dem, 1027 00:45:08,080 --> 00:45:12,389 att få se dem, både i CS50 och utanför CS50 denna termin 1028 00:45:12,389 --> 00:45:13,680 och för många terminer framöver. 1029 00:45:13,680 --> 00:45:16,770 Så förhoppningsvis du tar den Naturligtvis eftersom förhoppningsvis du 1030 00:45:16,770 --> 00:45:21,060 komma att interagera med underbar personal vi har på scenen. 1031 00:45:21,060 --> 00:45:24,977 >> Speak: Tja, låt mig avsluta genom att säga att det kommer att bli kul. 1032 00:45:24,977 --> 00:45:26,810 DAVID MALAN: Tja, tack vare hela vårt team. 1033 00:45:26,810 --> 00:45:29,610 Låt mig dämpa belysningen och tillåta lite mer av vårt team, 1034 00:45:29,610 --> 00:45:32,890 både från Cambridge och New Haven, att säga hej som killarna fila bort. 1035 00:45:32,890 --> 00:45:36,130 Och efter det kommer vi att övergå till den första av våra programuppdrag 1036 00:45:36,130 --> 00:45:37,584 med detta språk som kallas Scratch. 1037 00:45:37,584 --> 00:45:38,500 Så tack till teamet. 1038 00:45:38,500 --> 00:45:40,770 Låt oss dämpa belysningen och höra från några andra. 1039 00:45:40,770 --> 00:45:44,207 >> [APPLÅDER] 1040 00:45:44,207 --> 00:45:45,680 1041 00:45:45,680 --> 00:45:48,140 >> [VIDEOUPPSPELNING] 1042 00:45:48,140 --> 00:45:53,210 >> -Den Uppdrag CS50 är att göra dig mer bekväm med ett helt nytt sätt 1043 00:45:53,210 --> 00:45:54,947 att tänka, detta beräkningstänkesätt. 1044 00:45:54,947 --> 00:45:56,780 -Det Gjorde datavetenskap intressant, vilket 1045 00:45:56,780 --> 00:46:00,241 är något jag inte riktigt inse var möjligt förrän jag tog klassen. 1046 00:46:00,241 --> 00:46:00,990 -Jag Var som, whoa. 1047 00:46:00,990 --> 00:46:04,120 Jag är verkligen översätta mina tankar i en dator just nu. 1048 00:46:04,120 --> 00:46:07,970 >> -Även Om du inte har någon bakgrund i datavetenskap eller någon erfarenhet, 1049 00:46:07,970 --> 00:46:10,140 detta är faktiskt klassen för dig. 1050 00:46:10,140 --> 00:46:12,250 >> -Så Jag definitivt vill mina studenter att bara 1051 00:46:12,250 --> 00:46:14,350 bli upphetsad över datavetenskap. 1052 00:46:14,350 --> 00:46:17,187 Inte bara programmering, men tänka som en datavetare 1053 00:46:17,187 --> 00:46:19,270 är verkligen vad jag vill försöka lära mitt första. 1054 00:46:19,270 --> 00:46:21,560 >> -CS50 Är hård och givande. 1055 00:46:21,560 --> 00:46:22,592 >> -En upplevelse. 1056 00:46:22,592 --> 00:46:23,456 >> -Extravaganza. 1057 00:46:23,456 --> 00:46:26,350 >> -Det Föra oss till nästa nivå. 1058 00:46:26,350 --> 00:46:28,850 >> [Musik spelar] 1059 00:46:28,850 --> 00:46:32,167 >> -The TF är, tror jag, den livsnerven i kursen. 1060 00:46:32,167 --> 00:46:34,560 >> -Jag Glada över att ha mina elever Jag hjälper 1061 00:46:34,560 --> 00:46:38,027 har att aha ögonblick att inse vad de faktiskt försöker 1062 00:46:38,027 --> 00:46:39,610 att göra, för att räkna ut hur man gör en PSET. 1063 00:46:39,610 --> 00:46:41,438 >> -CS50 Är definitivt en hård kurs. 1064 00:46:41,438 --> 00:46:43,960 Men till skillnad från alla andra Naturligtvis verkligen vid Yale, 1065 00:46:43,960 --> 00:46:45,759 det har en sådan stor, stödjande gemenskap. 1066 00:46:45,759 --> 00:46:47,550 -Du Gör absolut inte behöver veta något 1067 00:46:47,550 --> 00:46:49,341 om kodning för att kunna att ta kursen. 1068 00:46:49,341 --> 00:46:52,270 -Det Är fantastiskt att se hur långt människor kommer i en termin. 1069 00:46:52,270 --> 00:46:55,610 >> -Du Var inte ensam sitter i rummet lära sig koden, 1070 00:46:55,610 --> 00:46:57,170 men det var mer än bara en klass. 1071 00:46:57,170 --> 00:46:58,044 Det var en upplevelse. 1072 00:46:58,044 --> 00:47:02,500 -Det Bästa sättet att lära sig begrepp och att behandla dem är genom att lära andra. 1073 00:47:02,500 --> 00:47:04,033 >> -Vad Är split telefon? 1074 00:47:04,033 --> 00:47:06,934 >> [Musik spelar] 1075 00:47:06,934 --> 00:47:08,080 >> -och Detta är CS50. 1076 00:47:08,080 --> 00:47:10,810 >> [Musik spelar] 1077 00:47:10,810 --> 00:47:11,720 1078 00:47:11,720 --> 00:47:12,380 >> -Detta Är CS50. 1079 00:47:12,380 --> 00:47:13,446 >> -Har ett problem? 1080 00:47:13,446 --> 00:47:14,852 Riv den i två halvor. 1081 00:47:14,852 --> 00:47:15,804 >> [Musik spelar] 1082 00:47:15,804 --> 00:47:18,184 >> Kasta iväg det. 1083 00:47:18,184 --> 00:47:19,520 >> DAVID MALAN: Okej. 1084 00:47:19,520 --> 00:47:23,190 Så låt oss tackle-- i en liten bit, för övrigt, är det 1085 00:47:23,190 --> 00:47:25,270 varit denna tradition för någon anledning i 10 år 1086 00:47:25,270 --> 00:47:27,260 att tjäna kakan vid början och slutet av CS50. 1087 00:47:27,260 --> 00:47:30,800 Så väntar dig i slutet av idag, förutom kursplaner, 1088 00:47:30,800 --> 00:47:34,270 kommer att vara lite tårta också, och kursens personal att säga hej. 1089 00:47:34,270 --> 00:47:37,110 Men nu, låt oss övergång till första av våra språk, där 1090 00:47:37,110 --> 00:47:40,970 Vi kommer att tillbringa egentligen bara en vecka och en Problemet ligger på detta område, Scratch. 1091 00:47:40,970 --> 00:47:43,160 Och du hittar om du har programmeras före, många 1092 00:47:43,160 --> 00:47:46,280 av idéer och Möjligheterna är bekant för dig. 1093 00:47:46,280 --> 00:47:48,160 Men du kommer att upptäcka att det är kul längs vägen 1094 00:47:48,160 --> 00:47:51,201 att räkna ut exakt hur man översätter några av de idéer som du redan känner till 1095 00:47:51,201 --> 00:47:53,852 till denna speciella miljö att verkligen imponera din familj 1096 00:47:53,852 --> 00:47:57,060 och vänner med ditt arbete, vilket kan gå online, om du så önskar, efteråt. 1097 00:47:57,060 --> 00:47:58,851 >> Och om du inte har någon tidigare erfarenhet och är 1098 00:47:58,851 --> 00:48:01,540 bland majoriteten av studenter mindre bekväma, 1099 00:48:01,540 --> 00:48:05,320 inse att många av de idéer som vi bara utforskas med reality-- saker 1100 00:48:05,320 --> 00:48:07,970 som telefonböcker och närvaro och så forth-- late 1101 00:48:07,970 --> 00:48:12,280 ganska fint till en dator, men inte om du använder, 1102 00:48:12,280 --> 00:48:13,710 initialt, ett språk som denna. 1103 00:48:13,710 --> 00:48:16,290 Så det här är ett program skrivet på ett språk som kallas C. 1104 00:48:16,290 --> 00:48:18,590 Och vi kommer att tillbringa en hel del tid i C, i slutändan. 1105 00:48:18,590 --> 00:48:22,560 Men oddsen är, kommer detta ser lite kryptiskt till dig vid första anblicken. 1106 00:48:22,560 --> 00:48:25,760 I själva verket finns det en hel del konstig syntax, parenteser, vinkelfästen, 1107 00:48:25,760 --> 00:48:27,422 klamrar, citat och semikolon. 1108 00:48:27,422 --> 00:48:29,880 Och faktiskt, om du dyka in programmering för första gången 1109 00:48:29,880 --> 00:48:33,420 titta på och försöka skapa saker så här, ärligt, du får så fastna 1110 00:48:33,420 --> 00:48:36,500 så ofta i bara dum minutiae som inte har något 1111 00:48:36,500 --> 00:48:38,240 intellektuellt intressant om det. 1112 00:48:38,240 --> 00:48:40,980 >> Men tänk om du kunde skapa denna samma program-- vilket, 1113 00:48:40,980 --> 00:48:46,200 som ni kanske slags sluta, troligen skriver "Hej världen" på ett eller annat. 1114 00:48:46,200 --> 00:48:49,850 Vi kan destillera samma idé i bara två pusselbitar, om du vill. 1115 00:48:49,850 --> 00:48:52,850 I själva verket är intressant Scratch eftersom det är det grafiska språket. 1116 00:48:52,850 --> 00:48:56,110 Du kan dra och släppa dessa pusselbitar som endast förregling 1117 00:48:56,110 --> 00:48:57,940 om det gör logisk mening att göra det. 1118 00:48:57,940 --> 00:48:59,830 Och så i Scratch, Vi kommer snart att se, detta är 1119 00:48:59,830 --> 00:49:03,460 hur du skulle genomföra samma program, med bara två pusselbitar 1120 00:49:03,460 --> 00:49:05,420 som ganska mycket gör vad de säger. 1121 00:49:05,420 --> 00:49:08,870 >> Men vi får se i bara ett ögonblick att vissa av de byggstenar som vi alluded 1122 00:49:08,870 --> 00:49:12,140 till tidigare och några fler är allt som i slutändan kommer att utgöra 1123 00:49:12,140 --> 00:49:13,460 några av våra tidigaste program. 1124 00:49:13,460 --> 00:49:15,460 Vi kommer att ha saker liknande functions-- bara 1125 00:49:15,460 --> 00:49:18,034 åtgärder som gör något, som säger hej, värld. 1126 00:49:18,034 --> 00:49:20,200 Vi kommer att ha slingor, saker som inducerar cykler 1127 00:49:20,200 --> 00:49:23,210 om och om igen, precis som vi gjorde en stund sedan med sökning 1128 00:49:23,210 --> 00:49:24,110 för Mike Smith. 1129 00:49:24,110 --> 00:49:27,190 Variabler, som i algebra, om du har x eller y, som kan lagra ett nummer. 1130 00:49:27,190 --> 00:49:29,940 Tja, i ett program, kan du faktiskt lagra mer än bara siffror. 1131 00:49:29,940 --> 00:49:34,290 Du kan lagra ord och meningar och grafik och andra saker fortfarande. 1132 00:49:34,290 --> 00:49:37,530 Booleska uttryck, precis questions-- ja eller nej, sant eller falskt. 1133 00:49:37,530 --> 00:49:40,680 Villkor, beslut making baserat på dessa ja / nej svar. 1134 00:49:40,680 --> 00:49:43,890 >> Och sedan snyggare saker som matris och trådar och evenemang 1135 00:49:43,890 --> 00:49:46,100 och vilket som helst antal andra funktioner, men som alla 1136 00:49:46,100 --> 00:49:48,670 karta mycket fint till mycket vänliga block som denna. 1137 00:49:48,670 --> 00:49:52,736 Detta kommer att vara en funktion, en lila pusselbit som bara säger 1138 00:49:52,736 --> 00:49:54,717 vad namnet är-- i det här fallet, säger. 1139 00:49:54,717 --> 00:49:56,550 Och då ofta finns det en vit ruta som du 1140 00:49:56,550 --> 00:49:58,550 kan skriva in eller dra något värde i. 1141 00:49:58,550 --> 00:50:01,370 Och det är vad som är allmänt kallas ett argument eller en parameter. 1142 00:50:01,370 --> 00:50:04,110 Det är ett sätt att förändra standardbeteende ett pussel 1143 00:50:04,110 --> 00:50:07,530 bit eller en funktion så att den gör något anpassad för dig som att säga, 1144 00:50:07,530 --> 00:50:12,570 Hej, världen eller hej, Andy eller hej, Jason eller någon annan mening i stället. 1145 00:50:12,570 --> 00:50:15,830 >> Om du vill säga att en lot-- rally forever-- 1146 00:50:15,830 --> 00:50:18,142 du kan ta en annan pusselbit kallas för evigt 1147 00:50:18,142 --> 00:50:20,100 och bara inklämt den två tillsammans så här. 1148 00:50:20,100 --> 00:50:24,090 Och att slingan, som bilden visar, betyder bara säga hej, världen för alltid, 1149 00:50:24,090 --> 00:50:25,810 igen och igen och igen. 1150 00:50:25,810 --> 00:50:28,840 Eller, om du bara vill göra det en ändligt antal gånger, som 50 gånger, 1151 00:50:28,840 --> 00:50:32,050 det kommer att vara en annan pussel bit för that-- upprepa 50 gånger. 1152 00:50:32,050 --> 00:50:34,190 >> Under tiden, om du vill att ha en variabel 1153 00:50:34,190 --> 00:50:36,090 på detta språk vi om att leka med, 1154 00:50:36,090 --> 00:50:37,880 du kan använda en apelsin-block som denna. 1155 00:50:37,880 --> 00:50:40,750 Och denna variabel jag godtyckligt kallas i för heltal. 1156 00:50:40,750 --> 00:50:42,290 Och jag bara ställa det lika med 0. 1157 00:50:42,290 --> 00:50:44,780 Och så kanske jag, i detta case-- detta variable-- 1158 00:50:44,780 --> 00:50:46,630 representerar någon poäng i ett spel. 1159 00:50:46,630 --> 00:50:49,680 Du börjar på noll, och varje gång du göra ett mål eller något liknande, 1160 00:50:49,680 --> 00:50:51,270 du får en extra poäng. 1161 00:50:51,270 --> 00:50:52,830 >> Du kan ställa frågor i Scratch. 1162 00:50:52,830 --> 00:50:55,390 Om vi ​​drar och släpper pussel bitar i en stund som denna, 1163 00:50:55,390 --> 00:50:58,470 Du kan ställa frågor som, väl, är jag mindre än 50? 1164 00:50:58,470 --> 00:51:00,060 Kanske behöver du 50 poäng för att vinna. 1165 00:51:00,060 --> 00:51:01,893 Och så detta skulle vara Frågan du skulle fråga. 1166 00:51:01,893 --> 00:51:04,030 Eller, mer allmänt, du kan säga är x mindre än y, 1167 00:51:04,030 --> 00:51:05,780 där det finns två variabler inblandade? 1168 00:51:05,780 --> 00:51:08,320 Nu är detta en mycket större vid första anblicken, 1169 00:51:08,320 --> 00:51:11,470 men verkligen inte allt som mer komplex. 1170 00:51:11,470 --> 00:51:15,390 >> Detta är bara en kombination villkor och variabler 1171 00:51:15,390 --> 00:51:19,370 och booleska uttryck för att fråga tre questions-- är x mindre än y? 1172 00:51:19,370 --> 00:51:20,660 Om så är fallet, säger så. 1173 00:51:20,660 --> 00:51:22,170 Säg, är x mindre än y. 1174 00:51:22,170 --> 00:51:26,571 Annat, om x är större än y, måste annars x vara lika med y. 1175 00:51:26,571 --> 00:51:29,070 Och medan med Mike Smith, fanns det fyra scenarier, här 1176 00:51:29,070 --> 00:51:32,270 i en värld av siffror, är x antingen mindre än, större än, eller lika med. 1177 00:51:32,270 --> 00:51:34,531 Allt vi har är tre gafflar i vägen. 1178 00:51:34,531 --> 00:51:36,530 Och så finns det snyggare pusselbitar som denna 1179 00:51:36,530 --> 00:51:39,613 för saker som matriser, där vi är kommer att kunna lagra information. 1180 00:51:39,613 --> 00:51:43,590 Vi kommer att se block som tillåter oss att genomföra flera trådar, 1181 00:51:43,590 --> 00:51:46,620 en annan funktion som vi kommer att använda, och då också något som kallas händelser. 1182 00:51:46,620 --> 00:51:49,390 Men innan vi kommer till det punkt och skapa ännu, 1183 00:51:49,390 --> 00:51:52,000 i slutändan, vår egna pusselbitar låt oss 1184 00:51:52,000 --> 00:51:53,950 faktiskt öppna själva programmet. 1185 00:51:53,950 --> 00:51:54,860 >> Så det här är Scratch. 1186 00:51:54,860 --> 00:51:57,490 Den finns på scratch.mit.edu. 1187 00:51:57,490 --> 00:51:59,650 Och du är välkommen att spela nu eller senare, liksom. 1188 00:51:59,650 --> 00:52:01,330 Detta råkar vara offline versionen. 1189 00:52:01,330 --> 00:52:03,129 För personer som inte nödvändigtvis stor internet, 1190 00:52:03,129 --> 00:52:04,962 du kan ladda ner samma programvara, liksom. 1191 00:52:04,962 --> 00:52:07,460 Och det finns egentligen bara tre komponenter till detta program. 1192 00:52:07,460 --> 00:52:10,860 På den översta vänstra hörnet av skärmen är den typ av scenen 1193 00:52:10,860 --> 00:52:13,800 att Scratch som standard ser ut som en katt, lever inuti. 1194 00:52:13,800 --> 00:52:16,799 Han kan flytta upp, ner, vänster och höger och gör något antal andra saker, 1195 00:52:16,799 --> 00:52:20,520 och kan se ett antal sätt baserade på kläderna som du tilldelar honom. 1196 00:52:20,520 --> 00:52:22,980 Men detta är vad vi kallar en sprite, ett slags tecken. 1197 00:52:22,980 --> 00:52:25,429 Och du kan ha flera tecken, som vi snart se. 1198 00:52:25,429 --> 00:52:30,060 >> I mitten nu är alla dessa pussel bitar och dessa kategorier eller pallar 1199 00:52:30,060 --> 00:52:30,900 därav. 1200 00:52:30,900 --> 00:52:32,429 Så just nu, jag klickade på Motion. 1201 00:52:32,429 --> 00:52:35,900 Och så jag ser alla rörelserelaterade pusselbitar eller block, 1202 00:52:35,900 --> 00:52:37,950 så funktioner som har att göra med att gå upp, 1203 00:52:37,950 --> 00:52:39,950 nedåt, åt vänster eller höger eller någon annan operation. 1204 00:52:39,950 --> 00:52:43,790 Men om jag klickade på utseende, du kunde se saker som att säga blocket 1205 00:52:43,790 --> 00:52:45,084 som vi såg bara en stund sedan. 1206 00:52:45,084 --> 00:52:48,250 Och om jag klickar på kontroll, kan du se saker som repete och evigt 1207 00:52:48,250 --> 00:52:50,410 och om block som vi såg för en stund sedan. 1208 00:52:50,410 --> 00:52:51,670 >> Och så du hittar att vi ska bara skrapa 1209 00:52:51,670 --> 00:52:53,750 ytan av en del av pusselbitar, 1210 00:52:53,750 --> 00:52:55,833 men det är allt ganska intuitivt och peka och klicka. 1211 00:52:55,833 --> 00:52:58,219 I själva verket var Scratch utformad för yngre elever 1212 00:52:58,219 --> 00:53:00,730 att bidra till att ge dem ett utlopp för kreativt tänkande. 1213 00:53:00,730 --> 00:53:03,040 Och ändå underbart, det är en underbar språngbräda 1214 00:53:03,040 --> 00:53:07,020 till exakt de idéer vi kommer att utforska i C och Python och JavaScript 1215 00:53:07,020 --> 00:53:07,719 också. 1216 00:53:07,719 --> 00:53:11,960 >> På den högra sidan, slutligen, här är detta, det så kallade skript område. 1217 00:53:11,960 --> 00:53:15,750 Och detta är bara oskrivet blad med som du börjar skriva ett program. 1218 00:53:15,750 --> 00:53:16,897 Och jag ska just detta. 1219 00:53:16,897 --> 00:53:19,980 Nu, jag råkar veta var saker är eftersom jag har gjort det här några gånger. 1220 00:53:19,980 --> 00:53:22,710 Men jag vet att det under Händelser kategori 1221 00:53:22,710 --> 00:53:25,520 Det är det här blocket här-- när grön flagg klickade. 1222 00:53:25,520 --> 00:53:28,790 Och märker om jag zoomar ut och tillbaka i hit på scenen, 1223 00:53:28,790 --> 00:53:31,190 Scratch liv inom denna liten rektangulär världen, 1224 00:53:31,190 --> 00:53:33,920 ovanpå vilket är en grön flagga och en röd stoppskylt. 1225 00:53:33,920 --> 00:53:36,180 Så gå och stoppa respektive. 1226 00:53:36,180 --> 00:53:38,710 >> Och så vad gör jag vill göra när den gröna flaggan klickas? 1227 00:53:38,710 --> 00:53:40,900 Nåväl, låt mig gå till den ser kategori. 1228 00:53:40,900 --> 00:53:43,357 Och låt mig gå vidare och dra och släppa det här. 1229 00:53:43,357 --> 00:53:45,940 Och lägg märke till så fort det blir nära, de är typ av magnetisk. 1230 00:53:45,940 --> 00:53:48,489 Så om jag låter nu gå, knäpper det tillsammans trevlig och rent. 1231 00:53:48,489 --> 00:53:51,030 Och jag kommer att gå vidare och säga något i stil hej, värld 1232 00:53:51,030 --> 00:53:52,190 i två sekunder. 1233 00:53:52,190 --> 00:53:56,730 Låt mig zooma ut och klicka nu grön flagg, och säga, hej, värld. 1234 00:53:56,730 --> 00:53:57,230 Okej. 1235 00:53:57,230 --> 00:53:58,460 Så det är alla fina och bra. 1236 00:53:58,460 --> 00:53:59,900 Inte så spännande. 1237 00:53:59,900 --> 00:54:01,340 Låt oss göra det lite sötare. 1238 00:54:01,340 --> 00:54:03,494 Och jag vet att i förväg, händer Scratch 1239 00:54:03,494 --> 00:54:05,160 att komma med några söta saker som detta. 1240 00:54:05,160 --> 00:54:07,720 Så spela upp ljud jamar tills gjort. 1241 00:54:07,720 --> 00:54:09,531 Så låt oss göra detta. 1242 00:54:09,531 --> 00:54:10,380 >> [MJAU] 1243 00:54:10,380 --> 00:54:11,819 >> Aw, det är bedårande. 1244 00:54:11,819 --> 00:54:12,860 Och om jag klickar det igen-- 1245 00:54:12,860 --> 00:54:14,920 >> [MJAU] 1246 00:54:14,920 --> 00:54:15,460 >> Och igen. 1247 00:54:15,460 --> 00:54:16,740 >> [MJAU] 1248 00:54:16,740 --> 00:54:18,760 >> Men jag fortsätter att behöva väcka till liv Scratch. 1249 00:54:18,760 --> 00:54:20,010 Men jag kan göra bättre än så här. 1250 00:54:20,010 --> 00:54:23,060 Varför inte jag bara dra tre av dessa. 1251 00:54:23,060 --> 00:54:24,821 Och nu är det tre gånger så bedårande. 1252 00:54:24,821 --> 00:54:26,264 >> [Meowing] 1253 00:54:26,264 --> 00:54:28,190 >> OK, faktiskt, det är lite obehagligt. 1254 00:54:28,190 --> 00:54:31,020 Så vi behöver något i mellan det. 1255 00:54:31,020 --> 00:54:33,870 Om jag går till kontroll, det ser ut som det finns faktiskt en vänta-block. 1256 00:54:33,870 --> 00:54:36,994 Och så märker om jag svävar över there-- och låt mig göra det lite större. 1257 00:54:36,994 --> 00:54:38,780 Om jag sväva, det kommer att snäppa på plats. 1258 00:54:38,780 --> 00:54:41,660 Så vänta en sekund, vänta en sekund. 1259 00:54:41,660 --> 00:54:43,170 Låt oss slå grön flagg igen. 1260 00:54:43,170 --> 00:54:46,330 >> [Meowing] 1261 00:54:46,330 --> 00:54:47,695 1262 00:54:47,695 --> 00:54:50,660 >> OK, lite mer naturlig, men inte mycket effektiv. 1263 00:54:50,660 --> 00:54:54,300 Så det här är rätt om min programmets Målet var jama tre gånger. 1264 00:54:54,300 --> 00:54:56,410 Men det är inte mycket väl utformad. 1265 00:54:56,410 --> 00:54:57,740 Jag typ av klippa vissa hörn. 1266 00:54:57,740 --> 00:54:58,730 Jag fick lite lat. 1267 00:54:58,730 --> 00:55:05,620 Vad känns like-- vad jag verkar ha gjort dåligt, skulle du säga? 1268 00:55:05,620 --> 00:55:07,197 Ja? 1269 00:55:07,197 --> 00:55:08,030 Ja, i mitten. 1270 00:55:08,030 --> 00:55:11,208 1271 00:55:11,208 --> 00:55:13,083 PUBLIK: Används mer minne än du behövde 1272 00:55:13,083 --> 00:55:15,005 eftersom du använder så många annan linje. 1273 00:55:15,005 --> 00:55:16,380 DAVID MALAN: Ja, så fler linjer. 1274 00:55:16,380 --> 00:55:19,190 Och det skulle inte nödvändigtvis vara minne, även om det kan ses som det sättet. 1275 00:55:19,190 --> 00:55:20,898 Men det är definitely-- det finns redundans. 1276 00:55:20,898 --> 00:55:23,440 Och jag bokstavligen typ av drog och släppte samma saker. 1277 00:55:23,440 --> 00:55:26,564 Och om du typ av extrapolate-- om Det är inte självklart här-- väl, hur skulle 1278 00:55:26,564 --> 00:55:27,910 Jag jamar 30 gånger? 1279 00:55:27,910 --> 00:55:31,450 Jag skulle dra och släppa, liksom, 30 flera par pusselbitar. 1280 00:55:31,450 --> 00:55:32,890 Och säkert finns det ett bättre sätt. 1281 00:55:32,890 --> 00:55:34,056 Och vi har sett ett bättre sätt. 1282 00:55:34,056 --> 00:55:36,870 Vad intuitivt skulle vara bättre sätt? 1283 00:55:36,870 --> 00:55:37,890 Ja, bara använda en slinga. 1284 00:55:37,890 --> 00:55:38,810 Ingen kopiera och klistra in. 1285 00:55:38,810 --> 00:55:40,790 Och faktiskt, när detta termin om du börjar 1286 00:55:40,790 --> 00:55:43,890 hitta dig själv att dra och släppa, eller verkligen kopiera och klistra in, 1287 00:55:43,890 --> 00:55:47,050 farlig vana att komma in eftersom Detta är bara inte mycket utrymme för detta. 1288 00:55:47,050 --> 00:55:49,740 Till exempel, om jag vill ändra ljudet till något annat, 1289 00:55:49,740 --> 00:55:52,826 Jag måste ändra det nu i tre platser i stället för bara en. 1290 00:55:52,826 --> 00:55:54,575 Eftersom faktiskt, om jag bryta denna away-- jag 1291 00:55:54,575 --> 00:55:56,170 bara kommer att frikoppla det så. 1292 00:55:56,170 --> 00:56:01,900 Låt mig ta en upprepning blocket, och klicka tre, skriver tre, 1293 00:56:01,900 --> 00:56:04,015 kasta några av dessa bort genom att bara släppa taget. 1294 00:56:04,015 --> 00:56:05,890 Och sedan märker det ser inte ut som det passar, 1295 00:56:05,890 --> 00:56:08,139 men magnetiskt, det kommer att inte bara knäppa på plats 1296 00:56:08,139 --> 00:56:09,510 men växer för att passa formen. 1297 00:56:09,510 --> 00:56:10,310 Så det är bra. 1298 00:56:10,310 --> 00:56:11,530 Och nu om jag klickar på play. 1299 00:56:11,530 --> 00:56:13,870 >> [Meowing] 1300 00:56:13,870 --> 00:56:14,370 1301 00:56:14,370 --> 00:56:15,620 Mycket trevlig. 1302 00:56:15,620 --> 00:56:16,126 Okej. 1303 00:56:16,126 --> 00:56:18,500 Och nu är det väldigt lätt att förändras också, eftersom jag kan bara 1304 00:56:18,500 --> 00:56:20,670 ändra ett nummer på ett ställe. 1305 00:56:20,670 --> 00:56:22,500 Men även detta är inte så intressant. 1306 00:56:22,500 --> 00:56:25,350 Låt oss faktiskt har Scratch inte jama, men flytta. 1307 00:56:25,350 --> 00:56:32,680 Låt mig gå till Motion och flytta 10 steg inuti of-- hoppsan, låt mig fixa detta. 1308 00:56:32,680 --> 00:56:37,460 Låt mig få den att flytta 10 steps-- faktiskt, låt oss inte upprepa. 1309 00:56:37,460 --> 00:56:40,670 Låt mig ta ett styrblock, och gör följande för evigt. 1310 00:56:40,670 --> 00:56:42,720 Evigt, flytta 10 steg. 1311 00:56:42,720 --> 00:56:45,070 Och klicka på Spela. 1312 00:56:45,070 --> 00:56:45,600 >> OK. 1313 00:56:45,600 --> 00:56:46,740 Så tack och lov, stannar han. 1314 00:56:46,740 --> 00:56:49,710 I annat fall skulle barnen få mycket upprörd när de slags förlorar sin katt. 1315 00:56:49,710 --> 00:56:52,720 Men åtminstone jag kan dra honom tillbaka in i skärmen. 1316 00:56:52,720 --> 00:56:56,177 Men detta är inte allt som stor i ett spel eller animation. 1317 00:56:56,177 --> 00:56:58,260 Det skulle vara trevligt om kanske Han studsade mot kanten. 1318 00:56:58,260 --> 00:57:00,020 Så vad gör vi? 1319 00:57:00,020 --> 00:57:04,302 Vad konstruktion behöver vi ha Scratch besluta att studsa, tror du, 1320 00:57:04,302 --> 00:57:06,010 även om du har aldrig sett Scratch förut? 1321 00:57:06,010 --> 00:57:06,593 Ja, på baksidan. 1322 00:57:06,593 --> 00:57:08,359 PUBLIK: Du behöver en Om blocket eller om-då. 1323 00:57:08,359 --> 00:57:10,650 DAVID MALAN: Ja, så vissa typ av om blocket eller om-då. 1324 00:57:10,650 --> 00:57:12,275 Så egentligen har vi en av dessa här. 1325 00:57:12,275 --> 00:57:14,500 Så if-- så låt mig få rid av rörelsen. 1326 00:57:14,500 --> 00:57:16,070 Låt mig zooma in så det är större. 1327 00:57:16,070 --> 00:57:16,890 Så vad sägs om detta. 1328 00:57:16,890 --> 00:57:21,920 Evigt, om Sensing-- vi har inte sett det här förut. 1329 00:57:21,920 --> 00:57:23,160 Jag behöver ett booleskt uttryck. 1330 00:57:23,160 --> 00:57:25,970 Och det visar sig om att röra vad? 1331 00:57:25,970 --> 00:57:29,030 Om att röra kanten, Vad vill jag göra? 1332 00:57:29,030 --> 00:57:32,030 Tja, om jag går tillbaka till Motion, visar sig, oh, kan jag vända. 1333 00:57:32,030 --> 00:57:33,350 Låt mig dra detta här. 1334 00:57:33,350 --> 00:57:36,430 Varför jag inte gå vidare och vända 180 grader? 1335 00:57:36,430 --> 00:57:38,190 >> Och nu, låt mig bara flytta i slutet. 1336 00:57:38,190 --> 00:57:40,500 Jag skulle kunna sätta rörelsen på början eller slutet. 1337 00:57:40,500 --> 00:57:44,452 Men logiskt, varje gång jag flyttar, jag vill kontrollera, jag röra vid kanten? 1338 00:57:44,452 --> 00:57:45,410 Jag röra vid kanten? 1339 00:57:45,410 --> 00:57:46,490 Jag röra vid kanten? 1340 00:57:46,490 --> 00:57:49,200 Så det logiskt jag vända om så. 1341 00:57:49,200 --> 00:57:51,190 Så låt oss slå play. 1342 00:57:51,190 --> 00:57:52,030 >> OK. 1343 00:57:52,030 --> 00:57:53,910 Så det är lite buggig, så att säga. 1344 00:57:53,910 --> 00:57:56,560 Och en bugg är bara ett misstag i ett datorprogram. 1345 00:57:56,560 --> 00:57:57,800 Men åtminstone det fungerar. 1346 00:57:57,800 --> 00:57:59,420 Och i själva verket kan jag gå in här. 1347 00:57:59,420 --> 00:58:03,130 Och låt mig göra det inte 10 steg på en tid, men detta är animation är. 1348 00:58:03,130 --> 00:58:05,310 Detta är allt en tecknad eller ens en film är. 1349 00:58:05,310 --> 00:58:07,110 Låt mig gå 20 steg i taget. 1350 00:58:07,110 --> 00:58:11,200 Så 20 gånger så många saker händer en gång, eller två gånger så många, i detta fall. 1351 00:58:11,200 --> 00:58:12,600 Och han går snabbare. 1352 00:58:12,600 --> 00:58:15,150 Låt mig ändra till 30. 1353 00:58:15,150 --> 00:58:17,450 100. 1354 00:58:17,450 --> 00:58:19,406 1000. 1355 00:58:19,406 --> 00:58:20,530 Och det går riktigt snabbt. 1356 00:58:20,530 --> 00:58:22,190 Och detta är-- ja, OK. 1357 00:58:22,190 --> 00:58:24,130 >> Så nu är vi bara jävlas med det. 1358 00:58:24,130 --> 00:58:24,954 OK, så buggy. 1359 00:58:24,954 --> 00:58:26,620 Men vi kan dra honom ur vägen här. 1360 00:58:26,620 --> 00:58:28,286 Men vi kan göra mer kul med denna också. 1361 00:58:28,286 --> 00:58:30,710 Vad sägs om this-- han är upp och ned. 1362 00:58:30,710 --> 00:58:32,800 Men det visar sig Scratch-- och det finns i själva verket, 1363 00:58:32,800 --> 00:58:35,510 Jag måste frånsäger sig, ingen akademisk värde vad jag ska göra. 1364 00:58:35,510 --> 00:58:40,200 Men om jag öppnar upp mikrofonen, låt oss stoppa honom och göra något liknande. 1365 00:58:40,200 --> 00:58:41,960 aj! 1366 00:58:41,960 --> 00:58:42,884 >> [SKRATT] 1367 00:58:42,884 --> 00:58:45,200 1368 00:58:45,200 --> 00:58:45,990 >> Det var bedårande. 1369 00:58:45,990 --> 00:58:46,740 Tack. 1370 00:58:46,740 --> 00:58:50,850 Nu är detta vad min röst ser ut när jag skrika AJ. 1371 00:58:50,850 --> 00:58:52,630 Jag tror inte att vi fångade ditt skratt. 1372 00:58:52,630 --> 00:58:53,280 Det är ok. 1373 00:58:53,280 --> 00:58:56,550 Låt mig spara som "aj". 1374 00:58:56,550 --> 00:58:57,915 Låt oss spara som "aj". 1375 00:58:57,915 --> 00:58:59,410 Och nu ska vi gå tillbaka till skript. 1376 00:58:59,410 --> 00:59:01,660 Och nu har jag need-- låt oss se, Sound. 1377 00:59:01,660 --> 00:59:03,160 Åh, spela upp ljud aj. 1378 00:59:03,160 --> 00:59:08,180 Så om jag vidrör kanten, låt mig första play ouch, och sedan vända. 1379 00:59:08,180 --> 00:59:10,191 Och nu ska vi sätta honom i mitten. 1380 00:59:10,191 --> 00:59:14,754 >> [Sade "AJ"] 1381 00:59:14,754 --> 00:59:15,740 >> Dubbelt så snabbt. 1382 00:59:15,740 --> 00:59:20,660 1383 00:59:20,660 --> 00:59:21,830 >> OK. 1384 00:59:21,830 --> 00:59:23,780 Men det är bokstavligen gör vad jag säger. 1385 00:59:23,780 --> 00:59:27,580 Så det är i själva verket korrekt, det är bara lite irriterande snabbt. 1386 00:59:27,580 --> 00:59:30,330 Så låt oss lägga till något mer intressant att redan. 1387 00:59:30,330 --> 00:59:32,950 Låt mig faktiskt öppna upp ett som jag gjort i förväg, 1388 00:59:32,950 --> 00:59:38,560 träffande kallas klappa Katt, som gör detta. 1389 00:59:38,560 --> 00:59:40,340 Här är skriptet upp här. 1390 00:59:40,340 --> 00:59:44,510 Vad detta kommer att göra i engelska termer? 1391 00:59:44,510 --> 00:59:45,820 Vad detta syftar till att göra? 1392 00:59:45,820 --> 00:59:47,900 Ja, låt oss some-- ja? 1393 00:59:47,900 --> 00:59:49,665 >> PUBLIK: När du klappa katten, meows det. 1394 00:59:49,665 --> 00:59:52,290 DAVID MALAN: Ja, så när du klappa katten, det kommer att jama. 1395 00:59:52,290 --> 00:59:55,452 Så med andra ord, det finns nu en evigt loop fortfarande kombination 1396 00:59:55,452 --> 00:59:57,660 med ett tillstånd, i kombination med ett booleskt uttryck, 1397 00:59:57,660 --> 01:00:00,140 i kombination med ett par av funktioner, effekten 1398 01:00:00,140 --> 01:00:02,610 varav en gång jag spelar detta program är ingenting 1399 01:00:02,610 --> 01:00:06,820 händer tills jag flyttar markören närmare och närmare och närmare och-- 1400 01:00:06,820 --> 01:00:08,029 >> [MJAU] 1401 01:00:08,029 --> 01:00:09,320 Då är det som att klappa katten. 1402 01:00:09,320 --> 01:00:11,210 [MJAU] 1403 01:00:11,210 --> 01:00:14,270 Först när du faktiskt Flytta markören över honom. 1404 01:00:14,270 --> 01:00:19,964 Nu, jag piskade även upp inte sällskapsdjur katten, som gör detta i stället. 1405 01:00:19,964 --> 01:00:21,350 >> [Meowing] 1406 01:00:21,350 --> 01:00:23,485 >> Så han bara ständigt jama. 1407 01:00:23,485 --> 01:00:24,455 >> [Meowing] 1408 01:00:24,455 --> 01:00:27,705 >> Men om jag får för close-- 1409 01:00:27,705 --> 01:00:29,645 >> [Meowing] 1410 01:00:29,645 --> 01:00:32,080 >> [RYTA] 1411 01:00:32,080 --> 01:00:33,590 >> Så hur fungerar det? 1412 01:00:33,590 --> 01:00:35,880 Nu har jag bara en två-vägs gaffel i vägen. 1413 01:00:35,880 --> 01:00:38,930 Om att röra muspekaren, sedan spela lejon ljud. 1414 01:00:38,930 --> 01:00:41,950 Else bara spela mjau ljud, och sedan vänta tre sekunder så 1415 01:00:41,950 --> 01:00:43,880 att det är typ att göra det mycket lugnt. 1416 01:00:43,880 --> 01:00:44,380 Okej. 1417 01:00:44,380 --> 01:00:47,290 Så det är en kombination några fler idéer fortfarande. 1418 01:00:47,290 --> 01:00:50,870 Låt oss ta en titt på detta exempel Jag piskade upp kallas trådar. 1419 01:00:50,870 --> 01:00:54,020 Och detta är i grunden annorlunda eftersom det hävstångs 1420 01:00:54,020 --> 01:00:56,070 ett särdrag hos många programmeringsspråk som kallas 1421 01:00:56,070 --> 01:00:59,970 trådar, förmågan av ett program för bokstavligen göra två saker samtidigt. 1422 01:00:59,970 --> 01:01:03,600 Faktum är att dessa dagar om du använder Google Docs eller Microsoft Word, 1423 01:01:03,600 --> 01:01:09,620 och dokumentet är ständigt vara stavningskontrolleras även när du Motortyp- eller du 1424 01:01:09,620 --> 01:01:11,580 hit Kommando-P eller Ctrl-P och skriva ut något, 1425 01:01:11,580 --> 01:01:13,380 det skriver ut medan du fortsätter att skriva. 1426 01:01:13,380 --> 01:01:16,680 Program idag kan verkligen göra flera saker på en gång, precis som i Scratch 1427 01:01:16,680 --> 01:01:17,180 här. 1428 01:01:17,180 --> 01:01:20,400 >> Så här, jag har två sprites nu, en fågel och en katt. 1429 01:01:20,400 --> 01:01:22,780 Och om jag klickar på vart och ett av de tecken ett i taget, 1430 01:01:22,780 --> 01:01:25,590 Jag ser just nu fågelns skript uppe till höger. 1431 01:01:25,590 --> 01:01:27,270 Nu ser jag kattens. 1432 01:01:27,270 --> 01:01:28,540 Fågel, katt. 1433 01:01:28,540 --> 01:01:30,270 Så var och en av dem har sina egna manus. 1434 01:01:30,270 --> 01:01:32,700 Men varsel, vilken pusselbit gör de båda börja med? 1435 01:01:32,700 --> 01:01:34,260 När grön flagga klickade. 1436 01:01:34,260 --> 01:01:36,890 Och fågel, när grön flagg klickade. 1437 01:01:36,890 --> 01:01:40,870 Så när jag klickar på den gröna flaggan, båda dessa skript eller program 1438 01:01:40,870 --> 01:01:42,759 kommer att löpa parallellt. 1439 01:01:42,759 --> 01:01:45,800 Och du kommer att märka att fågeln är bara tanklöst studsar utanför kanten. 1440 01:01:45,800 --> 01:01:50,890 Katten tydligt har programmerats med en strategisk fördel. 1441 01:01:50,890 --> 01:01:52,704 Och-- 1442 01:01:52,704 --> 01:01:53,490 >> [RYTA] 1443 01:01:53,490 --> 01:01:53,821 1444 01:01:53,821 --> 01:01:54,320 Okej. 1445 01:01:54,320 --> 01:01:57,340 Så katten fångade fågel i det här fallet. 1446 01:01:57,340 --> 01:01:58,390 Varför är det så? 1447 01:01:58,390 --> 01:02:03,310 Tja, meddelande först vi bara har fågeln precis tanklöst gå 1448 01:02:03,310 --> 01:02:05,120 till detta initiala läge, och sedan för evigt, 1449 01:02:05,120 --> 01:02:06,774 om inte röra katten, bara flytta. 1450 01:02:06,774 --> 01:02:08,190 Och om du är på kanten, studsa. 1451 01:02:08,190 --> 01:02:08,870 Och bara flytta. 1452 01:02:08,870 --> 01:02:10,286 Och om du är på kanten, studsa. 1453 01:02:10,286 --> 01:02:12,840 Men katten, under tiden, har några ytterligare logik 1454 01:02:12,840 --> 01:02:18,250 som säger this-- första, bara så att detta inte är helt förspänd 1455 01:02:18,250 --> 01:02:21,191 mot fågeln, märker att jag har använde en grön pusselbit där 1456 01:02:21,191 --> 01:02:22,690 som plockar faktiskt ett slumptal. 1457 01:02:22,690 --> 01:02:26,179 Ett kännetecken för många språk är att ge du slumpmässiga eller pseudoslumptalen. 1458 01:02:26,179 --> 01:02:29,220 Så i detta fall, katten början väljer ett slumptal mellan, liksom, 1459 01:02:29,220 --> 01:02:31,727 90 grader och 180 grader, i huvudsak, så 1460 01:02:31,727 --> 01:02:33,310 att det finns en liten bit av variansen. 1461 01:02:33,310 --> 01:02:37,000 Och sedan för evigt, om beröring fågeln, spela lejonet ljud. 1462 01:02:37,000 --> 01:02:38,754 Annars, bara peka mot fågeln. 1463 01:02:38,754 --> 01:02:39,670 Peka mot fågeln. 1464 01:02:39,670 --> 01:02:44,199 Pekar mot fågel, som är en pusselbit sig själv i det här fallet. 1465 01:02:44,199 --> 01:02:45,740 Tja, kan vi göra en annan sak här. 1466 01:02:45,740 --> 01:02:49,820 Låt mig öppna programmet händelser här. 1467 01:02:49,820 --> 01:02:53,520 Och här har vi återigen två sprites, som ser ut som dessa två dockor här. 1468 01:02:53,520 --> 01:02:55,710 Och vad som är intressant här är det. 1469 01:02:55,710 --> 01:02:59,140 Den orangefärgade killen har detta uppsättning av pusselbitar här. 1470 01:02:59,140 --> 01:03:01,700 Evigt göra following-- om mellanslagstangenten trycks 1471 01:03:01,700 --> 01:03:05,430 sedan säga, Marco, och sedan sända ett evenemang. 1472 01:03:05,430 --> 01:03:09,460 Och under tiden, här har den blå killen this-- när du tar emot händelsen, 1473 01:03:09,460 --> 01:03:10,540 säga Polo. 1474 01:03:10,540 --> 01:03:12,850 Så visar det sig i Scratch och på andra språk, 1475 01:03:12,850 --> 01:03:15,830 det finns sätt för två program eller två manus, i detta fall, 1476 01:03:15,830 --> 01:03:20,310 att kommunicera med varandra så att när jag tryck på mellanslagstangenten, säger han Marco. 1477 01:03:20,310 --> 01:03:23,539 Och den andra hör det, så att tala, och säger Polo svar. 1478 01:03:23,539 --> 01:03:26,080 Så du kan skriva program som faktiskt samverka på detta sätt. 1479 01:03:26,080 --> 01:03:28,630 Och om jag gör det här stället, Jag kan även lägga till variabler, 1480 01:03:28,630 --> 01:03:31,287 bara använda en sprite i det här fallet. 1481 01:03:31,287 --> 01:03:32,578 Den här är särskilt irriterande. 1482 01:03:32,578 --> 01:03:36,174 >> [SEAL BARKING] 1483 01:03:36,174 --> 01:03:37,100 1484 01:03:37,100 --> 01:03:42,490 >> Nu, meddelande om rätt vi har några ytterligare logik hit. 1485 01:03:42,490 --> 01:03:45,146 Hur stoppar jag detta sigill från att skälla? 1486 01:03:45,146 --> 01:03:48,320 >> [SEAL BARKING] 1487 01:03:48,320 --> 01:03:52,830 1488 01:03:52,830 --> 01:03:55,630 >> Det ser ut som på den högra sida är vad som spelas ljudet. 1489 01:03:55,630 --> 01:03:58,500 Men det är bara att spela en ljud om det är sant? 1490 01:03:58,500 --> 01:04:03,390 Om en variable-- apelsin block-- dämpad är noll. 1491 01:04:03,390 --> 01:04:07,916 Hur ändrar jag dämpade att vara en, betyder sant, gör detta dämpad? 1492 01:04:07,916 --> 01:04:12,455 Tydligen andra manus, jag kan tryck på mellanslagstangenten, och nu stannar han. 1493 01:04:12,455 --> 01:04:15,080 Så vi kan ha denna förbindelse över manus, liksom, 1494 01:04:15,080 --> 01:04:18,349 genom att bara dela en variabel över två så här. 1495 01:04:18,349 --> 01:04:19,890 Nu är det inte så intressant. 1496 01:04:19,890 --> 01:04:24,360 Låt oss gå vidare och göra det och kombinera en hel del av dessa idéer med detta program 1497 01:04:24,360 --> 01:04:25,940 här. 1498 01:04:25,940 --> 01:04:28,100 Innan vi gör det, men, vad sägs om en volontär? 1499 01:04:28,100 --> 01:04:30,558 Låt mig ta bort trycket av mig eftersom jag inte faktiskt 1500 01:04:30,558 --> 01:04:31,280 spela detta spel. 1501 01:04:31,280 --> 01:04:33,030 Låt oss ha någon vi inte har sett förut. 1502 01:04:33,030 --> 01:04:36,420 Du måste vara bekväm att komma upp på scenen här, på kameran. 1503 01:04:36,420 --> 01:04:37,430 OK, kom upp. 1504 01:04:37,430 --> 01:04:38,130 Mycket modig. 1505 01:04:38,130 --> 01:04:39,052 Vad heter du? 1506 01:04:39,052 --> 01:04:39,962 >> IDRIS: Idris. 1507 01:04:39,962 --> 01:04:40,753 DAVID MALAN: Tyvärr? 1508 01:04:40,753 --> 01:04:41,196 IDRIS: Idris. 1509 01:04:41,196 --> 01:04:42,670 DAVID MALAN: Idris, trevligt att träffas. 1510 01:04:42,670 --> 01:04:43,170 Kom upp. 1511 01:04:43,170 --> 01:04:45,630 Och nu, på din egen mobil telefon, du spelar Pokemon GO? 1512 01:04:45,630 --> 01:04:46,567 >> IDRIS: Nej 1513 01:04:46,567 --> 01:04:47,400 DAVID MALAN: Verkligen? 1514 01:04:47,400 --> 01:04:48,104 IDRIS: Ja. 1515 01:04:48,104 --> 01:04:48,770 DAVID MALAN: OK. 1516 01:04:48,770 --> 01:04:49,020 Okej. 1517 01:04:49,020 --> 01:04:49,978 Nå, trevligt att träffas. 1518 01:04:49,978 --> 01:04:50,820 Kom över. 1519 01:04:50,820 --> 01:04:51,950 Jag gör inte heller. 1520 01:04:51,950 --> 01:04:55,380 Så vi ska räkna ut tillsammans hur man spela detta, där någon faktiskt 1521 01:04:55,380 --> 01:05:00,140 gick och genomförs i Scratch genom att ändra katten att väsentligen 1522 01:05:00,140 --> 01:05:02,260 olika karaktärer tillsammans. 1523 01:05:02,260 --> 01:05:04,870 Och om jag helskärm det här, kommer vi 1524 01:05:04,870 --> 01:05:06,860 att se följande spel tillsammans. 1525 01:05:06,860 --> 01:05:09,560 Fortfarande lastning, fortfarande laddas. 1526 01:05:09,560 --> 01:05:10,270 Kom igen. 1527 01:05:10,270 --> 01:05:12,590 Låt mig göra detta. 1528 01:05:12,590 --> 01:05:14,520 Kom igen. 1529 01:05:14,520 --> 01:05:17,200 Detta spel är så stor att den kraschade. 1530 01:05:17,200 --> 01:05:18,980 Står fast vid. 1531 01:05:18,980 --> 01:05:22,390 Prova denna gång. 1532 01:05:22,390 --> 01:05:23,710 Kom igen. 1533 01:05:23,710 --> 01:05:24,211 Okej. 1534 01:05:24,211 --> 01:05:26,840 1535 01:05:26,840 --> 01:05:27,430 >> Det går vi. 1536 01:05:27,430 --> 01:05:27,929 OK. 1537 01:05:27,929 --> 01:05:29,330 Grön flagga. 1538 01:05:29,330 --> 01:05:30,190 Så här går vi. 1539 01:05:30,190 --> 01:05:30,950 >> [Musik spelar] 1540 01:05:30,950 --> 01:05:32,510 >> Välj den mellersta nivån här. 1541 01:05:32,510 --> 01:05:34,200 Klicka på den blå killen där. 1542 01:05:34,200 --> 01:05:34,700 Okej. 1543 01:05:34,700 --> 01:05:37,860 Och du kan använda pilen keys-- uppåt, nedåt, vänster, höger. 1544 01:05:37,860 --> 01:05:42,150 Nu, låt oss betrakta som vi gör this-- och sedan gå efter tecknet där. 1545 01:05:42,150 --> 01:05:42,650 Japp. 1546 01:05:42,650 --> 01:05:45,786 Och nu klicka honom med musen. 1547 01:05:45,786 --> 01:05:46,693 Oh, ja. 1548 01:05:46,693 --> 01:05:47,193 Flytta. 1549 01:05:47,193 --> 01:05:47,662 Var är pilen? 1550 01:05:47,662 --> 01:05:48,131 Här har du. 1551 01:05:48,131 --> 01:05:48,600 Så klicka på det. 1552 01:05:48,600 --> 01:05:48,840 Ja. 1553 01:05:48,840 --> 01:05:49,340 Okej. 1554 01:05:49,340 --> 01:05:56,008 Så nu, jag sa ju har en Poke boll, att om klicka på det, kommer det att göra det. 1555 01:05:56,008 --> 01:05:57,932 Mycket bra. 1556 01:05:57,932 --> 01:06:00,390 Vid utövande för idag, jag tyckte att det här versionen av spelet 1557 01:06:00,390 --> 01:06:01,760 faktiskt inte särskilt svårt. 1558 01:06:01,760 --> 01:06:07,650 Så om du vill gå igen här, gå ner till denna Poke boll. 1559 01:06:07,650 --> 01:06:08,780 Och sedan gå ta en rätt. 1560 01:06:08,780 --> 01:06:11,200 Klicka på den. 1561 01:06:11,200 --> 01:06:13,120 Åh, faktiskt, det är butiken, tydligen. 1562 01:06:13,120 --> 01:06:14,170 OK så nära det. 1563 01:06:14,170 --> 01:06:15,150 Aldrig gjort det förut. 1564 01:06:15,150 --> 01:06:16,566 Kanske gå upp till denna sak här. 1565 01:06:16,566 --> 01:06:17,460 Åh, där du går. 1566 01:06:17,460 --> 01:06:18,910 Vänta, det finns en borta. 1567 01:06:18,910 --> 01:06:20,412 Åh, det finns en annan. 1568 01:06:20,412 --> 01:06:21,285 OK. 1569 01:06:21,285 --> 01:06:21,785 Ner. 1570 01:06:21,785 --> 01:06:23,210 Ja, klicka. 1571 01:06:23,210 --> 01:06:24,635 >> OK, det är väldigt söt. 1572 01:06:24,635 --> 01:06:27,485 1573 01:06:27,485 --> 01:06:28,810 OK, mycket bra gjort. 1574 01:06:28,810 --> 01:06:30,010 Detta spel är inte särskilt svårt. 1575 01:06:30,010 --> 01:06:30,510 OK. 1576 01:06:30,510 --> 01:06:32,150 Grattis. 1577 01:06:32,150 --> 01:06:34,720 Här har vi en CS50 stress boll för dig. 1578 01:06:34,720 --> 01:06:37,680 Men överväga för ett ögonblick vad några av de takeaways är där. 1579 01:06:37,680 --> 01:06:39,263 Lättare än det riktiga spelet, tydligen. 1580 01:06:39,263 --> 01:06:41,809 Men allt vi har att gå på här är ett tecken 1581 01:06:41,809 --> 01:06:44,100 som förmodligen har någon form sling i samband med det. 1582 01:06:44,100 --> 01:06:44,590 Det är inte en katt. 1583 01:06:44,590 --> 01:06:45,860 Det är denna karaktär i stället. 1584 01:06:45,860 --> 01:06:49,052 Och att slingan är bara ständigt sade om uppåtpil trycks 1585 01:06:49,052 --> 01:06:51,260 om nedåtpilen intryckt, om vänsterpil trycks eller höger 1586 01:06:51,260 --> 01:06:53,960 pil intryckt, flytta upp eller nedåt eller åt vänster eller höger. 1587 01:06:53,960 --> 01:06:57,870 Eller om det finns en annan pusselbit där som säger när du vidrör en annan sprite, 1588 01:06:57,870 --> 01:07:01,320 när man rör ett av tecknen till petar bollen, om beröring, 1589 01:07:01,320 --> 01:07:02,440 sedan göra detta. 1590 01:07:02,440 --> 01:07:04,800 >> Så alla de idéer vi ve använt hittills verkligen 1591 01:07:04,800 --> 01:07:09,130 kan bara användas i denna sammanhang att spela detta spel, liksom. 1592 01:07:09,130 --> 01:07:13,580 Låt mig gå vidare och dra upp en annan här, faktiskt. 1593 01:07:13,580 --> 01:07:17,060 Låt mig gå vidare och dra upp, låt oss säga, det här. 1594 01:07:17,060 --> 01:07:18,540 Detta är något vi remixed. 1595 01:07:18,540 --> 01:07:20,329 Tillverkad av en av våra studenter i Cambridge, 1596 01:07:20,329 --> 01:07:23,370 och sedan gick jag igenom och ändras ganska mycket varje instans av Harvard 1597 01:07:23,370 --> 01:07:25,580 Yale denna gång. 1598 01:07:25,580 --> 01:07:27,870 Skulle någon vilja tävla mot de Ivies 1599 01:07:27,870 --> 01:07:31,650 här i en annan ackumulering alla dessa idéer? 1600 01:07:31,650 --> 01:07:32,662 Kom ner, ja. 1601 01:07:32,662 --> 01:07:33,370 Vad heter du? 1602 01:07:33,370 --> 01:07:34,190 >> DINA: Dina. 1603 01:07:34,190 --> 01:07:35,015 >> DAVID MALAN: Adina? 1604 01:07:35,015 --> 01:07:35,380 >> DINA: Dina. 1605 01:07:35,380 --> 01:07:36,410 >> DAVID MALAN: Dina, kom ner. 1606 01:07:36,410 --> 01:07:37,320 Okej, Dina. 1607 01:07:37,320 --> 01:07:40,780 Så det här spelet blir svårare och hårdare, eftersom det i det här spelet, 1608 01:07:40,780 --> 01:07:43,970 Det finns variabler som används samt att ständigt hålla reda 1609 01:07:43,970 --> 01:07:45,930 av vilken nivå du befinner dig i spelet. 1610 01:07:45,930 --> 01:07:47,120 Så trevligt att träffa dig. 1611 01:07:47,120 --> 01:07:48,250 Kom runt här. 1612 01:07:48,250 --> 01:07:51,460 Och så målet är att sortera av göra dig igenom en labyrint 1613 01:07:51,460 --> 01:07:52,710 att denna elev genomföras. 1614 01:07:52,710 --> 01:07:55,334 >> Och bara för att ställa scenen, varje av bilderna på skärmen 1615 01:07:55,334 --> 01:07:57,222 är sin egen sprite, sin egen karaktär. 1616 01:07:57,222 --> 01:07:59,680 Så dessa var som standard katter, men studenten ändrat dem 1617 01:07:59,680 --> 01:08:01,480 till de olika Ivies logotyper här. 1618 01:08:01,480 --> 01:08:04,370 Och då ser du att bara genom användning av betingelser och loopar 1619 01:08:04,370 --> 01:08:06,848 och funktioner och mer, får du här. 1620 01:08:06,848 --> 01:08:07,478 >> [Musik spelar] 1621 01:08:07,478 --> 01:08:09,228 [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1622 01:08:09,228 --> 01:08:13,060 1623 01:08:13,060 --> 01:08:14,018 >> Ja okej. 1624 01:08:14,018 --> 01:08:17,371 1625 01:08:17,371 --> 01:08:20,110 Ja, fortsätt. 1626 01:08:20,110 --> 01:08:21,180 Första nivå är väldigt lätt. 1627 01:08:21,180 --> 01:08:22,554 Du har just fått gå dit. 1628 01:08:22,554 --> 01:08:25,644 Men återigen, anser detta är bara en loop lyssna efter pilen keys-- 1629 01:08:25,644 --> 01:08:26,560 upp ner vänster höger. 1630 01:08:26,560 --> 01:08:28,320 Och nu sensorblock. 1631 01:08:28,320 --> 01:08:29,345 Mycket trevlig. 1632 01:08:29,345 --> 01:08:32,600 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1633 01:08:32,600 --> 01:08:40,340 1634 01:08:40,340 --> 01:08:41,288 >> Mycket trevlig. 1635 01:08:41,288 --> 01:08:44,550 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1636 01:08:44,550 --> 01:08:55,540 1637 01:08:55,540 --> 01:08:56,430 >> Mycket trevlig. 1638 01:08:56,430 --> 01:08:57,975 Ganska lätt, Crimson. 1639 01:08:57,975 --> 01:08:59,060 Okej. 1640 01:08:59,060 --> 01:09:00,250 Levels-- uh-oh. 1641 01:09:00,250 --> 01:09:02,380 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1642 01:09:02,380 --> 01:09:04,980 1643 01:09:04,980 --> 01:09:07,150 >> Och återigen, i dessa tre Harvard kammar, 1644 01:09:07,150 --> 01:09:10,334 du bara har logik säger om på kanten, studsa. 1645 01:09:10,334 --> 01:09:13,238 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1646 01:09:13,238 --> 01:09:14,690 1647 01:09:14,690 --> 01:09:17,651 >> OK, vad du gör är mer intressant än varför. 1648 01:09:17,651 --> 01:09:18,150 Mycket trevlig. 1649 01:09:18,150 --> 01:09:18,810 Mycket trevlig. 1650 01:09:18,810 --> 01:09:20,270 Hoppsan. 1651 01:09:20,270 --> 01:09:23,350 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1652 01:09:23,350 --> 01:09:26,005 1653 01:09:26,005 --> 01:09:27,630 Jag tror att du måste offra dig själv. 1654 01:09:27,630 --> 01:09:30,372 [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1655 01:09:30,372 --> 01:09:30,872 Snabbt! 1656 01:09:30,872 --> 01:09:34,848 1657 01:09:34,848 --> 01:09:38,824 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1658 01:09:38,824 --> 01:09:44,288 1659 01:09:44,288 --> 01:09:44,788 Trevlig. 1660 01:09:44,788 --> 01:09:52,240 1661 01:09:52,240 --> 01:09:52,740 Det är ok. 1662 01:09:52,740 --> 01:09:53,770 Du får det. 1663 01:09:53,770 --> 01:09:56,304 Jaja! 1664 01:09:56,304 --> 01:09:58,256 Mycket trevlig. 1665 01:09:58,256 --> 01:10:01,184 >> [GLÄDJANDE] 1666 01:10:01,184 --> 01:10:02,160 1667 01:10:02,160 --> 01:10:05,576 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1668 01:10:05,576 --> 01:10:09,480 1669 01:10:09,480 --> 01:10:10,940 >> Trevlig! 1670 01:10:10,940 --> 01:10:14,370 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1671 01:10:14,370 --> 01:10:39,050 1672 01:10:39,050 --> 01:10:39,550 Jag fattar. 1673 01:10:39,550 --> 01:10:41,510 Kom igen! 1674 01:10:41,510 --> 01:10:43,470 Näst sista nivå. 1675 01:10:43,470 --> 01:10:46,900 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1676 01:10:46,900 --> 01:10:49,588 1677 01:10:49,588 --> 01:10:50,580 >> Okej. 1678 01:10:50,580 --> 01:10:54,052 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1679 01:10:54,052 --> 01:11:00,992 1680 01:11:00,992 --> 01:11:01,492 Ja. 1681 01:11:01,492 --> 01:11:06,230 1682 01:11:06,230 --> 01:11:08,020 Bra användning av variabler här. 1683 01:11:08,020 --> 01:11:09,770 [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1684 01:11:09,770 --> 01:11:10,770 Ja. 1685 01:11:10,770 --> 01:11:14,743 [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1686 01:11:14,743 --> 01:11:16,707 1687 01:11:16,707 --> 01:11:17,689 Trevlig. 1688 01:11:17,689 --> 01:11:21,126 [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1689 01:11:21,126 --> 01:11:23,581 1690 01:11:23,581 --> 01:11:24,570 Det är ok. 1691 01:11:24,570 --> 01:11:25,770 Vi fick komma till slutet. 1692 01:11:25,770 --> 01:11:26,270 Det. 1693 01:11:26,270 --> 01:11:27,010 åh! 1694 01:11:27,010 --> 01:11:29,980 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1695 01:11:29,980 --> 01:11:32,160 1696 01:11:32,160 --> 01:11:34,866 >> Kan köra sent idag, men det kommer vara värt det. 1697 01:11:34,866 --> 01:11:38,200 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1698 01:11:38,200 --> 01:11:39,640 1699 01:11:39,640 --> 01:11:42,520 >> Du kan göra det! 1700 01:11:42,520 --> 01:11:43,480 Ja! 1701 01:11:43,480 --> 01:11:46,278 >> [GLÄDJANDE] 1702 01:11:46,278 --> 01:11:47,230 1703 01:11:47,230 --> 01:11:50,086 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1704 01:11:50,086 --> 01:11:51,470 >> Den här är verkligen svårt. 1705 01:11:51,470 --> 01:11:54,070 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1706 01:11:54,070 --> 01:11:57,458 1707 01:11:57,458 --> 01:11:59,000 >> Vi ger dig ytterligare två liv. 1708 01:11:59,000 --> 01:11:59,968 Kan du göra det? 1709 01:11:59,968 --> 01:12:03,356 >> [MUSIK - MC Hammer, "U kan inte röra  DETTA"] 1710 01:12:03,356 --> 01:12:06,744 1711 01:12:06,744 --> 01:12:07,244 >> Okej. 1712 01:12:07,244 --> 01:12:09,160 Vad sägs om en stor rund applåder ändå. 1713 01:12:09,160 --> 01:12:10,800 Du kom till näst sista nivån. 1714 01:12:10,800 --> 01:12:11,723 Tack. 1715 01:12:11,723 --> 01:12:14,964 >> [APPLÅDER] 1716 01:12:14,964 --> 01:12:15,890 1717 01:12:15,890 --> 01:12:19,600 >> Så detta är bara att säga hur mycket du kan göra med dessa typer av saker. 1718 01:12:19,600 --> 01:12:21,892 Och inser också att när pusselbitar inte exist-- 1719 01:12:21,892 --> 01:12:24,891 och faktiskt, det kommer att vara en av befogenheter det första problemet 1720 01:12:24,891 --> 01:12:27,080 apparater och beyond-- är att faktiskt skapa din egen. 1721 01:12:27,080 --> 01:12:28,860 Och detta är bara ett utdrag av ett av exemplen 1722 01:12:28,860 --> 01:12:30,230 du kommer att kunna spela online, där 1723 01:12:30,230 --> 01:12:33,380 om du inte har byggt in Scratch något som en hosta pusselbit, 1724 01:12:33,380 --> 01:12:35,470 du faktiskt kan göra det själv. 1725 01:12:35,470 --> 01:12:37,387 >> Och så allt detta och mer väntar. 1726 01:12:37,387 --> 01:12:39,470 Och bara för att måla en slutlig bild av verkligen vad är 1727 01:12:39,470 --> 01:12:43,120 framåt i beredskap för klassen för dig, baserat på några bilder från klasskamrater 1728 01:12:43,120 --> 01:12:46,970 förflutna, låt mig dämpa belysningen en sista gång och visar dig CS50. 1729 01:12:46,970 --> 01:12:49,580 1730 01:12:49,580 --> 01:12:53,038 >> [Musik spelar] 1731 01:12:53,038 --> 01:14:38,210 1732 01:14:38,210 --> 01:14:38,860 >> Okej. 1733 01:14:38,860 --> 01:14:41,540 Det var allt för CS50. 1734 01:14:41,540 --> 01:14:44,964 Kaka serveras nu. 1735 01:14:44,964 --> 01:14:50,610 1736 01:14:50,610 --> 01:14:53,960 >> [Musik spelar] 1737 01:14:53,960 --> 01:15:07,624