1 00:00:00,000 --> 00:00:03,440 >> [Musik spiller] 2 00:00:03,440 --> 00:01:57,217 3 00:01:57,217 --> 00:02:00,710 >> [Applaus] 4 00:02:00,710 --> 00:02:05,700 5 00:02:05,700 --> 00:02:09,669 >> David J. MALAN: Dette er CS50, Harvard University introduktion 6 00:02:09,669 --> 00:02:12,370 til den intellektuelle virksomheder af datalogi 7 00:02:12,370 --> 00:02:14,180 og kunsten at programmeringen. 8 00:02:14,180 --> 00:02:17,530 Nu, hvis du er blandt dem, der hvert år sidder her 9 00:02:17,530 --> 00:02:21,450 med en smule nerver i dit sind, sådan at du ikke tror, ​​du hører til her, 10 00:02:21,450 --> 00:02:24,270 du tror, ​​at de fleste nogen sidder omkring dig 11 00:02:24,270 --> 00:02:27,730 kender langt mere end dig, er faktisk mere komfortabel end dig på computeren 12 00:02:27,730 --> 00:02:30,430 videnskab eller computere mere generelt, indser 13 00:02:30,430 --> 00:02:36,140 at 78% af de studerende, der nu tage CS50 har nogen forudgående erfaring. 14 00:02:36,140 --> 00:02:39,570 >> Faktisk er der 100 punkter der på skærmen, hvoraf 78 15 00:02:39,570 --> 00:02:43,540 er fast grønt, hvilket betyder, at du, Hvis du er blandt det demografiske, 16 00:02:43,540 --> 00:02:46,420 er i meget godt selskab her på ud. 17 00:02:46,420 --> 00:02:50,320 Og hvis du er i stedet blandt de 22% af CS50 studerende, der gør faktisk 18 00:02:50,320 --> 00:02:53,920 have forudgående erfaring, enten i gymnasiet eller et andet program, 19 00:02:53,920 --> 00:02:56,430 indser, at du også vil blive udfordret i løbet. 20 00:02:56,430 --> 00:02:59,930 >> Ikke alene har vi forskellige spor for studerende mindre komfortabel og mere 21 00:02:59,930 --> 00:03:03,789 komfortabel ens i sektioner, vi har også såkaldte hacker udgaver 22 00:03:03,789 --> 00:03:06,080 af de fleste problem indstiller, at vil udfordre de studerende 23 00:03:06,080 --> 00:03:09,650 med at yderligere erfaring at undersøge lignende materiale 24 00:03:09,650 --> 00:03:12,140 men ud fra et mere sofistikeret perspektiv. 25 00:03:12,140 --> 00:03:13,900 >> Men hvad er datalogi? 26 00:03:13,900 --> 00:03:17,750 Nå, i sidste ende, hvad der kommer til noget, som du udforske dette felt er ikke 27 00:03:17,750 --> 00:03:20,500 så meget, hvor du ender i forhold til dine klassekammerater, 28 00:03:20,500 --> 00:03:25,350 men hvor man selv ender i uge 12 versus hvor du begynder her 29 00:03:25,350 --> 00:03:26,720 i uge nul. 30 00:03:26,720 --> 00:03:31,850 Nu computer science-- godt, lad os kalder det videnskab computation-- 31 00:03:31,850 --> 00:03:35,910 hvor beregning er egentlig bare en fancy måde at sige, idet nogle input, 32 00:03:35,910 --> 00:03:39,460 producerer nogle output, og gør det ved at kører algoritmer, 33 00:03:39,460 --> 00:03:43,700 sæt af instruktioner for at løse nogle problem på disse input 34 00:03:43,700 --> 00:03:48,460 for at frembringe nogle output eller løsning, hvor du er interesseret. 35 00:03:48,460 --> 00:03:51,310 >> Så vi havde for nylig lejlighed til at rejse ud 36 00:03:51,310 --> 00:03:53,170 til Californien for at mødes med en alumna. 37 00:03:53,170 --> 00:03:54,650 Hendes navn er Susan Wojcicki. 38 00:03:54,650 --> 00:03:57,190 Og hun vil gerne tale til dig her på video 39 00:03:57,190 --> 00:04:01,690 at vidne til, hvor relevant bare en smag af computer 40 00:04:01,690 --> 00:04:03,770 videnskab på indledende niveau kan være. 41 00:04:03,770 --> 00:04:06,870 Selv hvis du ikke gå på at forfølge datalogi som et felt, 42 00:04:06,870 --> 00:04:09,330 eller endda teknik, eller STEM mere generelt, 43 00:04:09,330 --> 00:04:12,360 du vil se, i virkeligheden, hvordan en bestemt kursus så påvirket hendes liv. 44 00:04:12,360 --> 00:04:16,630 Og hun kun lige tog det, da hun var en højtstående her på Harvard College. 45 00:04:16,630 --> 00:04:19,482 >> Hvis vi kunne dæmpe lyset til Susan. 46 00:04:19,482 --> 00:04:20,690 SUSAN Wojcicki: Hej, verden. 47 00:04:20,690 --> 00:04:22,100 Jeg er Susan Wojcicki. 48 00:04:22,100 --> 00:04:24,110 Jeg er administrerende direktør for YouTube. 49 00:04:24,110 --> 00:04:29,150 Og jeg tog CS50, da jeg var en senior på Harvard i 1990. 50 00:04:29,150 --> 00:04:31,220 Jeg var faktisk en historie og litteratur større. 51 00:04:31,220 --> 00:04:36,760 >> Og min junior sommer, Jeg indså, at jeg måske 52 00:04:36,760 --> 00:04:39,060 ønskede at lære noget om computere. 53 00:04:39,060 --> 00:04:40,930 Og så kom jeg tilbage. 54 00:04:40,930 --> 00:04:42,500 Jeg tog CS50. 55 00:04:42,500 --> 00:04:46,940 Det var svært, men det var mest fantastiske klasse tog jeg. 56 00:04:46,940 --> 00:04:49,630 >> Det ændrede hvordan jeg tænker om alt. 57 00:04:49,630 --> 00:04:55,810 Og når jeg dimitterede fra Harvard i 1990, gik jeg til Silicon Valley. 58 00:04:55,810 --> 00:04:57,140 Og jeg fik et job. 59 00:04:57,140 --> 00:05:00,150 Og jeg har arbejdet i tech lige siden. 60 00:05:00,150 --> 00:05:02,650 David J. MALAN: Nu hvad Susan nævner ikke i denne video, 61 00:05:02,650 --> 00:05:05,340 at det faktisk var i hende garage, som Google selv var 62 00:05:05,340 --> 00:05:07,420 grundlagt af Larry og Sergey. 63 00:05:07,420 --> 00:05:11,169 >> Nu er vi også nået ud til vores venner ved code.org, en organisation, der 64 00:05:11,169 --> 00:05:13,460 i det forløbne år har været få folk især 65 00:05:13,460 --> 00:05:16,520 begejstrede datalogi og programmering, i særdeleshed. 66 00:05:16,520 --> 00:05:20,590 Men det er værd at bemærke, at programmeringen er ikke datalogi per se. 67 00:05:20,590 --> 00:05:22,090 Datalogi er ikke programmering. 68 00:05:22,090 --> 00:05:24,560 Snarere programmering er blot en tool-- som alle jer 69 00:05:24,560 --> 00:05:27,510 vil være alt for godt fortrolig med semesters end-- 70 00:05:27,510 --> 00:05:30,650 sådan at du kan anvende ikke bare til fremtidige kurser i CS 71 00:05:30,650 --> 00:05:33,670 men uanset felter fra hvorfra du kommer i humaniora, 72 00:05:33,670 --> 00:05:36,090 samfundsvidenskab, naturlig videnskab eller lignende. 73 00:05:36,090 --> 00:05:39,740 >> Faktisk tillade et par andre alumner og deres kolleger 74 00:05:39,740 --> 00:05:43,400 at tale med anvendeligheden af marken, der venter. 75 00:05:43,400 --> 00:05:52,340 76 00:05:52,340 --> 00:05:57,350 >> Bill Gates: Jeg var 13, da jeg først fik adgang til en computer. 77 00:05:57,350 --> 00:06:00,485 >> JACK DORSEY: Mine forældre købte mig en Macintosh i 1984 78 00:06:00,485 --> 00:06:01,640 da jeg var otte år gammel. 79 00:06:01,640 --> 00:06:02,990 >> Mark Zuckerberg: Jeg var i sjette klasse. 80 00:06:02,990 --> 00:06:04,670 >> SPEAKER 1: Jeg lærte at kode i college. 81 00:06:04,670 --> 00:06:09,080 >> RUCHI Sanghvi: Freshman år, først semester Introduktion til datalogi. 82 00:06:09,080 --> 00:06:11,850 >> Bill Gates: Jeg skrev et program der spillede tic-tac-toe. 83 00:06:11,850 --> 00:06:14,100 >> DREW HOUSTON: Jeg tror, ​​det var temmelig ydmyg begyndelse. 84 00:06:14,100 --> 00:06:16,370 Jeg tror, ​​det første program Jeg skrev spurgte ting som, 85 00:06:16,370 --> 00:06:17,820 Hvad er dit foretrukne farve? 86 00:06:17,820 --> 00:06:18,696 Eller hvor gammel er du? 87 00:06:18,696 --> 00:06:21,070 ELENA SILENOK: Jeg lærte først hvordan man laver en grøn cirkel 88 00:06:21,070 --> 00:06:23,670 og en rød firkant vises på skærmen. 89 00:06:23,670 --> 00:06:25,420 GABE NEWELL: Den første gang jeg havde faktisk 90 00:06:25,420 --> 00:06:27,360 noget kommer op og sige, hej, verden. 91 00:06:27,360 --> 00:06:29,710 Og jeg lavede en computer gøre det. 92 00:06:29,710 --> 00:06:30,850 Det var blot forbløffende. 93 00:06:30,850 --> 00:06:33,224 >> Mark Zuckerberg: lære til programmet ikke starter 94 00:06:33,224 --> 00:06:35,450 som ønsker at lære alle datalogi 95 00:06:35,450 --> 00:06:38,630 eller forsøger at beherske dette disciplin eller noget lignende. 96 00:06:38,630 --> 00:06:41,591 Det bare startede, fordi jeg ønskede at gøre dette én simpel ting. 97 00:06:41,591 --> 00:06:44,340 Jeg ønskede at gøre noget, var sjovt for mig og mine søstre. 98 00:06:44,340 --> 00:06:46,399 >> Og jeg skrev dette lille program. 99 00:06:46,399 --> 00:06:48,440 Og så dybest set bare tilsat en lille smule til den. 100 00:06:48,440 --> 00:06:49,930 Og da jeg havde brug for at lære noget nyt, 101 00:06:49,930 --> 00:06:52,210 Jeg slog det op, enten i en bog eller på internettet, 102 00:06:52,210 --> 00:06:53,240 og derefter tilsat en lille smule til den. 103 00:06:53,240 --> 00:06:56,300 >> DREW HOUSTON: Det er virkelig ikke ulig spille et instrument eller noget 104 00:06:56,300 --> 00:07:00,007 eller spille en sport. 105 00:07:00,007 --> 00:07:01,090 David J. MALAN: Okay. 106 00:07:01,090 --> 00:07:04,120 Så lad os nu faktisk dykke i en lidt dybere. 107 00:07:04,120 --> 00:07:07,430 Hvad er disse input og output at vi taler om her? 108 00:07:07,430 --> 00:07:09,110 >> Så hvordan omkring noget simpelt? 109 00:07:09,110 --> 00:07:12,120 Du kender sikkert, selvom du har ingen kendskab til datalogi 110 00:07:12,120 --> 00:07:16,570 overhovedet, at computere eller anden måde anvender og forstår kun nuller og ettaller. 111 00:07:16,570 --> 00:07:20,500 Men hvordan kan det muligvis blive givet hvordan meget nutidens stationære og bærbare computere både 112 00:07:20,500 --> 00:07:21,280 kan gøre? 113 00:07:21,280 --> 00:07:24,310 >> DNA'et af dagen, den eneste alfabet, at de forstår 114 00:07:24,310 --> 00:07:26,410 er nul eller én. 115 00:07:26,410 --> 00:07:27,470 Nå, overveje dette. 116 00:07:27,470 --> 00:07:30,840 Vi mennesker har en tendens til at bruge decimal system. "December", hvilket betyder 10. 117 00:07:30,840 --> 00:07:33,970 Og det er 10, fordi vi har 10 cifre, 0 til ni. 118 00:07:33,970 --> 00:07:36,180 >> Nu computere, derimod, tendens til at bruge binær. 119 00:07:36,180 --> 00:07:37,270 "Bi" betyder to. 120 00:07:37,270 --> 00:07:39,560 Så de har en tendens til kun nul og en til at bruge. 121 00:07:39,560 --> 00:07:42,680 Men det viser sig, at selv bare med nuller og ettaller, at 122 00:07:42,680 --> 00:07:45,900 er et tilstrækkeligt stort alfabet som at repræsentere de fleste 123 00:07:45,900 --> 00:07:48,490 et stykke data, du ønsker, uanset om det er et nummer, 124 00:07:48,490 --> 00:07:52,100 uanset om det er et brev, uanset om det er en grafisk eller video på skærmen. 125 00:07:52,100 --> 00:07:57,140 >> Overvej, for eksempel, hvordan vi mennesker fortolke typisk dette nummer her. 126 00:07:57,140 --> 00:08:00,010 Dette er blot tre cifre, en, to, tre. 127 00:08:00,010 --> 00:08:04,570 Men vi ved, at dette tal medfødt nu som 123. 128 00:08:04,570 --> 00:08:05,510 Men hvorfor er det? 129 00:08:05,510 --> 00:08:07,570 >> Tja, hvis du tænker tilbage til måske folkeskolen, 130 00:08:07,570 --> 00:08:11,700 du sandsynligvis blev oplært til at tænke på disse numre som værende i søjler, 131 00:08:11,700 --> 00:08:14,700 hvor den ene er i hundredvis sted, de to er i TEN sted, 132 00:08:14,700 --> 00:08:16,360 og tre er i dem sted. 133 00:08:16,360 --> 00:08:17,790 Hvorfor er det faktisk nyttigt? 134 00:08:17,790 --> 00:08:19,665 Nå, så tænk på super enkel aritmetiske 135 00:08:19,665 --> 00:08:22,219 at vi alle har været gjort i årevis nu. 136 00:08:22,219 --> 00:08:24,510 Effektivt, hvis du har fået en en i hundreder sted, 137 00:08:24,510 --> 00:08:29,610 du gør den hurtig math 100 gange 1 plus 10 gange 2-- 138 00:08:29,610 --> 00:08:33,059 fordi to er i snesevis place-- plus 1 gange 3-- 139 00:08:33,059 --> 00:08:34,830 fordi tre er i dem sted. 140 00:08:34,830 --> 00:08:37,039 Så selvfølgelig, hvis vi faktisk multipliceres ud, 141 00:08:37,039 --> 00:08:39,600 hvad vi egentlig repræsenterer med denne pattern-- en 142 00:08:39,600 --> 00:08:46,150 to three-- er 100 plus 20 plus 3, som naturligvis er 123. 143 00:08:46,150 --> 00:08:51,130 >> Nu er binær, og computere virkelig, fundamentalt taler samme sprog 144 00:08:51,130 --> 00:08:51,680 at vi gør. 145 00:08:51,680 --> 00:08:53,400 De har blot en mindre alfabet. 146 00:08:53,400 --> 00:08:57,100 Så computere har kun nuller og dem til deres rådighed. 147 00:08:57,100 --> 00:09:02,500 Så mens vi mennesker har i det væsentlige beføjelser 10 i hver af disse places-- 148 00:09:02,500 --> 00:09:06,810 10 til nul, 10 til den ene, ti til de to, der giver dig 110 og 100 149 00:09:06,810 --> 00:09:07,700 henholdsvis. 150 00:09:07,700 --> 00:09:12,140 >> Fordi computere har kun to værdier de kan forstå, nul og én, 151 00:09:12,140 --> 00:09:16,600 de skal bruge forskellige værdier i disse kolonner, en, to, fire. 152 00:09:16,600 --> 00:09:20,480 Og hvis vi holdt, otte, 16, 32, 64 og så videre. 153 00:09:20,480 --> 00:09:24,220 Men mønsteret og mentalitet er nøjagtig den samme. 154 00:09:24,220 --> 00:09:27,340 >> Så ved denne logik, nogen, hvordan ville Jeg går om der repræsenterer antallet 155 00:09:27,340 --> 00:09:28,530 et binært? 156 00:09:28,530 --> 00:09:33,080 Hvis du har aldrig selv tænkt på dette før, hvad er din tarm sige? 157 00:09:33,080 --> 00:09:33,777 >> Publikum: One. 158 00:09:33,777 --> 00:09:34,610 David J. MALAN: One. 159 00:09:34,610 --> 00:09:35,660 Præcis. 160 00:09:35,660 --> 00:09:38,100 Vi har bare brug for en en i dem sted fordi nuller 161 00:09:38,100 --> 00:09:40,610 tilstrækkelig til at give os hverken fire eller to. 162 00:09:40,610 --> 00:09:42,440 Så én gange én er lig én. 163 00:09:42,440 --> 00:09:43,940 Nu tingene bliver lidt interessant. 164 00:09:43,940 --> 00:09:46,830 Hvis jeg ønsker at repræsentere i binær antallet to-- men 165 00:09:46,830 --> 00:09:49,790 igen, selvom du har aldrig talt dette sprog før, 166 00:09:49,790 --> 00:09:54,680 hvordan gør vi repræsenterer i binær den værdi, vi mennesker kender som to? 167 00:09:54,680 --> 00:09:55,570 Nul et nul. 168 00:09:55,570 --> 00:09:57,620 Bare sætte den i kolonne, du ønsker det. 169 00:09:57,620 --> 00:09:59,560 >> Nu er det ved at blive ret let nok nu. 170 00:09:59,560 --> 00:10:02,950 Så hvis jeg ønsker at repræsentere three-- der er ingen tre kolonne. 171 00:10:02,950 --> 00:10:06,770 Så igen, jeg kan nu tilføje disse værdier sammen ved at sætte en en her. 172 00:10:06,770 --> 00:10:10,320 Så 2 gange 1 plus 1 gange 1 er naturligvis 3. 173 00:10:10,320 --> 00:10:13,480 >> Nu tingene bliver lidt sjov i at dem nu blevet nuller. 174 00:10:13,480 --> 00:10:15,480 Og til at repræsentere fire, får jeg dette. 175 00:10:15,480 --> 00:10:19,310 Og hvis vi tilvækst langsomt her-- der ville være fem. 176 00:10:19,310 --> 00:10:20,700 Dette ville være seks. 177 00:10:20,700 --> 00:10:22,100 Dette ville være syv. 178 00:10:22,100 --> 00:10:25,310 >> Men nu har jeg synes at have løber ind i et problem. 179 00:10:25,310 --> 00:10:30,520 Hvordan kan jeg gå om at repræsentere eight-- ville være den næste værdi. 180 00:10:30,520 --> 00:10:31,900 Ja, så har vi brug for en ny bits. 181 00:10:31,900 --> 00:10:33,899 Og, ja, hvis du har hørt denne sætning før, 182 00:10:33,899 --> 00:10:37,380 bits, det er bare en forkortelse for binært ciffer nul eller én. 183 00:10:37,380 --> 00:10:41,520 >> Og så jeg tilfældigvis at repræsentere kun tre sådanne bit her. 184 00:10:41,520 --> 00:10:44,900 Men hvis jeg havde en måde at lagre ikke tre forskellige bits, men fire, 185 00:10:44,900 --> 00:10:47,250 sikkert jeg kunne repræsentere otte, og derefter ni, og derefter 186 00:10:47,250 --> 00:10:49,400 10, og endnu højere og højere. 187 00:10:49,400 --> 00:10:52,140 >> Men det kalder derefter i spørgsmålet om, hvordan vi kan 188 00:10:52,140 --> 00:10:54,540 gå om repræsenterer disse ting i første omgang. 189 00:10:54,540 --> 00:10:56,950 Det er én ting at tegne dem op her på et dias, 190 00:10:56,950 --> 00:11:00,660 men hvordan kan du repræsentere dem hvis du er en mekanisk enhed? 191 00:11:00,660 --> 00:11:04,390 Hvad er en computer gør for at repræsentere input og output, som 192 00:11:04,390 --> 00:11:09,020 fundamentalt definere beregning ved slutningen af ​​dagen? 193 00:11:09,020 --> 00:11:12,090 >> Jamen, hvad med noget super enkel som dette? 194 00:11:12,090 --> 00:11:13,200 Det er bare en pære. 195 00:11:13,200 --> 00:11:15,460 Og jeg kan udløse denne pære til at gå på 196 00:11:15,460 --> 00:11:17,920 ved at dreje nogle el på og tillader elektroner 197 00:11:17,920 --> 00:11:22,585 at strømme igennem, som ændrer sin stat eller dens værdi, så at sige. 198 00:11:22,585 --> 00:11:24,460 For eksempel er en gammel skole bordlampe 199 00:11:24,460 --> 00:11:27,250 her med et sådant pære inde i den. 200 00:11:27,250 --> 00:11:29,940 Og lige nu er det ikke virkelig gør noget nyttigt. 201 00:11:29,940 --> 00:11:32,680 Men så snart jeg sætter det i en stikkontakt 202 00:11:32,680 --> 00:11:36,390 og derefter bruge denne switch-- eller vi kan endda kalde det en transistor 203 00:11:36,390 --> 00:11:39,970 eller tænke på det som such-- Jeg kan nu repræsentere enten 204 00:11:39,970 --> 00:11:44,120 denne værdi, hvor lyset løgets naturligvis slukket, eller denne værdi. 205 00:11:44,120 --> 00:11:46,060 Denne værdi eller denne værdi. 206 00:11:46,060 --> 00:11:47,520 Denne værdi og så videre. 207 00:11:47,520 --> 00:11:51,220 >> Så inde i en computer, formentlig, er langt mindre stykker hardware, 208 00:11:51,220 --> 00:11:52,970 men at der ved udgangen af dagen simpelthen 209 00:11:52,970 --> 00:11:55,360 at bruge electricity-- måske fange det-- 210 00:11:55,360 --> 00:11:59,730 og derefter enten holde noget på eller holde noget væk. 211 00:11:59,730 --> 00:12:02,021 Selvfølgelig er dette ikke særligt interessant at gøre 212 00:12:02,021 --> 00:12:03,270 med blot en enkelt pære. 213 00:12:03,270 --> 00:12:06,726 >> I virkeligheden, hvor højt kan jeg tælle på binær med denne bordlampe her? 214 00:12:06,726 --> 00:12:07,420 >> Publikum: One. 215 00:12:07,420 --> 00:12:08,545 >> David J. MALAN: En, højre? 216 00:12:08,545 --> 00:12:11,020 Jeg har brug for mere skrivebord lamper, hvis jeg faktisk ønsker at tælle højere. 217 00:12:11,020 --> 00:12:12,210 Men vi kan gøre det bedre end det. 218 00:12:12,210 --> 00:12:14,460 Fordi pærer, vi har lagt i disse ting 219 00:12:14,460 --> 00:12:17,730 er faktisk mere avanceret pærer end Gårsdagens ville tillade. 220 00:12:17,730 --> 00:12:20,310 Og de er faktisk netværksbaserede pærer. 221 00:12:20,310 --> 00:12:23,160 Og klaser af virksomheder gøre disse ting i disse dage. 222 00:12:23,160 --> 00:12:25,190 >> Men det viser sig, at dette især 223 00:12:25,190 --> 00:12:27,680 kommer med en funktion, hvormed du kan ændre sine farver. 224 00:12:27,680 --> 00:12:30,810 Så for eksempel, hvis du smykket dit kollegieværelse 225 00:12:30,810 --> 00:12:33,200 med et par af disse lys løg, afhængigt af dit humør, 226 00:12:33,200 --> 00:12:35,366 afhængigt af hvem der kommer ind, afhængig af vejret, 227 00:12:35,366 --> 00:12:37,360 afhængigt af tidspunktet af dagen, kan du faktisk 228 00:12:37,360 --> 00:12:40,300 ændre farverne pærer i dit værelse. 229 00:12:40,300 --> 00:12:43,740 Og det er fordi disse lys pærer og andre som det har, hvad der er 230 00:12:43,740 --> 00:12:48,010 kaldet et API, en ansøgning programming interface, som 231 00:12:48,010 --> 00:12:50,920 er et emne, som du vil være godt bekendt med ved semesters slutning. 232 00:12:50,920 --> 00:12:53,710 >> Og dette er bare en fancy, kryptisk måde at sige, 233 00:12:53,710 --> 00:12:57,570 du kan programmere disse lys løg til at gøre dit bud. 234 00:12:57,570 --> 00:13:00,360 Du kan sende dem beskeder ligesom dig, et menneske, 235 00:13:00,360 --> 00:13:03,640 kan sende en besked til en webserver sige, giv mig dagens nyheder 236 00:13:03,640 --> 00:13:05,110 eller give mig min e-mail. 237 00:13:05,110 --> 00:13:08,010 >> Du kan sende mere mystisk beskeder til disse pærer 238 00:13:08,010 --> 00:13:09,700 at sige, at tænde og slukke. 239 00:13:09,700 --> 00:13:11,370 Men det er ikke alt, interessant. 240 00:13:11,370 --> 00:13:14,280 Man kan sige, tænd rød, tænde grøn, tænd blå, 241 00:13:14,280 --> 00:13:15,990 alle med samme pære. 242 00:13:15,990 --> 00:13:20,990 Og du kan endda, med en smule mere kyndige, siger, drej dig selv til blå 243 00:13:20,990 --> 00:13:24,710 når det er en dyster dag udenfor, for eksempel. 244 00:13:24,710 --> 00:13:27,910 Det kan faktisk lappe ind en vejr-API og finde ud 245 00:13:27,910 --> 00:13:32,260 hvordan vejret er, tidspunktet på dagen, eller andre sådanne udløsere. 246 00:13:32,260 --> 00:13:35,550 >> Så i virkeligheden to CS50 egne medarbejdere, 247 00:13:35,550 --> 00:13:38,827 Dan Bradley og Ansel Duff her, venligt indkøbt 248 00:13:38,827 --> 00:13:40,410 os en hel masse af disse pærer. 249 00:13:40,410 --> 00:13:42,910 Og de byggede CS50 s første nogensinde binære løg, 250 00:13:42,910 --> 00:13:46,850 hvor vi har repræsenteret her-- med disse legesyg lille magnets-- 251 00:13:46,850 --> 00:13:49,780 de forskellige pladsholdere vi hentydet til bare en smule siden. 252 00:13:49,780 --> 00:13:52,572 >> Så måde herovre er den dem sted, to, fire. 253 00:13:52,572 --> 00:13:54,030 Og vi kunne ikke se højere end det. 254 00:13:54,030 --> 00:13:55,613 Men selvfølgelig, de er potenser af to. 255 00:13:55,613 --> 00:13:59,490 Otte, 16, 32, 64, og 128. 256 00:13:59,490 --> 00:14:03,320 Så hvis jeg nu ønsker at være en smule mere avanceret end at bruge denne gamle skole switch, 257 00:14:03,320 --> 00:14:07,310 Jeg har her på denne iPad en super enkel brugerflade 258 00:14:07,310 --> 00:14:10,440 at Dan Bradley, en tidligere studerende og underviser nu fyr, 259 00:14:10,440 --> 00:14:13,510 programed bruge nogle HTML og JavaScript, som 260 00:14:13,510 --> 00:14:15,685 er markup og programmering sprog hhv. 261 00:14:15,685 --> 00:14:17,560 Og du kan sikkert see-- selv i tilbage-- 262 00:14:17,560 --> 00:14:21,670 der er et stort plus og et stort minus, plus en knap for hver af disse pærer. 263 00:14:21,670 --> 00:14:25,740 Og hvad dette vil tillade mig at gør, er for eksempel, skal du klikke på plus 264 00:14:25,740 --> 00:14:28,250 og udgør nu af Selvfølgelig hvad nummer? 265 00:14:28,250 --> 00:14:28,750 One. 266 00:14:28,750 --> 00:14:30,220 Og jeg kan ramme det igen. 267 00:14:30,220 --> 00:14:31,480 To. 268 00:14:31,480 --> 00:14:32,800 Tre. 269 00:14:32,800 --> 00:14:33,950 Fire. 270 00:14:33,950 --> 00:14:35,200 Five. 271 00:14:35,200 --> 00:14:36,360 Seks. 272 00:14:36,360 --> 00:14:36,880 Syv. 273 00:14:36,880 --> 00:14:40,740 >> Og her nu får vi at rollover men vi har en fjerde bit dette tidspunkt, 274 00:14:40,740 --> 00:14:42,180 så nu har vi otte. 275 00:14:42,180 --> 00:14:44,000 Så vi kunne gøre det i temmelig lang tid. 276 00:14:44,000 --> 00:14:46,530 I virkeligheden, som en side, hvor højt kunne vi tælle? 277 00:14:46,530 --> 00:14:48,318 Anyone? 278 00:14:48,318 --> 00:14:49,270 >> Publikum: 255. 279 00:14:49,270 --> 00:14:51,420 >> David J. MALAN: 255, ikke? 280 00:14:51,420 --> 00:14:54,900 Må ikke bekymre dig for meget om matematik for nu, men det er en smuk anstændigt nummer. 281 00:14:54,900 --> 00:14:59,140 Men det rent faktisk bundet bare hvor mange stykker information, 282 00:14:59,140 --> 00:15:01,760 som et brev eller en grafisk at vi kunne repræsentere. 283 00:15:01,760 --> 00:15:02,697 >> Men ligegyldigt for nu. 284 00:15:02,697 --> 00:15:04,530 Jeg har tænkt mig at gå videre og slukke for dem alle. 285 00:15:04,530 --> 00:15:09,670 Og hvis jeg kunne, ville jeg gerne bede om en frivillig, vores første volunteer-- 286 00:15:09,670 --> 00:15:11,342 åh, hello-- på scenen. 287 00:15:11,342 --> 00:15:14,050 Fangsten er du nødt til at være komfortabel vises, som du tydeligt 288 00:15:14,050 --> 00:15:17,421 er foran alle dine klassekammerater, samt på internettet. 289 00:15:17,421 --> 00:15:20,420 Og lad mig se lidt ud over det-- hvad med her i den hvide skjorte? 290 00:15:20,420 --> 00:15:20,920 Og hånden op. 291 00:15:20,920 --> 00:15:22,071 Kom op. 292 00:15:22,071 --> 00:15:22,820 Hvad er dit navn? 293 00:15:22,820 --> 00:15:23,760 >> Publikum: Jackie. 294 00:15:23,760 --> 00:15:24,718 >> David J. MALAN: Jackie. 295 00:15:24,718 --> 00:15:25,820 Jackie, kom op. 296 00:15:25,820 --> 00:15:29,820 Så hvad er der også på dette iPad er en knap kaldet Game Mode. 297 00:15:29,820 --> 00:15:32,570 Og denne Game Mode er vil tillade mig at indtaste 298 00:15:32,570 --> 00:15:35,780 på forhånd en bestemt decimal nummer, numrene er vi mennesker 299 00:15:35,780 --> 00:15:36,760 bekendt med. 300 00:15:36,760 --> 00:15:39,820 Og så vil du blive udfordret her for at bruge knapperne 301 00:15:39,820 --> 00:15:42,140 på top-- en for hver af disse bulbs-- 302 00:15:42,140 --> 00:15:45,050 til rent faktisk at finde ud af mønster af pærer 303 00:15:45,050 --> 00:15:46,970 der repræsenterer det pågældende nummer. 304 00:15:46,970 --> 00:15:47,790 >> Og jeg er ked af det, hvad var dit navn igen? 305 00:15:47,790 --> 00:15:48,250 >> Publikum: Jackie. 306 00:15:48,250 --> 00:15:48,620 >> David J. MALAN: Jackie. 307 00:15:48,620 --> 00:15:48,920 Okay. 308 00:15:48,920 --> 00:15:49,740 Godt at møde dig. 309 00:15:49,740 --> 00:15:54,580 >> Så lad mig gå videre og program for verden at se nummer 15. 310 00:15:54,580 --> 00:15:56,360 Vi vil holde det lille ved første her. 311 00:15:56,360 --> 00:15:58,240 Og jeg har tænkt mig at gå ind i game mode. 312 00:15:58,240 --> 00:16:01,160 Og jeg har tænkt mig at præcisere, give os nummer 15. 313 00:16:01,160 --> 00:16:01,900 >> OK. 314 00:16:01,900 --> 00:16:05,510 Og nu med alle watching-- hvis du vil måske stå på denne måde, 315 00:16:05,510 --> 00:16:09,970 fordi det vil linje up-- gå videre og skifte de otte knapper langs toppen 316 00:16:09,970 --> 00:16:12,530 at tænde pærerne på eller fra som du ønsker det. 317 00:16:12,530 --> 00:16:13,530 >> Publikum: OK. 318 00:16:13,530 --> 00:16:17,720 >> David J. MALAN: Og ingen snyd ved at ramme plus 15 gange. 319 00:16:17,720 --> 00:16:19,275 Åh, vil vi gøre det. 320 00:16:19,275 --> 00:16:20,069 >> PUBLIKUM: Åh, vent. 321 00:16:20,069 --> 00:16:20,610 Jeg er så ked af det. 322 00:16:20,610 --> 00:16:22,660 >> David J. MALAN: Du kan også slå pærer lys på individuelt 323 00:16:22,660 --> 00:16:24,076 med hver af disse knapper på toppen. 324 00:16:24,076 --> 00:16:24,844 PUBLIKUM: Åh, OK. 325 00:16:24,844 --> 00:16:27,429 Så det ville være like-- 326 00:16:27,429 --> 00:16:28,220 David J. MALAN: OK. 327 00:16:28,220 --> 00:16:29,100 Så nu har vi otte. 328 00:16:29,100 --> 00:16:31,280 Så lad os stoppe den publikum til at engagere sig her. 329 00:16:31,280 --> 00:16:34,300 Hvilket nummer er Jackie øjeblikket repræsenterer? 330 00:16:34,300 --> 00:16:34,800 11. 331 00:16:34,800 --> 00:16:35,730 Så vi er der næsten. 332 00:16:35,730 --> 00:16:38,360 333 00:16:38,360 --> 00:16:39,630 Og fremragende. 334 00:16:39,630 --> 00:16:41,487 Så vi har vores første vinder. 335 00:16:41,487 --> 00:16:42,445 Tillykke med det. 336 00:16:42,445 --> 00:16:48,200 >> Og vi troede, vi ville have nogle fantastiske foræring. 337 00:16:48,200 --> 00:16:50,860 Hvis du gerne vil være en sådan kollegieværelse her på campus, 338 00:16:50,860 --> 00:16:56,126 du kan selv have et afsluttende projekt bruger nu denne API, takket være Jackie. 339 00:16:56,126 --> 00:16:57,050 Så nu-- 340 00:16:57,050 --> 00:16:58,902 >> [Applaus] 341 00:16:58,902 --> 00:17:01,690 342 00:17:01,690 --> 00:17:04,839 >> --if vi kunne, en mere sådan rundt på dette. 343 00:17:04,839 --> 00:17:07,690 Åh, nu alle ønsker nogle pærer. 344 00:17:07,690 --> 00:17:11,790 For den såkaldte hacker udgave, vi kommer til at rampe op en-- åh, 345 00:17:11,790 --> 00:17:12,770 yeah, uforpligtende. 346 00:17:12,770 --> 00:17:16,010 Jeg tror, ​​du kommer op nu Hvis din hånd kommer ned. 347 00:17:16,010 --> 00:17:16,800 Hvad er dit navn? 348 00:17:16,800 --> 00:17:17,424 >> Publikum: Alex. 349 00:17:17,424 --> 00:17:19,440 David J. MALAN: Alex, kom herover. 350 00:17:19,440 --> 00:17:26,190 Så for Alex, vil vi program i en lidt større antal. 351 00:17:26,190 --> 00:17:27,790 Måske i orden. 352 00:17:27,790 --> 00:17:29,110 Tallet 50. 353 00:17:29,110 --> 00:17:29,744 >> Publikum: OK. 354 00:17:29,744 --> 00:17:31,660 David J. MALAN: Men, som Jeg sagde-- og du måske 355 00:17:31,660 --> 00:17:33,580 ønsker at stå her, så at knapperne linje op 356 00:17:33,580 --> 00:17:37,115 som du ville expect-- men jeg gjorde kalde dette hacker udgave. 357 00:17:37,115 --> 00:17:47,125 Så-- held og lykke! 358 00:17:47,125 --> 00:17:48,416 >> [Latter] 359 00:17:48,416 --> 00:17:58,570 360 00:17:58,570 --> 00:18:02,050 >> Du vil være i stand til at vende dem fra, hvis du-- OK. 361 00:18:02,050 --> 00:18:02,880 Fremragende. 362 00:18:02,880 --> 00:18:03,675 Wonderful. 363 00:18:03,675 --> 00:18:04,341 Tillykke med det. 364 00:18:04,341 --> 00:18:08,730 >> [Applaus] 365 00:18:08,730 --> 00:18:10,355 Jeg formoder, at jeg skulle betale op. 366 00:18:10,355 --> 00:18:11,830 Tillykke til Alex så godt. 367 00:18:11,830 --> 00:18:12,330 OK. 368 00:18:12,330 --> 00:18:15,550 >> Så den ultimative takeaway her er forhåbentlig helt ærligt, 369 00:18:15,550 --> 00:18:18,109 den simplicity-- den enkelhed, hvormed 370 00:18:18,109 --> 00:18:20,650 du kan få nogle nice lys løg, tilsyneladende i [uhørligt]. 371 00:18:20,650 --> 00:18:23,000 Men de repræsenterer, i sidste ende, det samme ideer 372 00:18:23,000 --> 00:18:26,310 som vi mennesker er allerede alt for velkendte. 373 00:18:26,310 --> 00:18:28,660 Så hvad kunne det næste trin være i progressionen 374 00:18:28,660 --> 00:18:30,920 for at forsøge at gøre noget interessant med data 375 00:18:30,920 --> 00:18:34,950 og som repræsenterer input, der ikke bare numre, men er måske bogstaver eller mere? 376 00:18:34,950 --> 00:18:37,820 >> Tja, det viser sig, at computeren verden i mange år, 377 00:18:37,820 --> 00:18:43,300 simpelthen vedtaget en vilkårlig, men en ensartet standard, der kortlægger tal 378 00:18:43,300 --> 00:18:44,610 til bogstaver i alfabetet. 379 00:18:44,610 --> 00:18:47,120 For eksempel her er en uddrag fra denne kortlægning. 380 00:18:47,120 --> 00:18:48,350 Det hedder ASCII. 381 00:18:48,350 --> 00:18:53,220 A-S-C-I-I. Og det er simpelthen en tabel, der kortlægger store bogstaver letters-- 382 00:18:53,220 --> 00:18:56,600 i denne case-- til decimal tal. 383 00:18:56,600 --> 00:18:57,890 >> Men hvad er konsekvenserne? 384 00:18:57,890 --> 00:19:01,090 Tja, hvis du rent faktisk ønsker at repræsentere noget som en e-mail eller noget tekst 385 00:19:01,090 --> 00:19:03,310 på en webside, du naturligvis ønsker at vise 386 00:19:03,310 --> 00:19:06,100 de menneskelige bogstaver i alfabet, ikke tal. 387 00:19:06,100 --> 00:19:09,140 Så afhængigt af forbindelse med programmet 388 00:19:09,140 --> 00:19:12,600 at en bruger ved hjælp af, hvis det er en webbrowser eller e-mail klient, 389 00:19:12,600 --> 00:19:16,090 numre kan sikkert være tolkes som bogstaver. 390 00:19:16,090 --> 00:19:20,290 Det vil sige, mønstre af bits kan let tolkes som bogstaver. 391 00:19:20,290 --> 00:19:24,700 >> Og så, hvad vi kan få er bogstavet A væsen 392 00:19:24,700 --> 00:19:28,410 repræsenteret 65, B repræsenteres som 66. 393 00:19:28,410 --> 00:19:30,900 Så hvis vi har en super korte ord, ligesom hej, 394 00:19:30,900 --> 00:19:35,740 hvad en computer ville i sidste ende butik i decimal, men virkelig i binær, 395 00:19:35,740 --> 00:19:40,070 bruge nogle sekvens af bits, der kan mobilisere en smule af elektricitet på en måde, 396 00:19:40,070 --> 00:19:44,010 ville være de to tal 72 og 73. 397 00:19:44,010 --> 00:19:46,780 >> Men det mønster af bit, repræsenterer disse værdier. 398 00:19:46,780 --> 00:19:49,820 Så disse så er, hvordan vi kan repræsentere vores input og output. 399 00:19:49,820 --> 00:19:52,630 Og det tilstrækkeligt at sige, at vi kan gøre mere komplekse repræsentationer 400 00:19:52,630 --> 00:19:56,450 i sidste ende med ting som grafik, videoer, musik og meget mere 401 00:19:56,450 --> 00:19:58,190 som vi skal se senere i denne valgperiode. 402 00:19:58,190 --> 00:20:00,630 >> Så bare forlader derefter algoritmer, disse sæt 403 00:20:00,630 --> 00:20:03,490 instruktioner, som vi løse reelle problemer. 404 00:20:03,490 --> 00:20:05,820 Vi passerer input til algoritmer. 405 00:20:05,820 --> 00:20:09,630 Og de algoritmer producerer udgange, forhåbentlig korrekte udgange 406 00:20:09,630 --> 00:20:14,160 og forhåbentlig også effektivt ufarligt udgange. 407 00:20:14,160 --> 00:20:16,890 Med andre ord, det er én ting at implementere noget rigtigt. 408 00:20:16,890 --> 00:20:20,790 Det er en anden ting at gennemføre noget godt eller effektivt. 409 00:20:20,790 --> 00:20:23,690 >> For eksempel, en demonstration at vi er glade for i løbet 410 00:20:23,690 --> 00:20:24,460 er denne ene. 411 00:20:24,460 --> 00:20:26,345 Men disse ting bliver i stigende grad svært at finde. 412 00:20:26,345 --> 00:20:28,930 Men dette er faktisk en gammel skole telefonbog, inden i hvilken 413 00:20:28,930 --> 00:20:32,580 er 1000 plus sider navne og telefonnumre. 414 00:20:32,580 --> 00:20:34,830 Og hvis jeg ønskede at se op nogen i denne telefonbog, 415 00:20:34,830 --> 00:20:38,640 Jeg kunne simpelthen gøre en meget naiv algoritme. 416 00:20:38,640 --> 00:20:42,150 Jeg kunne åbne op til den første side, og Jeg kunne begynde at kigge efter, siger, nogen 417 00:20:42,150 --> 00:20:43,130 opkaldt Mike Smith. 418 00:20:43,130 --> 00:20:46,160 Og hvis han ikke er på den første side, jeg videre til den anden, 419 00:20:46,160 --> 00:20:49,120 og derefter til den tredje, og derefter til den fjerde, og så videre, 420 00:20:49,120 --> 00:20:51,430 indtil jeg endelig finde Mike Smith. 421 00:20:51,430 --> 00:20:53,010 >> Nu er, at algoritmen korrekt? 422 00:20:53,010 --> 00:20:53,896 >> Publikum: Ja. 423 00:20:53,896 --> 00:20:54,248 >> David J. MALAN: Ja. 424 00:20:54,248 --> 00:20:56,039 Hvis han er derinde, vil jeg sidst finde ham. 425 00:20:56,039 --> 00:20:58,820 Men det er velsagtens ikke meget effektiv, bestemt ikke hurtigt, 426 00:20:58,820 --> 00:21:01,200 fordi, min Gud, hvorfor er jeg spilde min tid spejlvende 427 00:21:01,200 --> 00:21:04,500 gennem alle disse sider, når jeg kunne sikkert gøre det fysisk hurtigere? 428 00:21:04,500 --> 00:21:08,210 >> Nå, en lille optimering, så at tale, måske ikke én side ad gangen, 429 00:21:08,210 --> 00:21:11,610 men to, fire, seks, otte, ti. 430 00:21:11,610 --> 00:21:12,725 Stadig korrekt? 431 00:21:12,725 --> 00:21:14,030 >> Publikum: Nej 432 00:21:14,030 --> 00:21:17,040 >> David J. MALAN: Så nej, hvis jeg for eksempel springe over Mike Smith. 433 00:21:17,040 --> 00:21:20,530 Men så længe jeg sikkerhedskopiere pedal én side, hvis jeg skyde ham, 434 00:21:20,530 --> 00:21:25,240 måske vi kunne korrigere det ellers kunne være en gotcha. 435 00:21:25,240 --> 00:21:26,020 >> Men er det bedre? 436 00:21:26,020 --> 00:21:27,469 Er det hurtigere? 437 00:21:27,469 --> 00:21:28,010 Jeg mener, ja. 438 00:21:28,010 --> 00:21:30,950 Det er bogstaveligt talt dobbelt så hurtigt hvis jeg gør to sider ad gangen. 439 00:21:30,950 --> 00:21:35,720 Så hvis jeg oprindeligt havde 1.000 sider, nu har jeg kun nødt til at vende 500 gange, 440 00:21:35,720 --> 00:21:39,429 ikke helt 1.000 sider til at få potentielt i værste fald 441 00:21:39,429 --> 00:21:41,220 til slutningen af ​​telefonen bog, hvor nogen 442 00:21:41,220 --> 00:21:44,380 Ligesom Mike Smith eller en person med et senere navn kan faktisk være. 443 00:21:44,380 --> 00:21:46,540 >> Men selvfølgelig, vi mennesker er bestemt ikke 444 00:21:46,540 --> 00:21:49,250 vil gøre det, i hvert fald ikke på dette tidspunkt i vores liv. 445 00:21:49,250 --> 00:21:51,454 Hvad er en rimelig menneske sandsynligvis kommer til at gøre? 446 00:21:51,454 --> 00:21:52,870 Publikum: Gå direkte til the9 S '. 447 00:21:52,870 --> 00:21:53,860 David J. MALAN: Gå direkte til S '? 448 00:21:53,860 --> 00:21:55,563 Hvordan kan jeg gå direkte til S '? 449 00:21:55,563 --> 00:21:57,342 >> Publikum: Riv det i halve. 450 00:21:57,342 --> 00:21:59,050 David J. MALAN: Jamen, der er ingen mærkning. 451 00:21:59,050 --> 00:22:02,116 Så, ja, hvis der var faktisk en etiket eller en klæbrig fane for S, 452 00:22:02,116 --> 00:22:03,240 vi skal hoppe lige der. 453 00:22:03,240 --> 00:22:05,420 Men det er temmelig uskadelige. 454 00:22:05,420 --> 00:22:08,480 Så det bedste jeg kan gøre, er groft til S sektion eller måske groft 455 00:22:08,480 --> 00:22:09,650 i midten. 456 00:22:09,650 --> 00:22:12,110 Men nøglen takeaway nu-- og intuition 457 00:22:12,110 --> 00:22:14,430 at du har taget for ydes for år probably-- 458 00:22:14,430 --> 00:22:17,103 er, at hvad gør du nu kender om dette problem? 459 00:22:17,103 --> 00:22:19,320 >> Publikum: [uhørligt] 460 00:22:19,320 --> 00:22:22,290 >> David J. MALAN: Mike Smith er sikkert ikke i denne halvdel af problemet 461 00:22:22,290 --> 00:22:25,600 fordi Smith kommer efter midten hvilket er omtrent M sektion, 462 00:22:25,600 --> 00:22:26,510 det synes at være. 463 00:22:26,510 --> 00:22:30,340 Så som du måske har set på Visitas, kan vi nu bogstaveligt 464 00:22:30,340 --> 00:22:31,737 rive dette problem i halve. 465 00:22:31,737 --> 00:22:32,320 Publikum: Woo! 466 00:22:32,320 --> 00:22:33,690 David J. MALAN: Det er bliver lettere og lettere. 467 00:22:33,690 --> 00:22:34,666 [Applaus] 468 00:22:34,666 --> 00:22:36,618 Værsgo. 469 00:22:36,618 --> 00:22:39,060 [Latter] 470 00:22:39,060 --> 00:22:41,870 Og nu er jeg fundamentalt har det samme problem, 471 00:22:41,870 --> 00:22:43,866 men det er bogstaveligt talt halvt så stort. 472 00:22:43,866 --> 00:22:45,240 Jeg er stadig på udkig efter Mike Smith. 473 00:22:45,240 --> 00:22:47,950 Og jeg tør sige, jeg kan stadig efter ham på samme måde, 474 00:22:47,950 --> 00:22:51,200 opdele problemet i halve igen, tåreflåd problemet igen 475 00:22:51,200 --> 00:22:54,140 i halve, som nu efterlader mig med et problem en fjerdedel af størrelsen, 476 00:22:54,140 --> 00:22:58,710 dramatisk smide at halvdelen væk, og gentage denne proces igen og igen 477 00:22:58,710 --> 00:23:01,150 og igen, kigger ned på hvert punkt for at se 478 00:23:01,150 --> 00:23:03,400 hvis Mike Smith er på den pågældende side. 479 00:23:03,400 --> 00:23:06,190 >> Nu, hvis jeg gør det rigtigt, i sidste ende finder jeg mig selv 480 00:23:06,190 --> 00:23:11,085 med kun én side, hvor Mike Smith er, hvis han er faktisk i telefonbogen. 481 00:23:11,085 --> 00:23:13,510 Selvfølgelig kunne jeg aldrig kalde Mike igen. 482 00:23:13,510 --> 00:23:18,800 Men pointen her er, at hvis vi begyndte med 1.000 sider, min første algoritme, 483 00:23:18,800 --> 00:23:21,620 flip side, måske 1.000 gange-- absolut mindre, fordi det er 484 00:23:21,620 --> 00:23:26,430 et navn og ikke en Z navn, men som mange som 1.000 sider potentielt. 485 00:23:26,430 --> 00:23:27,590 >> Anden algoritme, bedre. 486 00:23:27,590 --> 00:23:28,480 500 sider. 487 00:23:28,480 --> 00:23:31,230 Tredje algoritme, selvom, hvor mange skridt ville det 488 00:23:31,230 --> 00:23:35,520 tage for at opdele en 1.000 side telefonbog i halvdelen sådan? 489 00:23:35,520 --> 00:23:37,000 10, give eller tage. 490 00:23:37,000 --> 00:23:40,770 Så kun ved at bladre gennem det telefonbog, dykning og erobre, 491 00:23:40,770 --> 00:23:46,130 så at sige, 10 gange, vil jeg gøre min vej ned til blot en enkelt side. 492 00:23:46,130 --> 00:23:48,880 >> Og så vi kan fange denne intuition nu lidt grafisk 493 00:23:48,880 --> 00:23:51,320 hvis du lige overveje denne super simpel graf. 494 00:23:51,320 --> 00:23:55,470 Vi er på x-aksen, eller horisontal akse, er på størrelse med mit problem, 495 00:23:55,470 --> 00:23:57,100 antallet af sider i telefonbogen. 496 00:23:57,100 --> 00:23:59,040 Og dataloger generelt gerne opfordre 497 00:23:59,040 --> 00:24:02,180 størrelsen af ​​et problem n, hvor n er blot nogle variabel, 498 00:24:02,180 --> 00:24:04,310 represents-- i denne case-- antal sider. 499 00:24:04,310 --> 00:24:07,412 >> Den lodrette eller y-aksen, her er vil være tid til at løse, 500 00:24:07,412 --> 00:24:09,870 måske det antal sider omdrejninger, måske det antal sekunder 501 00:24:09,870 --> 00:24:11,960 eller minutter, uanset din måleenhed er. 502 00:24:11,960 --> 00:24:14,337 Og så denne røde linje repræsenterer den første algoritme, 503 00:24:14,337 --> 00:24:16,670 fordi der er en for en forholdet mellem antal 504 00:24:16,670 --> 00:24:18,880 sider og mængden af ​​tid, det tager. 505 00:24:18,880 --> 00:24:22,240 >> Hvis Verizon fordobler antallet af sider i telefonbogen til næste år, 506 00:24:22,240 --> 00:24:24,590 min kører time-- den tid, der kræves til at udføre 507 00:24:24,590 --> 00:24:27,610 at første algorithm-- fordobler i værste fald. 508 00:24:27,610 --> 00:24:30,690 Men den anden algoritme, hvor jeg flippe med to, 509 00:24:30,690 --> 00:24:33,650 kræver mindre tid til en given størrelse problem. 510 00:24:33,650 --> 00:24:36,090 Så hvis jeg har denne mange sider her-- varsel 511 00:24:36,090 --> 00:24:38,870 at den gule linje foreslår mindre tid til at løse. 512 00:24:38,870 --> 00:24:42,490 Og ja, det repræsenterer, vi vil sige, n mere end to. 513 00:24:42,490 --> 00:24:47,717 >> Men hvad er formen af ​​den tredje og sidste kurve kommer til at se ud? 514 00:24:47,717 --> 00:24:50,800 Ja, det faktisk kommer til at look-- jeg ved ikke, hvad du ville sige. 515 00:24:50,800 --> 00:24:52,300 Men lad os se hvad du ville sige. 516 00:24:52,300 --> 00:24:53,280 >> Publikum: Sådan. 517 00:24:53,280 --> 00:24:57,060 >> David J. MALAN: Det kommer til at ligne dette, en logaritmisk slope-- exactly-- 518 00:24:57,060 --> 00:24:59,770 hvorved du har denne nysgerrig skråning. 519 00:24:59,770 --> 00:25:01,235 Det er ikke længere en lige linje. 520 00:25:01,235 --> 00:25:05,000 Og hvad er overbevisende ved det er, at selvom grafen er nu afbrudt, 521 00:25:05,000 --> 00:25:07,790 du kan ekstrapolere i din imod, at den grønne linje er ikke 522 00:25:07,790 --> 00:25:10,060 vil stige i højde alt, meget 523 00:25:10,060 --> 00:25:13,500 som du gå videre ned det vandrette akse. 524 00:25:13,500 --> 00:25:15,890 >> Faktisk Verizon, for Eksempelvis kunne fordoble 525 00:25:15,890 --> 00:25:19,100 antallet af sider i telefonens bog mellem dette år og næste år 526 00:25:19,100 --> 00:25:22,140 fra 1000 til 2000 sider, men nogen big deal. 527 00:25:22,140 --> 00:25:24,960 Med denne tredje og sidste der er en intuitiv algoritme 528 00:25:24,960 --> 00:25:26,209 opdele og erobre. 529 00:25:26,209 --> 00:25:29,000 Det kommer til at tage mig, hvor mange flere trin næste år at finde nogen 530 00:25:29,000 --> 00:25:29,700 lide Mike Smith? 531 00:25:29,700 --> 00:25:30,560 >> Publikum: One. 532 00:25:30,560 --> 00:25:31,230 >> David J. MALAN: Der er kun én. 533 00:25:31,230 --> 00:25:34,430 Og de kan firedoble det, er det kommer til at tage mig blot to flere trin 534 00:25:34,430 --> 00:25:35,210 og så videre. 535 00:25:35,210 --> 00:25:38,730 Og så dette er bevis på bare hvordan nogle omhyggelig design 536 00:25:38,730 --> 00:25:42,437 og nogle forståelse for, hvad Deres input er kan gøre det endnu bedre. 537 00:25:42,437 --> 00:25:44,270 Nu er vi snyder en lidt i den forstand 538 00:25:44,270 --> 00:25:46,350 at vi udnytte en antagelse. 539 00:25:46,350 --> 00:25:48,500 Hvad er min antagelse om vores telefonbog 540 00:25:48,500 --> 00:25:52,720 der tillod mig at dele og erobre i denne intuitive og stadig korrekt måde? 541 00:25:52,720 --> 00:25:53,705 >> Publikum: [uhørligt] 542 00:25:53,705 --> 00:25:54,580 David J. MALAN: Ja. 543 00:25:54,580 --> 00:25:55,440 Så det blev bestilt. 544 00:25:55,440 --> 00:25:57,392 Det blev ordnet alfabetisk ved telefonbogen selskab. 545 00:25:57,392 --> 00:26:00,100 Hvis det var i tilfældig rækkefølge, som ville være et helvede af en telefonbog, 546 00:26:00,100 --> 00:26:02,850 men det ville helt sikkert ikke egner sig til algoritmen 547 00:26:02,850 --> 00:26:05,950 Jeg brugte, fordi du ville aldrig bare ske på tværs af Mike Smith 548 00:26:05,950 --> 00:26:09,210 hvis du holdt dividere i halvdelen på denne måde tilfældigt. 549 00:26:09,210 --> 00:26:12,060 >> Så lad os nu formalisere hvad er klart intuitiv. 550 00:26:12,060 --> 00:26:13,950 Så noget, der hedder pseudokode, hvor vi vil 551 00:26:13,950 --> 00:26:15,780 begynde nogle af vores indledende problemer. 552 00:26:15,780 --> 00:26:20,410 Og dette er en generisk måde at beskrive en algoritme eller et edb-program, 553 00:26:20,410 --> 00:26:24,150 ikke ved hjælp af C eller C ++, eller Java, eller noget bestemt sprog, 554 00:26:24,150 --> 00:26:27,430 men blot ved hjælp af engelsk, med som ethvert menneske kan være bekendt. 555 00:26:27,430 --> 00:26:31,220 >> Og vi kunne skrive pseudokode til dette problem som følger. 556 00:26:31,220 --> 00:26:33,520 Trin et, afhente telefonbogen. 557 00:26:33,520 --> 00:26:35,840 Trin to, åben for midten af ​​telefonbogen. 558 00:26:35,840 --> 00:26:37,730 Trin tre, se på navnene. 559 00:26:37,730 --> 00:26:40,630 Trin fire, hvis Smith er blandt names-- 560 00:26:40,630 --> 00:26:42,960 >> Og nu er det en interessant konstruktion. 561 00:26:42,960 --> 00:26:44,290 Det er en beslutning punkt. 562 00:26:44,290 --> 00:26:47,920 Det er en gaffel i vejen, hvis du vil en gren, så at sige. 563 00:26:47,920 --> 00:26:50,810 Så jeg har tænkt mig at indrykke blot ved konvention step-- 564 00:26:50,810 --> 00:26:53,950 ikke five-- som er at sige, at jeg ringer til Mike. 565 00:26:53,950 --> 00:26:57,290 Så denne indrykning, helt vilkårlig menneskelig konvention, men det er 566 00:26:57,290 --> 00:27:01,160 betød blot at formidle semantisk at hvis Smith er blandt navnene, 567 00:27:01,160 --> 00:27:03,310 så skal jeg ringe til Mike. 568 00:27:03,310 --> 00:27:06,630 >> I mellemtiden i trin seks, varsel at indrykningen er væk. 569 00:27:06,630 --> 00:27:10,980 Så ellers er den anden gaffel i vej, den anden vej, jeg vil kunne rejse. 570 00:27:10,980 --> 00:27:14,130 Så ellers hvis Smith er tidligere i bogen, hvad er 571 00:27:14,130 --> 00:27:16,964 mit næste skridt sandsynligvis kommer til at være her? 572 00:27:16,964 --> 00:27:18,380 Publikum: Du går til venstre side. 573 00:27:18,380 --> 00:27:21,004 David J. MALAN: Ja, så gå til den venstre halvdel af telefonbogen. 574 00:27:21,004 --> 00:27:24,140 Smid den højre halvdel, hvis Smith er tidligere i bogen. 575 00:27:24,140 --> 00:27:27,140 Så åben til midten af den venstre halvdel af bogen. 576 00:27:27,140 --> 00:27:30,240 >> Og derefter trin otte, gå til linje tre. 577 00:27:30,240 --> 00:27:34,520 Og det er en nysgerrig løkke jeg overtalelse, en rekursion så at sige. 578 00:27:34,520 --> 00:27:35,990 Men mere om det i fremtiden. 579 00:27:35,990 --> 00:27:39,590 >> Jeg bruger min samme algoritme, min samme pseudokode, 580 00:27:39,590 --> 00:27:43,020 at løse det samme problem igen fordi det eneste, der er ændret 581 00:27:43,020 --> 00:27:46,550 er størrelsen af ​​problemet, ikke mit mål, og ikke den person 582 00:27:46,550 --> 00:27:47,340 Jeg leder efter. 583 00:27:47,340 --> 00:27:51,610 Så jeg kan genbruge den algoritme at jeg allerede har defineret. 584 00:27:51,610 --> 00:27:53,580 >> Ellers hvis Smith er senere i book-- du måske 585 00:27:53,580 --> 00:27:56,200 guess-- åben til midten af højre halvdel af bogen. 586 00:27:56,200 --> 00:27:58,350 Og igen, gå til linje tre. 587 00:27:58,350 --> 00:28:01,480 Else-- hvad er den sidste linje i dette program vil være? 588 00:28:01,480 --> 00:28:03,580 Hvis han ikke er blandt de navne på den side, jeg er 589 00:28:03,580 --> 00:28:06,870 på, hvis han ikke er tidligere i bogen, og han er ikke senere 590 00:28:06,870 --> 00:28:09,899 i bogen, hvad gør jeg ved er sandt om Mike Smith nu? 591 00:28:09,899 --> 00:28:11,190 Publikum: Han er ikke i bogen. 592 00:28:11,190 --> 00:28:12,731 David J. MALAN: Han er ikke i bogen. 593 00:28:12,731 --> 00:28:16,040 Så det bedste jeg kan gøre er bare give op og stoppe dette program. 594 00:28:16,040 --> 00:28:16,540 Okay. 595 00:28:16,540 --> 00:28:20,350 Så på dette punkt, så lad os tage et hurtig rundtur til nogle af, hvad der venter. 596 00:28:20,350 --> 00:28:23,620 Og i virkeligheden, jeg sluttede her af en række CS50 personale. 597 00:28:23,620 --> 00:28:26,940 Hvis disse folk kunne alle slutte mig op her på scenen. 598 00:28:26,940 --> 00:28:28,900 >> [Applaus] 599 00:28:28,900 --> 00:28:35,280 600 00:28:35,280 --> 00:28:38,170 >> Mind dig, dette er kun en delmængde af CS50 personale, 601 00:28:38,170 --> 00:28:42,380 da vi hvert år har næsten 100 medarbejdere medlemmer i roller kursus assistenter, 602 00:28:42,380 --> 00:28:44,410 undervisning medmennesker, og meget mere. 603 00:28:44,410 --> 00:28:45,700 Kom op. 604 00:28:45,700 --> 00:28:48,820 Så de vil slutte sig til os her akavet for bare et øjeblik 605 00:28:48,820 --> 00:28:54,230 som vi giver en hurtig rundvisning i hvad bør du forvente her i løbet. 606 00:28:54,230 --> 00:28:59,640 >> Så først og fremmest har vi SAT / UNS som bedømmelsen mulighed i kurset. 607 00:28:59,640 --> 00:29:03,180 Dette menes bevidst at være en mulighed, hvorved 608 00:29:03,180 --> 00:29:05,570 hvis du er en smule urolig ved at være i kurset, 609 00:29:05,570 --> 00:29:09,390 og du behøver frygte failure-- selvom ærligt fiasko betyder såre din GPA, 610 00:29:09,390 --> 00:29:13,180 at få en B og ikke en A-- der er præcis, hvad, i hvert fald for en gateway 611 00:29:13,180 --> 00:29:15,750 kursus som CS50 og andre introduktionskurser, 612 00:29:15,750 --> 00:29:17,540 denne klassificering indstilling er beregnet til at tillade. 613 00:29:17,540 --> 00:29:19,930 >> Jeg helhjertet opfordre students-- især 614 00:29:19,930 --> 00:29:23,090 hvis den fence-- at starte kursus SAT / UNS, selv forblive SAT / UNS. 615 00:29:23,090 --> 00:29:27,310 Men du kan helt sikkert skifte til et brev klasse af den femte mandag i udtrykket. 616 00:29:27,310 --> 00:29:31,560 >> Helt ærligt, tilbage, når jeg var en freshman i 1995, 617 00:29:31,560 --> 00:29:34,630 Jeg selv ikke selv tage CS50 fordi jeg ikke komme op den frækhed 618 00:29:34,630 --> 00:29:36,540 til rent faktisk at sætte sine ben i klasseværelset. 619 00:29:36,540 --> 00:29:40,020 Det virkede et domæne alt for uvant for mig og virkelig kun 620 00:29:40,020 --> 00:29:43,080 for de af mine venner, helt ærligt, der havde været programmering 621 00:29:43,080 --> 00:29:45,570 da de var seks eller måske 10 år gammel. 622 00:29:45,570 --> 00:29:48,640 Og det var kun, fordi jeg var stand til at tage CS50 i min dag 623 00:29:48,640 --> 00:29:52,720 i den tilsvarende version af SAT / UNS-- bestået / ikke tilbage i day-- 624 00:29:52,720 --> 00:29:53,850 at selv jeg tog 50. 625 00:29:53,850 --> 00:29:57,440 Og en eller anden måde, er jeg her igen med jer i dag. 626 00:29:57,440 --> 00:30:00,690 >> Nu mellemtiden hvad du ellers skal huske på omkring 50 627 00:30:00,690 --> 00:30:01,910 er samtidig tilmelding. 628 00:30:01,910 --> 00:30:03,785 I modsætning til rygter om, at du måske har hørt, 629 00:30:03,785 --> 00:30:07,650 De kan faktisk samtidig tilmelde dig i CS50 og en anden klasse, 630 00:30:07,650 --> 00:30:12,150 mødes på den samme eller en vis overlapning tid som CS50 forelæsninger lige her. 631 00:30:12,150 --> 00:30:16,420 Se pensum for oplysningerne af gennemførelsen heraf. 632 00:30:16,420 --> 00:30:19,540 >> Forelæsninger, i mellemtiden, i modsætning til hvad der er officielt i kataloget, 633 00:30:19,540 --> 00:30:22,060 vil generelt kun mødes til blot en time. 634 00:30:22,060 --> 00:30:24,240 Til tider kan vi køre lidt lang. 635 00:30:24,240 --> 00:30:26,800 Men husk på, at det mål i CS50 foredrag 636 00:30:26,800 --> 00:30:28,980 er at give dig en begrebsmæssig oversigt, 637 00:30:28,980 --> 00:30:31,830 forhåbentlig nogle demonstrationer, måske endda nogle foræring, 638 00:30:31,830 --> 00:30:34,390 af, hvad der venter for ugen efter. 639 00:30:34,390 --> 00:30:37,730 >> Og så i foredrag, vil vi udforske disse emner og eksempler sammen, 640 00:30:37,730 --> 00:30:41,420 bringe de studerende op på scenen, og personale op på scenen så ofte som vi kan, 641 00:30:41,420 --> 00:30:43,740 for blot et par timer hver uge. 642 00:30:43,740 --> 00:30:47,435 Sektioner, i mellemtiden, vil være tilbydes af disse folk her-- mange 643 00:30:47,435 --> 00:30:50,060 af dem undervise medmennesker, nogle af dem naturligvis assistants-- vilje 644 00:30:50,060 --> 00:30:51,160 ske ugentligt. 645 00:30:51,160 --> 00:30:52,940 >> Og hvad er nøglen til at holde i tankerne er, at vi 646 00:30:52,940 --> 00:30:55,920 behøver have-- ikke ulig First Nætter, musikken klasse-- 647 00:30:55,920 --> 00:30:59,220 forskellige spor af sektioner til studerende mindre behagelig, mere 648 00:30:59,220 --> 00:31:01,150 komfortabel, og et sted i mellem. 649 00:31:01,150 --> 00:31:03,559 Og helt ærligt, du vide, hvis du er mindre komfortabel. 650 00:31:03,559 --> 00:31:05,600 Og du sikkert vide, hvis du er mere komfortabel. 651 00:31:05,600 --> 00:31:09,920 Og hvis du ikke er helt sikker på, du er definition et sted i mellem. 652 00:31:09,920 --> 00:31:12,850 Så når det drejer sig tid til sektion i en uge eller deromkring, pr pensum, 653 00:31:12,850 --> 00:31:14,070 Vi vil bede dig om, at spørgsmål. 654 00:31:14,070 --> 00:31:16,890 Og du kan selv vælge Baseret på din egen komfort niveau 655 00:31:16,890 --> 00:31:22,220 og være med students-- være med grøn dots-- samme komfort niveau til dig. 656 00:31:22,220 --> 00:31:25,710 >> I mellemtiden har vi problem sæt, der vil i sidste ende 657 00:31:25,710 --> 00:31:28,310 definere din oplevelse i dette kursus. 658 00:31:28,310 --> 00:31:30,370 De er tilbudt typisk i flere udgaver. 659 00:31:30,370 --> 00:31:34,150 En standard udgave, som vi forventer de fleste hver elev i løbet at tackle 660 00:31:34,150 --> 00:31:37,900 men også en såkaldt hacker udgave der tilbyder ingen form for ekstra kredit 661 00:31:37,900 --> 00:31:41,980 direkte men virkelig håneret at sige, at du har forsøgt og tackles 662 00:31:41,980 --> 00:31:45,250 kursets hacker udgaver som nærmer lignende materiale 663 00:31:45,250 --> 00:31:47,370 men ud fra et mere sofistikeret vinkel. 664 00:31:47,370 --> 00:31:49,480 >> Hvad tilbyder vi for standard udgave, til, 665 00:31:49,480 --> 00:31:51,420 igen, en super flertal af de studerende, er ikke 666 00:31:51,420 --> 00:31:54,060 kun gå-through, som er videoer ledet af kursets personale 667 00:31:54,060 --> 00:31:57,840 der virkelig gå dig gennem kursets problemer og mulige design 668 00:31:57,840 --> 00:31:58,910 implementeringer. 669 00:31:58,910 --> 00:32:01,434 Og vi har også efter Faktisk tilbyder postmortems, 670 00:32:01,434 --> 00:32:03,350 hvorved hvis du spekulerer på hvordan du kunne have 671 00:32:03,350 --> 00:32:05,930 eller burde have løst nogle problem, lærergruppen 672 00:32:05,930 --> 00:32:08,640 vil lede dig gennem dem på video samt. 673 00:32:08,640 --> 00:32:14,350 >> I mellemtiden, hvad der venter også er fem sene dage og det faktum, 674 00:32:14,350 --> 00:32:16,680 at vi vil slippe din laveste problem sæt score. 675 00:32:16,680 --> 00:32:20,370 Vi bestemt værdsætter i bytte til arbejdsbyrden at 50 forventer 676 00:32:20,370 --> 00:32:24,020 af dig, får livet på den måde tider, hvis ikke fem gange. 677 00:32:24,020 --> 00:32:26,150 Og så dette vil give dig en smule fleksibilitet, 678 00:32:26,150 --> 00:32:29,400 strækker din deadline fra, siger, en Torsdag middag til en fredag ​​ved middagstid. 679 00:32:29,400 --> 00:32:33,150 Se pensum for detaljer gennemførelse. 680 00:32:33,150 --> 00:32:34,702 >> Nu, hvad der nu venter? 681 00:32:34,702 --> 00:32:36,660 Og det er kun forekommende for mig nu bare, hvor lang tid 682 00:32:36,660 --> 00:32:38,333 Jeg har jer stå her på scenen. 683 00:32:38,333 --> 00:32:39,060 >> [Latter] 684 00:32:39,060 --> 00:32:41,867 >> David J. MALAN: Men vi vil komme til de klimatiske færdig inden længe. 685 00:32:41,867 --> 00:32:43,700 Så hvad venter i form af problemet sæt? 686 00:32:43,700 --> 00:32:47,099 Tja, måske en teaser af hvad vi alle gjorde sidste år med dine forgængere. 687 00:32:47,099 --> 00:32:49,140 I det første problem sæt sidste år introducerede vi 688 00:32:49,140 --> 00:32:51,630 Scratch, en grafisk programmeringssprog, 689 00:32:51,630 --> 00:32:54,570 lader dig programmere bogstaveligt talt ved trække og slippe puslespilsbrikker, 690 00:32:54,570 --> 00:32:57,220 som disse, der er minder om konstruktionerne 691 00:32:57,220 --> 00:32:59,260 vil se blot en uge Derfor, når vi skifter 692 00:32:59,260 --> 00:33:01,870 til en mere traditionel sprog, der er kendt som C. 693 00:33:01,870 --> 00:33:03,930 >> Sidste år vi fortsatte på dette problem sæt, 694 00:33:03,930 --> 00:33:06,720 involverer for kryptografi, scrambling af oplysninger 695 00:33:06,720 --> 00:33:10,410 at holde det fra statslige eller venner ' øjne, som du ikke ønsker at se det. 696 00:33:10,410 --> 00:33:12,540 Kodet i her er der en besked, som snart du 697 00:33:12,540 --> 00:33:15,740 vil være i stand til at dekryptere eller de-kapløbet. 698 00:33:15,740 --> 00:33:17,960 >> Breakout var et problem sat sidste år, hvor 699 00:33:17,960 --> 00:33:21,530 du bruge disse nyfundne programmering færdigheder til rent faktisk at gennemføre 700 00:33:21,530 --> 00:33:24,840 et spil, wherein-- som du måske husker fra childhood-- 701 00:33:24,840 --> 00:33:28,040 målet var at bash klodser, der er på toppen af ​​skærmen 702 00:33:28,040 --> 00:33:30,190 her, akkumulering en score undervejs, 703 00:33:30,190 --> 00:33:35,460 og gennemføre dine egne algoritmer med denne løsning i sidste ende 704 00:33:35,460 --> 00:33:37,357 lader dig spille spillet. 705 00:33:37,357 --> 00:33:39,440 I mellemtiden, senere i semester, vil vi give dig 706 00:33:39,440 --> 00:33:43,470 en ordbog over 143.091 engelske ord. 707 00:33:43,470 --> 00:33:46,300 Og du vil blive udfordret til at skrive et program, der 708 00:33:46,300 --> 00:33:50,260 stave kontrol, dokumenter ved lastning, at mange ord i hukommelsen 709 00:33:50,260 --> 00:33:52,300 så effektivt som muligt. 710 00:33:52,300 --> 00:33:54,240 Generelt grubetæring dig mod dine klassekammerater 711 00:33:54,240 --> 00:33:56,610 hvis du vælger ind i lidt af en udfordring i pointtavlen 712 00:33:56,610 --> 00:34:00,090 for at se, hvem der kan bruge færrest sekunders køretid, 713 00:34:00,090 --> 00:34:03,550 og færrest af megabyte hukommelse, 714 00:34:03,550 --> 00:34:08,659 og faktisk finjustere dine programmer at være utrolig ressourceeffektiv ikke 715 00:34:08,659 --> 00:34:09,820 bare tid. 716 00:34:09,820 --> 00:34:13,239 >> Sidste år også, så vi i slutningen af semestret på web programmering. 717 00:34:13,239 --> 00:34:16,230 Og ja, vi vil gøre det igen denne år med flere problemet sæt, 718 00:34:16,230 --> 00:34:20,290 introducere dig til de teknikker og den tankegang, som du kan anvende 719 00:34:20,290 --> 00:34:23,489 disse programmeringssprog kvalifikationer til hjemmesider, dynamiske hjemmesider, 720 00:34:23,489 --> 00:34:26,639 hjemmesider, der faktisk løse problemer, og opfører sig anderledes 721 00:34:26,639 --> 00:34:30,620 og ikke blot er statiske websteder med statisk information. 722 00:34:30,620 --> 00:34:32,854 >> Det endelige projekt i sidste ende vil definere, selv om, 723 00:34:32,854 --> 00:34:34,770 klimaks af kurset for studerende, hvor 724 00:34:34,770 --> 00:34:37,228 vil du blive udfordret til at implementere mest noget af interesse 725 00:34:37,228 --> 00:34:40,590 til dig, så længe det på en måde trækker på kursets lektioner. 726 00:34:40,590 --> 00:34:42,930 >> Og som du så i video i starten, 727 00:34:42,930 --> 00:34:47,340 vil vi afslutte semestret med CS50 hackathon, som hvis uvant, 728 00:34:47,340 --> 00:34:51,420 vil begynde på 7:00 en nat og slutter kl 7:00 næste morgen. 729 00:34:51,420 --> 00:34:53,614 Omkring 09:00, vil vi orden i første middag. 730 00:34:53,614 --> 00:34:55,489 Omkring 01:00, vil vi orden i anden middag. 731 00:34:55,489 --> 00:34:57,490 Og hvis du stadig stående på 5:00 AM, vi 732 00:34:57,490 --> 00:35:00,320 vil shuttle bus du til IHOP til morgenmad. 733 00:35:00,320 --> 00:35:04,980 >> Den CS50 Fair, i mellemtiden, er en begivenhed hvortil 2.000 plus fakultet, studerende, 734 00:35:04,980 --> 00:35:07,850 og personale fra hele campus vil kommer til at se dine resultater 735 00:35:07,850 --> 00:35:10,150 i løbet, og den endelige projekter og kreationer 736 00:35:10,150 --> 00:35:14,960 som du opretter på din bærbare, desktops, eller måske endda pærer. 737 00:35:14,960 --> 00:35:17,340 >> I mellemtiden, kontortid og støttestrukturen. 738 00:35:17,340 --> 00:35:20,480 Og nu ville det har været en bedre tid til at bringe dig alle op. 739 00:35:20,480 --> 00:35:24,310 >> Kontortid vil finde sted fire nætter en uge til flere timer hver nat 740 00:35:24,310 --> 00:35:27,710 med generelt 20 til 30 i den kursus personale på told på én gang 741 00:35:27,710 --> 00:35:31,240 at give dig med intim en-til-én muligheder for støtte 742 00:35:31,240 --> 00:35:33,790 med kursets problemet sæt. 743 00:35:33,790 --> 00:35:36,120 Vejledning også vil være til rådighed, navnlig 744 00:35:36,120 --> 00:35:39,630 for studerende mindre comfortable-- eller tør sige mindst comfortable-- for hvem 745 00:35:39,630 --> 00:35:41,869 kontortid er ikke den mest nærende miljø 746 00:35:41,869 --> 00:35:43,660 og er bestemt ikke mest stress-fri. 747 00:35:43,660 --> 00:35:47,430 Især når deadlines presning, vil vi proaktivt parre dig selv 748 00:35:47,430 --> 00:35:51,440 med et medlem af personalet til at arbejde med på nogle normale skema som dine behov 749 00:35:51,440 --> 00:35:53,850 og deres tidsplan tillader. 750 00:35:53,850 --> 00:35:55,260 >> Og personale. 751 00:35:55,260 --> 00:36:01,020 Tillad mig at introducere Davon, Rob, og Gabriel, dette års hoveder. 752 00:36:01,020 --> 00:36:02,370 Hvis du vil hver gerne sige-- 753 00:36:02,370 --> 00:36:03,349 >> [Applaus] 754 00:36:03,349 --> 00:36:03,849 --a ord. 755 00:36:03,849 --> 00:36:05,328 [Applaus] 756 00:36:05,328 --> 00:36:10,270 757 00:36:10,270 --> 00:36:13,220 Davon herovre er den kursus manager, som 758 00:36:13,220 --> 00:36:15,730 betyder i sin fuld tid rolle han hjælper med udførelsen 759 00:36:15,730 --> 00:36:18,424 og logistik i CS50. 760 00:36:18,424 --> 00:36:19,340 Davon: Ja, hej, gutter. 761 00:36:19,340 --> 00:36:20,965 Du vil se en masse til mig på kontortid. 762 00:36:20,965 --> 00:36:22,110 Jeg vil undervise sektioner. 763 00:36:22,110 --> 00:36:25,150 Og hvis du skyder emails forude, Jeg vil sandsynligvis reagerer. 764 00:36:25,150 --> 00:36:27,670 Så jeg vil se masser af jer alle semester. 765 00:36:27,670 --> 00:36:29,890 Og velkommen til CS50. 766 00:36:29,890 --> 00:36:38,330 >> David J. MALAN: Og nu Gabriel, som selv var bare en freshman sidste år, 767 00:36:38,330 --> 00:36:41,820 men i de seneste par år har været i drift sin egen version af CS50 768 00:36:41,820 --> 00:36:44,660 i Brasilien, hvor han hentede alle kursets content-- 769 00:36:44,660 --> 00:36:46,890 hvilket er klart at være filmet og lagt online-- 770 00:36:46,890 --> 00:36:51,480 så han kunne oversætte det til Portugisisk og derefter undervise mere end 100 771 00:36:51,480 --> 00:36:54,610 af sine klassekammerater over løbet af et par år, 772 00:36:54,610 --> 00:36:57,650 undervisning i sit modersmål kursets pensum. 773 00:36:57,650 --> 00:36:58,964 >> GABRIEL: Hej. 774 00:36:58,964 --> 00:37:00,912 >> [Applaus] 775 00:37:00,912 --> 00:37:06,669 776 00:37:06,669 --> 00:37:07,710 GABRIEL: Hej, jeg er Gabriel. 777 00:37:07,710 --> 00:37:09,340 Jeg leder TF af kurset. 778 00:37:09,340 --> 00:37:10,780 Og jeg håber, du vil elske CS50. 779 00:37:10,780 --> 00:37:12,830 Dette er CS50. 780 00:37:12,830 --> 00:37:14,697 >> David J. MALAN: Nu til Rob. 781 00:37:14,697 --> 00:37:15,780 Åh, du ønsker introduktion? 782 00:37:15,780 --> 00:37:16,696 >> ROB: Nej, jeg ved det ikke. 783 00:37:16,696 --> 00:37:18,225 [Latter] 784 00:37:18,225 --> 00:37:19,475 David J. MALAN: Og Rob Boden. 785 00:37:19,475 --> 00:37:22,300 [Latter] 786 00:37:22,300 --> 00:37:23,800 ROB: Hej, jeg er Rob. 787 00:37:23,800 --> 00:37:27,220 Dette er mit femte år involveret med kurset. 788 00:37:27,220 --> 00:37:29,220 Hvert år, det er bare en bedre og bedre klasse, 789 00:37:29,220 --> 00:37:31,550 så du fyre er klart kommer til at være awesome. 790 00:37:31,550 --> 00:37:33,181 Jeg håber I alle har det sjovt med det. 791 00:37:33,181 --> 00:37:34,430 Jeg har tænkt mig at have det sjovt med det. 792 00:37:34,430 --> 00:37:36,670 Så se dig omkring. 793 00:37:36,670 --> 00:37:38,445 >> David J. MALAN: Og tid vil ikke tillade os-- 794 00:37:38,445 --> 00:37:39,670 >> [Applaus] 795 00:37:39,670 --> 00:37:41,661 >> Tiden vil ikke tillade os at indføre alle 796 00:37:41,661 --> 00:37:44,660 på scenen og alle deres kolleger der er shopping klasser i dag. 797 00:37:44,660 --> 00:37:47,390 Men tillad mig at introducere Belinda og CS50 Puzzle 798 00:37:47,390 --> 00:37:49,550 Dag, der venter det kommende Lørdag, som 799 00:37:49,550 --> 00:37:51,800 er den første af de kursets begivenheder i større målestok. 800 00:37:51,800 --> 00:37:54,300 >> Denne ene i særdeleshed betydet at hamre hjem det punkt 801 00:37:54,300 --> 00:37:57,580 at datalogi er i sidste ende ikke om programmering, men snarere 802 00:37:57,580 --> 00:37:59,280 om problemløsning mere generelt. 803 00:37:59,280 --> 00:38:01,450 Og puslespil Day, som du vil se, vil bringe dig 804 00:38:01,450 --> 00:38:04,207 og dine klassekammerater together-- Vi håber, at denne lørdag. 805 00:38:04,207 --> 00:38:04,961 >> BELINDA: OK. 806 00:38:04,961 --> 00:38:05,750 Hej, gutter. 807 00:38:05,750 --> 00:38:06,740 Så tak. 808 00:38:06,740 --> 00:38:10,120 Så som vores hæderkronede kaptajn sagde mit navn er Belinda. 809 00:38:10,120 --> 00:38:12,100 Jeg er en sophomore på Quincy House. 810 00:38:12,100 --> 00:38:15,730 >> Jeg, ligesom du fyre tog CS50 sidste år, virkelig elskede det. 811 00:38:15,730 --> 00:38:17,960 Jeg har en svaghed for du fyre i tredje række. 812 00:38:17,960 --> 00:38:21,384 Og jeg er stolt af at sige, jeg er nu i et fast forhold 813 00:38:21,384 --> 00:38:22,300 med CS50 [uhørligt]. 814 00:38:22,300 --> 00:38:22,799 OK. 815 00:38:22,799 --> 00:38:26,140 Det var min halt version af en vittighed. 816 00:38:26,140 --> 00:38:28,320 >> Anyway, så bevæger sig på, blot ønskede at invitere 817 00:38:28,320 --> 00:38:31,439 jer alle til i-lab, eller HBS bistader. 818 00:38:31,439 --> 00:38:33,730 Vi kommer til at have Puzzle Dag 12:00 til 03:00. 819 00:38:33,730 --> 00:38:37,680 Og det er en stor chance for dig fyrene til at opfylde dine kolleger CS venner, 820 00:38:37,680 --> 00:38:42,780 løse nogle ikke-CS puslespil, ligesom kaptajn nævnt, og også spise nogle gratis mad, 821 00:38:42,780 --> 00:38:46,910 tjene nogle awesome præmier, ligesom gavekort, $ 75 per person, 822 00:38:46,910 --> 00:38:48,400 og also-- hvad var det? 823 00:38:48,400 --> 00:38:49,540 Wii U eller noget? 824 00:38:49,540 --> 00:38:50,333 Wii U? 825 00:38:50,333 --> 00:38:51,040 Ja. 826 00:38:51,040 --> 00:38:52,330 For vores tombola. 827 00:38:52,330 --> 00:38:52,830 Awesome. 828 00:38:52,830 --> 00:38:54,310 Så jeg vil holde sig omkring efter klasse. 829 00:38:54,310 --> 00:38:56,770 Og hvis du fyre har nogen spørgsmål, så lad mig det vide. 830 00:38:56,770 --> 00:38:59,980 >> David J. MALAN: Og du vil se, ud dette er der ikke noget at gøre i dag. 831 00:38:59,980 --> 00:39:01,920 Det første problem sæt vil gå ud fredag. 832 00:39:01,920 --> 00:39:05,420 Men at bringe os hjem i dag, vil jeg gerne introducere dig til specielt det ene mere 833 00:39:05,420 --> 00:39:09,080 medlem af personalet, Colton Ogden her, hvis hænder er nu 834 00:39:09,080 --> 00:39:12,250 beskyttet over dig med denne MIDI controller 835 00:39:12,250 --> 00:39:15,170 at hamre hjem punktet yderligere at datalogi, også, 836 00:39:15,170 --> 00:39:19,130 har anvendelighed langt ud over teknik og STEM og datalogi selv, 837 00:39:19,130 --> 00:39:22,890 strækker sig endda til sådanne domæner som musik. 838 00:39:22,890 --> 00:39:30,590 >> Colton har venligt offered-- jeg troede en af ​​dem skulle indstille fokus. 839 00:39:30,590 --> 00:39:34,400 Andrew, hvis vi kunne tilkalde fokus herovre for bare et øjeblik. 840 00:39:34,400 --> 00:39:36,780 >> Hvad Colton har gjort i forvejen er program 841 00:39:36,780 --> 00:39:40,345 denne enhed, denne pude af knapper at du ser afbilledet op her, 842 00:39:40,345 --> 00:39:42,470 som en MIDI controller, hvorved hver af disse knapper 843 00:39:42,470 --> 00:39:47,080 er tilsluttet til en bestemt musikalsk tone eller en lyd, mere generelt en optagelse, 844 00:39:47,080 --> 00:39:50,445 sådan at ved at spille mønstre af disse knapper, meget gerne mønstre af bits, 845 00:39:50,445 --> 00:39:52,620 kan repræsentere andre højere koncepter plan. 846 00:39:52,620 --> 00:39:56,750 Vil han være i stand til i sidste ende at tage os hjemme her i dag? 847 00:39:56,750 --> 00:39:59,540 Uden videre, hvis vi kunne dæmpe lyset, 848 00:39:59,540 --> 00:40:03,145 og tænde for skærmen bag Colton. 849 00:40:03,145 --> 00:40:03,865 >> Publikum: Woo! 850 00:40:03,865 --> 00:40:06,090 >> David J. MALAN: Dette er CS50. 851 00:40:06,090 --> 00:40:10,518 >> [Musik spiller] 852 00:40:10,518 --> 00:42:46,018 853 00:42:46,018 --> 00:42:49,420 >> [Applaus] 854 00:42:49,420 --> 00:42:54,766 855 00:42:54,766 --> 00:42:56,450 >> Det er det for CS50. 856 00:42:56,450 --> 00:42:57,950 Vi vil se dig fredag. 857 00:42:57,950 --> 00:42:59,890 Nogle kage venter dig i tværskib. 858 00:42:59,890 --> 00:43:04,046 859 00:43:04,046 --> 00:43:08,850 >> [Musik spiller] 860 00:43:08,850 --> 00:45:49,227