1 00:00:00,000 --> 00:00:03,440 >> [Muziek] 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: Dit is CS50, Introductie Harvard University's 6 00:02:09,669 --> 00:02:12,370 de intellectuele bedrijven van de informatica 7 00:02:12,370 --> 00:02:14,180 en de kunst van het programmeren. 8 00:02:14,180 --> 00:02:17,530 Nu als u onder degenen die Elk jaar worden hier zitten 9 00:02:17,530 --> 00:02:21,450 met een beetje van de zenuwen in je hoofd, zoals dat je niet denkt dat je hier deel van uitmaken, 10 00:02:21,450 --> 00:02:24,270 je denkt dat de meeste iedereen zit om je heen 11 00:02:24,270 --> 00:02:27,730 weet veel meer dan jij, is inderdaad comfortabeler dan je op de computer 12 00:02:27,730 --> 00:02:30,430 wetenschap of computers meer algemeen, realiseren 13 00:02:30,430 --> 00:02:36,140 dat 78% van de studenten die nu neem CS50 nog geen ervaring. 14 00:02:36,140 --> 00:02:39,570 >> Inderdaad, er is 100 punten er op het display 78 waarvan 15 00:02:39,570 --> 00:02:43,540 stevige groen, wat betekent dat u, als je onder dat demografische, 16 00:02:43,540 --> 00:02:46,420 zijn in zeer goed gezelschap hier op uit. 17 00:02:46,420 --> 00:02:50,320 En als je in plaats van de 22% van de CS50 studenten die inderdaad doen 18 00:02:50,320 --> 00:02:53,920 hebben eerdere ervaring, zowel in middelbare school of een ander programma, 19 00:02:53,920 --> 00:02:56,430 beseffen dat je, ook, zal worden aangevochten in de cursus. 20 00:02:56,430 --> 00:02:59,930 >> Niet alleen hebben we verschillende tracks voor studenten minder comfortabel en meer 21 00:02:59,930 --> 00:03:03,789 comfortabel zowel in secties, we Ook zijn zogenaamde hacker edities 22 00:03:03,789 --> 00:03:06,080 meeste probleem bepaalt dat zullen die leerlingen uitdagen 23 00:03:06,080 --> 00:03:09,650 met dat aanvullende ervaring soortgelijke materiaal staand 24 00:03:09,650 --> 00:03:12,140 maar vanuit een meer verfijnde perspectief. 25 00:03:12,140 --> 00:03:13,900 >> Maar wat is de informatica? 26 00:03:13,900 --> 00:03:17,750 Nou ja, uiteindelijk, wat er gaat materie als je dit gebied te verkennen is niet 27 00:03:17,750 --> 00:03:20,500 zoveel waar je terecht komt ten opzichte van je klasgenoten, 28 00:03:20,500 --> 00:03:25,350 maar waar je jezelf uiteindelijk in week 12 ten opzichte van waar je hier beginnen 29 00:03:25,350 --> 00:03:26,720 in week nul. 30 00:03:26,720 --> 00:03:31,850 Nu computer goed science--, laten we noem het de wetenschap van computation-- 31 00:03:31,850 --> 00:03:35,910 waar berekening is eigenlijk gewoon een mooie manier om te zeggen, het nemen van een aantal input, 32 00:03:35,910 --> 00:03:39,460 produceren van enkele uitgang, en hiertoe door draaien algoritmen, 33 00:03:39,460 --> 00:03:43,700 sets van instructies voor het oplossen van een probleem op die inputs 34 00:03:43,700 --> 00:03:48,460 om enige output of oplossing waarin u geïnteresseerd bent. 35 00:03:48,460 --> 00:03:51,310 >> Dus we onlangs hadden gelegenheid om te reizen 36 00:03:51,310 --> 00:03:53,170 naar Californië voor een ontmoeting met een alumna. 37 00:03:53,170 --> 00:03:54,650 Haar naam is Susan Wojcicki. 38 00:03:54,650 --> 00:03:57,190 En ze zou graag willen spreken u hier op video 39 00:03:57,190 --> 00:04:01,690 om te getuigen van hoe toepasselijke zelfs alleen maar een voorproefje van de computer 40 00:04:01,690 --> 00:04:03,770 wetenschappen aan de inleidende niveau zijn. 41 00:04:03,770 --> 00:04:06,870 Zelfs als u niet gaan om te streven informatica als een veld, 42 00:04:06,870 --> 00:04:09,330 of zelfs engineering, of STEM meer in het algemeen, 43 00:04:09,330 --> 00:04:12,360 je ziet, in feite, hoe een bepaalde natuurlijk zo beïnvloed haar leven. 44 00:04:12,360 --> 00:04:16,630 En ze nog maar net gepakt toen ze was een senior hier aan Harvard College. 45 00:04:16,630 --> 00:04:19,482 >> Als we de lichten voor Susan kon dimmen. 46 00:04:19,482 --> 00:04:20,690 SUSAN Wójcicki: Hallo, wereld. 47 00:04:20,690 --> 00:04:22,100 Ik ben Susan Wojcicki. 48 00:04:22,100 --> 00:04:24,110 Ik ben de CEO van YouTube. 49 00:04:24,110 --> 00:04:29,150 En ik nam CS50 toen ik een senior aan Harvard in 1990. 50 00:04:29,150 --> 00:04:31,220 Ik was eigenlijk een geschiedenis en literatuur belangrijk. 51 00:04:31,220 --> 00:04:36,760 >> En mijn junior zomer, Ik realiseerde me dat ik misschien 52 00:04:36,760 --> 00:04:39,060 wilde om iets te leren over computers. 53 00:04:39,060 --> 00:04:40,930 En zo kwam ik terug. 54 00:04:40,930 --> 00:04:42,500 Ik nam CS50. 55 00:04:42,500 --> 00:04:46,940 Het was moeilijk, maar het was de meest verbazingwekkende klasse I nam. 56 00:04:46,940 --> 00:04:49,630 >> Het veranderde hoe ik denk over alles. 57 00:04:49,630 --> 00:04:55,810 En toen ik afgestudeerd aan Harvard in 1990, ging ik naar Silicon Valley. 58 00:04:55,810 --> 00:04:57,140 En ik heb een baan. 59 00:04:57,140 --> 00:05:00,150 En ik heb gewerkt in tech sindsdien. 60 00:05:00,150 --> 00:05:02,650 DAVID J. MALAN: Nu, wat Susan niet in deze video noemen, 61 00:05:02,650 --> 00:05:05,340 dat het eigenlijk in haar garage die Google zelf was 62 00:05:05,340 --> 00:05:07,420 opgericht door Larry en Sergey. 63 00:05:07,420 --> 00:05:11,169 >> Nu hebben we ook bereikt om onze vrienden bij code.org, een organisatie die 64 00:05:11,169 --> 00:05:13,460 in het afgelopen jaar is geweest om mensen in het bijzonder 65 00:05:13,460 --> 00:05:16,520 enthousiast over de informatica en programmering, in het bijzonder. 66 00:05:16,520 --> 00:05:20,590 Maar het is vermeldenswaard dat de programmering is geen informatica per se. 67 00:05:20,590 --> 00:05:22,090 Informatica is niet programmeren. 68 00:05:22,090 --> 00:05:24,560 Plaats programmering is slechts een tool-- waarmee jullie allemaal 69 00:05:24,560 --> 00:05:27,510 zal maar al te goed te zijn vertrouwd door end-- semester 70 00:05:27,510 --> 00:05:30,650 zodanig dat je niet kunt toepassen alleen maar om de toekomst cursussen in CS 71 00:05:30,650 --> 00:05:33,670 maar wat velden waaruit je komt, in de geesteswetenschappen, 72 00:05:33,670 --> 00:05:36,090 sociale wetenschappen, natuurlijke wetenschap, of dergelijke. 73 00:05:36,090 --> 00:05:39,740 >> Inderdaad laat enkele andere alumni en hun collega's 74 00:05:39,740 --> 00:05:43,400 om de toepasbaarheid te spreken van het veld dat te wachten staat. 75 00:05:43,400 --> 00:05:52,340 76 00:05:52,340 --> 00:05:57,350 >> Bill Gates: Ik was 13 toen ik eerst kreeg toegang tot een computer. 77 00:05:57,350 --> 00:06:00,485 >> JACK DORSEY: Mijn ouders kocht me een Macintosh in 1984 78 00:06:00,485 --> 00:06:01,640 toen ik acht jaar oud. 79 00:06:01,640 --> 00:06:02,990 >> Mark Zuckerberg: ik was in het zesde leerjaar. 80 00:06:02,990 --> 00:06:04,670 >> SPEAKER 1: Ik heb geleerd om te coderen op de universiteit. 81 00:06:04,670 --> 00:06:09,080 >> RUCHI Sanghvi: Freshman jaar, eerst semester, Inleiding tot de informatica. 82 00:06:09,080 --> 00:06:11,850 >> Bill Gates: Ik schreef een programma dat tic-tac-teen gespeeld. 83 00:06:11,850 --> 00:06:14,100 >> DREW HOUSTON: Ik denk dat het vrij bescheiden begin. 84 00:06:14,100 --> 00:06:16,370 Ik denk dat het eerste programma Ik schreef vroeg dingen als: 85 00:06:16,370 --> 00:06:17,820 wat is je favoriete kleur? 86 00:06:17,820 --> 00:06:18,696 Of hoe oud ben je? 87 00:06:18,696 --> 00:06:21,070 ELENA SILENOK: ik voor het eerst leerde hoe je een groene cirkel te maken 88 00:06:21,070 --> 00:06:23,670 en een rood vierkant op het scherm verschijnen. 89 00:06:23,670 --> 00:06:25,420 GABE NEWELL: De eerste keer dat ik eigenlijk had 90 00:06:25,420 --> 00:06:27,360 iets komen en zeggen: hallo, wereld. 91 00:06:27,360 --> 00:06:29,710 En ik maakte een computer dat doet. 92 00:06:29,710 --> 00:06:30,850 Het was gewoon verbazingwekkend. 93 00:06:30,850 --> 00:06:33,224 >> Mark Zuckerberg: Leren om het programma niet te beginnen 94 00:06:33,224 --> 00:06:35,450 zo willen leren alle van de informatica 95 00:06:35,450 --> 00:06:38,630 of proberen om dit onder de knie discipline of iets dergelijks. 96 00:06:38,630 --> 00:06:41,591 Het begon net buiten omdat ik wilde dit een simpel ding te doen. 97 00:06:41,591 --> 00:06:44,340 Ik wilde iets maken dat was leuk voor mezelf en mijn zussen. 98 00:06:44,340 --> 00:06:46,399 >> En ik schreef dit kleine programma. 99 00:06:46,399 --> 00:06:48,440 En dan eigenlijk gewoon toegevoegd een beetje aan. 100 00:06:48,440 --> 00:06:49,930 En toen moest ik om iets nieuws te leren, 101 00:06:49,930 --> 00:06:52,210 Ik heb het opgezocht, hetzij in een boek of op het internet, 102 00:06:52,210 --> 00:06:53,240 en dan nog een beetje aan. 103 00:06:53,240 --> 00:06:56,300 >> DREW HOUSTON: Het is echt niet anders dan het spelen van een instrument of iets 104 00:06:56,300 --> 00:07:00,007 of het spelen van een sport. 105 00:07:00,007 --> 00:07:01,090 DAVID J. MALAN: Oke. 106 00:07:01,090 --> 00:07:04,120 Dus laten we nu eigenlijk duiken in een beetje dieper. 107 00:07:04,120 --> 00:07:07,430 Wat zijn deze inputs en outputs dat we het hier over? 108 00:07:07,430 --> 00:07:09,110 >> Dus wat dacht je van iets simpels? 109 00:07:09,110 --> 00:07:12,120 Je weet waarschijnlijk wel, ook al heb je geen vertrouwdheid met informatica 110 00:07:12,120 --> 00:07:16,570 dan ook, dat de computers of andere manier gebruiken en begrijpt alleen nullen en enen. 111 00:07:16,570 --> 00:07:20,500 Maar hoe kan dat eventueel worden gegeven hoe desktops en laptops alike's veel vandaag 112 00:07:20,500 --> 00:07:21,280 kunnen doen? 113 00:07:21,280 --> 00:07:24,310 >> Het DNA van de dag, de enige alfabet dat ze begrijpen 114 00:07:24,310 --> 00:07:26,410 is nul of een. 115 00:07:26,410 --> 00:07:27,470 Nou ja, overweeg dan dit. 116 00:07:27,470 --> 00:07:30,840 Wij, mensen, hebben de neiging om het te gebruiken decimale stelsel. "December", wat betekent 10. 117 00:07:30,840 --> 00:07:33,970 En dat is 10, want we hebben 10 cijfers, 0 tot en met negen. 118 00:07:33,970 --> 00:07:36,180 >> Nu computers, daarentegen, meestal binary. 119 00:07:36,180 --> 00:07:37,270 "Bi" betekent twee. 120 00:07:37,270 --> 00:07:39,560 Zodat ze de neiging om alleen nul en een te gebruiken. 121 00:07:39,560 --> 00:07:42,680 Maar het blijkt, dat zelfs alleen met nullen en enen, dat 122 00:07:42,680 --> 00:07:45,900 een voldoende groot alfabet waarmee meeste vertegenwoordigen 123 00:07:45,900 --> 00:07:48,490 een stuk van de gegevens die u wilt, of het nu een nummer, 124 00:07:48,490 --> 00:07:52,100 of het nu een brief, of het nu een afbeelding of video op het scherm. 125 00:07:52,100 --> 00:07:57,140 >> Denk bijvoorbeeld, hoe wij mensen meestal interpreteren hier dit nummer. 126 00:07:57,140 --> 00:08:00,010 Dit is slechts drie cijfers, een, twee, drie. 127 00:08:00,010 --> 00:08:04,570 Maar we weten dat dit aantal aangeboren nu als 123. 128 00:08:04,570 --> 00:08:05,510 Maar waarom is dat? 129 00:08:05,510 --> 00:08:07,570 >> Nou, als je terugdenkt tot misschien de lagere school, 130 00:08:07,570 --> 00:08:11,700 je waarschijnlijk geleerd om te denken van deze aantallen als in kolommen, 131 00:08:11,700 --> 00:08:14,700 wanneer het is in de honderden plaats de twee in de tientallen plaats, 132 00:08:14,700 --> 00:08:16,360 en de drie is degene plaats. 133 00:08:16,360 --> 00:08:17,790 Waarom is dat eigenlijk nuttig? 134 00:08:17,790 --> 00:08:19,665 Nou, na te denken over de super eenvoudige rekenkundige 135 00:08:19,665 --> 00:08:22,219 dat we allemaal zijn geweest doet al jaren. 136 00:08:22,219 --> 00:08:24,510 Effectief, als je hebt een een op de honderd plaats, 137 00:08:24,510 --> 00:08:29,610 u de snelle wiskunde 100 maal 1 plus 10 keer 2-- 138 00:08:29,610 --> 00:08:33,059 omdat twee in de tientallen plek-- plus 1 keer 3-- 139 00:08:33,059 --> 00:08:34,830 omdat drie is degene plaats. 140 00:08:34,830 --> 00:08:37,039 Dus, natuurlijk, als we eigenlijk vermenigvuldig dit uit, 141 00:08:37,039 --> 00:08:39,600 wat we echt wat neerkomt deze pattern-- een 142 00:08:39,600 --> 00:08:46,150 twee three-- is 100 plus 20 plus 3, die natuurlijk is 123. 143 00:08:46,150 --> 00:08:51,130 >> Nu binair, en computers echt, fundamenteel dezelfde taal spreken 144 00:08:51,130 --> 00:08:51,680 dat we doen. 145 00:08:51,680 --> 00:08:53,400 Ze hebben gewoon een kleinere alfabet. 146 00:08:53,400 --> 00:08:57,100 Dus computers hebben alleen nullen en degenen die tot hun beschikking. 147 00:08:57,100 --> 00:09:02,500 Dus terwijl wij mensen in wezen machten van 10 in elk van deze places-- 148 00:09:02,500 --> 00:09:06,810 10 de nul 10 aan die tien om de twee, waardoor u 110 en 100 149 00:09:06,810 --> 00:09:07,700 respectievelijk. 150 00:09:07,700 --> 00:09:12,140 >> Omdat computers hebben slechts twee waarden ze kunnen begrijpen, nul en een, 151 00:09:12,140 --> 00:09:16,600 ze hebben verschillende waarden in deze kolommen, een, twee, vier. 152 00:09:16,600 --> 00:09:20,480 En als we bleven gaan, acht, 16, 32, 64, enzovoort. 153 00:09:20,480 --> 00:09:24,220 Maar het patroon en de mentaliteit is precies hetzelfde. 154 00:09:24,220 --> 00:09:27,340 >> Dus door deze logica, iedereen, hoe zou Ik ga over die het aantal 155 00:09:27,340 --> 00:09:28,530 een binair? 156 00:09:28,530 --> 00:09:33,080 Als je nog nooit hebt gedacht over dit al eerder, wat je darmen zeggen? 157 00:09:33,080 --> 00:09:33,777 >> PUBLIEK: One. 158 00:09:33,777 --> 00:09:34,610 DAVID J. MALAN: One. 159 00:09:34,610 --> 00:09:35,660 Precies. 160 00:09:35,660 --> 00:09:38,100 We hoeven alleen maar een een op de die plaats omdat de nullen 161 00:09:38,100 --> 00:09:40,610 voldoende zijn om ons noch een vier of twee. 162 00:09:40,610 --> 00:09:42,440 Dus een keer een is een. 163 00:09:42,440 --> 00:09:43,940 Nu wordt het allemaal een beetje interessant. 164 00:09:43,940 --> 00:09:46,830 Als ik wil hebben te vertegenwoordigen in binaire het getal twee-- maar, 165 00:09:46,830 --> 00:09:49,790 weer, zelfs als je nog nooit hebt gesproken deze taal vóór, 166 00:09:49,790 --> 00:09:54,680 hoe doen wij vertegenwoordigen in binaire de waarde die wij mensen kennen als twee? 167 00:09:54,680 --> 00:09:55,570 Nul een nul. 168 00:09:55,570 --> 00:09:57,620 Gewoon de ene in de kolom die u het wilt. 169 00:09:57,620 --> 00:09:59,560 >> Nu wordt het vrij makkelijk waarschijnlijk nu. 170 00:09:59,560 --> 00:10:02,950 Dus als ik wil three-- te vertegenwoordigen er is geen column drieën. 171 00:10:02,950 --> 00:10:06,770 Dus, nogmaals, ik kan nu deze waarden toe te voegen samen door een hier. 172 00:10:06,770 --> 00:10:10,320 Dus 2 maal 1 plus 1 tijd 1 is natuurlijk 3. 173 00:10:10,320 --> 00:10:13,480 >> Nu wordt het allemaal een beetje plezier in dat degenen die nu worden nullen. 174 00:10:13,480 --> 00:10:15,480 En vier vertegenwoordigen, krijg ik dit. 175 00:10:15,480 --> 00:10:19,310 En als we langzaam verhogen hier-- dat zou vijf. 176 00:10:19,310 --> 00:10:20,700 Dit zou zes. 177 00:10:20,700 --> 00:10:22,100 Dit zou zeven. 178 00:10:22,100 --> 00:10:25,310 >> Maar nu ik lijken te hebben een probleem tegenkomt. 179 00:10:25,310 --> 00:10:30,520 Hoe zou ik over die eight-- zou de volgende waarde. 180 00:10:30,520 --> 00:10:31,900 Ja, dus we hebben een nieuwe bits. 181 00:10:31,900 --> 00:10:33,899 En, inderdaad, als je hebt eerder gehoord deze zin, 182 00:10:33,899 --> 00:10:37,380 beetjes, dat is gewoon een afkorting van binair getal, nul of een. 183 00:10:37,380 --> 00:10:41,520 >> En dus ik toevallig te vertegenwoordigen slechts drie van dergelijke stukjes here. 184 00:10:41,520 --> 00:10:44,900 Maar als ik een manier van het opslaan niet drie verschillende stukjes, maar vier, 185 00:10:44,900 --> 00:10:47,250 toch kon ik vertegenwoordig acht, en dan negen, en dan 186 00:10:47,250 --> 00:10:49,400 10 en zelfs hoger en hoger. 187 00:10:49,400 --> 00:10:52,140 >> Maar dat roept dan in vraag hoe we kunnen 188 00:10:52,140 --> 00:10:54,540 gaan over organisaties van deze dingen in de eerste plaats. 189 00:10:54,540 --> 00:10:56,950 Het is een ding om te tekenen ze hier op een dia op, 190 00:10:56,950 --> 00:11:00,660 maar hoe krijg je ze vertegenwoordigen als je een mechanisch apparaat bent? 191 00:11:00,660 --> 00:11:04,390 Wat is een computer doet om vertegenwoordigen de ingangen en uitgangen die 192 00:11:04,390 --> 00:11:09,020 fundamenteel berekening definiëren aan het eind van de dag? 193 00:11:09,020 --> 00:11:12,090 >> Nou, wat over iets super simpel als dit? 194 00:11:12,090 --> 00:11:13,200 Het is gewoon een gloeilamp. 195 00:11:13,200 --> 00:11:15,460 En ik kan dit leiden tot gloeilamp te gaan 196 00:11:15,460 --> 00:11:17,920 door het draaien van een aantal elektriciteit on en waardoor elektronen 197 00:11:17,920 --> 00:11:22,585 doorstromen, dat verandert staat of de waarde ervan, bij wijze van spreken. 198 00:11:22,585 --> 00:11:24,460 Zo is dit een oude school bureaulamp 199 00:11:24,460 --> 00:11:27,250 hier met een dergelijke gloeilamp erin. 200 00:11:27,250 --> 00:11:29,940 En nu is het niet echt iets nuttigs doen. 201 00:11:29,940 --> 00:11:32,680 Maar zodra ik de stekker er in een stopcontact 202 00:11:32,680 --> 00:11:36,390 en gebruik dan deze switch-- of kunnen we zelfs spreken van een transistor 203 00:11:36,390 --> 00:11:39,970 of denk aan het als such-- Ik kan nu vertegenwoordigen ofwel 204 00:11:39,970 --> 00:11:44,120 deze waarde, waar de lamp is uiteraard af, of deze waarde. 205 00:11:44,120 --> 00:11:46,060 Deze waarde en deze waarde. 206 00:11:46,060 --> 00:11:47,520 Deze waarde enzovoort. 207 00:11:47,520 --> 00:11:51,220 >> Dus binnenkant van een computer vermoedelijk zijn veel kleiner stukken hardware, 208 00:11:51,220 --> 00:11:52,970 maar dat eind van de dag gewoon 209 00:11:52,970 --> 00:11:55,360 naar electricity-- gebruiken het-- misschien vangen 210 00:11:55,360 --> 00:11:59,730 en dan of er iets te houden op of houden iets af. 211 00:11:59,730 --> 00:12:02,021 Natuurlijk is dit niet bijzonder interessant te doen 212 00:12:02,021 --> 00:12:03,270 met slechts een enkele gloeilamp. 213 00:12:03,270 --> 00:12:06,726 >> In feite, hoe hoog kan ik rekenen in binaire met deze bureaulamp hier? 214 00:12:06,726 --> 00:12:07,420 >> PUBLIEK: One. 215 00:12:07,420 --> 00:12:08,545 >> DAVID J. MALAN: One, toch? 216 00:12:08,545 --> 00:12:11,020 Ik heb meer bureaulampen als ik eigenlijk willen hogere tellen. 217 00:12:11,020 --> 00:12:12,210 Maar we kunnen beter doen dan dat. 218 00:12:12,210 --> 00:12:14,460 Omdat de lampen die we in deze dingen heb gezet 219 00:12:14,460 --> 00:12:17,730 zijn eigenlijk liefhebber gloeilampen dan weleer zou toestaan. 220 00:12:17,730 --> 00:12:20,310 En ze zijn eigenlijk genetwerkte gloeilampen. 221 00:12:20,310 --> 00:12:23,160 En trossen van bedrijven maken deze dingen tegenwoordig. 222 00:12:23,160 --> 00:12:25,190 >> Maar het blijkt dat vooral deze 223 00:12:25,190 --> 00:12:27,680 wordt geleverd met een functie waarbij U kunt de kleuren veranderen. 224 00:12:27,680 --> 00:12:30,810 Dus bijvoorbeeld als u versierd uw dorm room 225 00:12:30,810 --> 00:12:33,200 met een paar van deze licht lampen, afhankelijk van je stemming, 226 00:12:33,200 --> 00:12:35,366 afhankelijk van wie binnenkomt, afhankelijk van het weer, 227 00:12:35,366 --> 00:12:37,360 afhankelijk van de tijd van de dag, kun je eigenlijk 228 00:12:37,360 --> 00:12:40,300 veranderen de kleuren van de lampen in uw kamer. 229 00:12:40,300 --> 00:12:43,740 En dat komt omdat deze licht bollen en anderen als het wat is 230 00:12:43,740 --> 00:12:48,010 riep een API, een toepassing programmeerinterface die 231 00:12:48,010 --> 00:12:50,920 is een topic met waar je goed vertrouwd met eind semester. 232 00:12:50,920 --> 00:12:53,710 >> En dit is gewoon een mooie, cryptische manier om te zeggen, 233 00:12:53,710 --> 00:12:57,570 U kunt deze lichte programmeren bollen te doen wat jij wilt. 234 00:12:57,570 --> 00:13:00,360 U kunt ze berichten sturen net als u, een mens, 235 00:13:00,360 --> 00:13:03,640 kunt een bericht sturen naar een webserver zeggen, geef mij het nieuws van vandaag 236 00:13:03,640 --> 00:13:05,110 of geef me mijn e-mail. 237 00:13:05,110 --> 00:13:08,010 >> U kunt meer arcane sturen berichten naar deze lampen 238 00:13:08,010 --> 00:13:09,700 te zeggen, aan en uit te schakelen. 239 00:13:09,700 --> 00:13:11,370 Maar dat is niet zo interessant. 240 00:13:11,370 --> 00:13:14,280 Je kunt zeggen, zet op rood, draaien op groen, zet blauw, 241 00:13:14,280 --> 00:13:15,990 allemaal met dezelfde lamp. 242 00:13:15,990 --> 00:13:20,990 En je kunt zelfs met een beetje meer savvy, zeggen, draai zelf naar blauw 243 00:13:20,990 --> 00:13:24,710 als het een sombere dag buiten, bijvoorbeeld. 244 00:13:24,710 --> 00:13:27,910 Het kan eigenlijk patchen in een weer-API en ontdek 245 00:13:27,910 --> 00:13:32,260 wat het weer is, of de tijd dag of andere dergelijke triggers. 246 00:13:32,260 --> 00:13:35,550 >> Dus, in feite, twee Eigen medewerkers CS50's, 247 00:13:35,550 --> 00:13:38,827 Dan Bradley en Ansel Duff hier, vriendelijk aangeschaft 248 00:13:38,827 --> 00:13:40,410 ons een hele hoop van deze lampen. 249 00:13:40,410 --> 00:13:42,910 En ze CS50's gebouwd eerste binaire bollen, 250 00:13:42,910 --> 00:13:46,850 waar we hier-- hebben vertegenwoordigd met deze speelse kleine magnets-- 251 00:13:46,850 --> 00:13:49,780 de verschillende placeholders we gezinspeeld gewoon een beetje geleden. 252 00:13:49,780 --> 00:13:52,572 >> Dus weg hier is de die plaats, twee, vier. 253 00:13:52,572 --> 00:13:54,030 En we zagen niet meer dan dat. 254 00:13:54,030 --> 00:13:55,613 Maar, natuurlijk, ze zijn machten van twee. 255 00:13:55,613 --> 00:13:59,490 Acht, 16, 32, 64, en 128. 256 00:13:59,490 --> 00:14:03,320 Dus als ik wil nu een beetje liefhebber zijn dan het gebruik van deze oude school schakelaar, 257 00:14:03,320 --> 00:14:07,310 Ik heb hier op deze iPad een super eenvoudige interface 258 00:14:07,310 --> 00:14:10,440 dat Dan Bradley, een oud- student en nu les collega, 259 00:14:10,440 --> 00:14:13,510 geprogrammeerd met behulp van enkele HTML en JavaScript, dat 260 00:14:13,510 --> 00:14:15,685 zijn markup en programmering respectievelijk talen. 261 00:14:15,685 --> 00:14:17,560 En je kan waarschijnlijk see-- zelfs in de Terug-- 262 00:14:17,560 --> 00:14:21,670 er is een groot pluspunt en een groot minpunt, plus een knop voor elk van deze bollen. 263 00:14:21,670 --> 00:14:25,740 En wat dit gaat me te laten doen is, bijvoorbeeld, klikt u op het plus 264 00:14:25,740 --> 00:14:28,250 en nu vertegenwoordigen, van Natuurlijk, welk nummer? 265 00:14:28,250 --> 00:14:28,750 Een. 266 00:14:28,750 --> 00:14:30,220 En ik kan het nog eens raken. 267 00:14:30,220 --> 00:14:31,480 Twee. 268 00:14:31,480 --> 00:14:32,800 Drie. 269 00:14:32,800 --> 00:14:33,950 Four. 270 00:14:33,950 --> 00:14:35,200 Vijf. 271 00:14:35,200 --> 00:14:36,360 Zes. 272 00:14:36,360 --> 00:14:36,880 Zeven. 273 00:14:36,880 --> 00:14:40,740 >> En hier nu krijgen we dat rollover, maar we een vierde bit ditmaal, 274 00:14:40,740 --> 00:14:42,180 dus nu hebben we acht. 275 00:14:42,180 --> 00:14:44,000 Dus konden we dit al geruime tijd doen. 276 00:14:44,000 --> 00:14:46,530 In feite, als een terzijde, hoe hoog konden we rekenen? 277 00:14:46,530 --> 00:14:48,318 Anyone? 278 00:14:48,318 --> 00:14:49,270 >> Publiek: 255. 279 00:14:49,270 --> 00:14:51,420 >> DAVID J. MALAN: 255, toch? 280 00:14:51,420 --> 00:14:54,900 Niet te veel zorgen te maken over de wiskunde voor nu, maar dat is een heel behoorlijk aantal. 281 00:14:54,900 --> 00:14:59,140 Maar het doet eigenlijk gebonden net hoeveel stukjes informatie, 282 00:14:59,140 --> 00:15:01,760 als een brief, of een grafische dat we konden vertegenwoordigen. 283 00:15:01,760 --> 00:15:02,697 >> Maar het maakt niet uit voor nu. 284 00:15:02,697 --> 00:15:04,530 Ik ga om te gaan en zet ze allemaal uit. 285 00:15:04,530 --> 00:15:09,670 En als ik kon, zou ik willen vragen voor een vrijwilliger, onze eerste volunteer-- 286 00:15:09,670 --> 00:15:11,342 oh, hello-- op het podium. 287 00:15:11,342 --> 00:15:14,050 De vangst is dat je moet zijn comfortabele verschijnen, zoals je duidelijk 288 00:15:14,050 --> 00:15:17,421 zijn in de voorkant van al je klasgenoten, en op het internet. 289 00:15:17,421 --> 00:15:20,420 En laat me een beetje verder kijken dan de-- wat dacht je hier in het witte shirt? 290 00:15:20,420 --> 00:15:20,920 En hand omhoog. 291 00:15:20,920 --> 00:15:22,071 Kom maar naar boven. 292 00:15:22,071 --> 00:15:22,820 Wat is je naam? 293 00:15:22,820 --> 00:15:23,760 >> PUBLIEK: 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 Dus wat er ook op deze iPad is een knop genaamd Game Mode. 297 00:15:29,820 --> 00:15:32,570 En deze Game Mode is zal me toelaten om input 298 00:15:32,570 --> 00:15:35,780 op voorhand een bepaalde decimaal nummer, de nummers wij mensen 299 00:15:35,780 --> 00:15:36,760 vertrouwd zijn. 300 00:15:36,760 --> 00:15:39,820 En dan zul je worden uitgedaagd hier om de knoppen te gebruiken 301 00:15:39,820 --> 00:15:42,140 de top-- een voor elk van deze bulbs-- 302 00:15:42,140 --> 00:15:45,050 om daadwerkelijk te achterhalen het patroon van gloeilampen 303 00:15:45,050 --> 00:15:46,970 dat staat voor het aantal in kwestie. 304 00:15:46,970 --> 00:15:47,790 >> En het spijt me, wat was je naam ook alweer? 305 00:15:47,790 --> 00:15:48,250 >> PUBLIEK: Jackie. 306 00:15:48,250 --> 00:15:48,620 >> DAVID J. MALAN: Jackie. 307 00:15:48,620 --> 00:15:48,920 Oke. 308 00:15:48,920 --> 00:15:49,740 Leuk je te ontmoeten. 309 00:15:49,740 --> 00:15:54,580 >> Dus laat me gaan en het programma in voor de wereld om het nummer 15 te zien. 310 00:15:54,580 --> 00:15:56,360 We zullen het klein te houden eerst hier bij. 311 00:15:56,360 --> 00:15:58,240 En ik ga naar Game Mode te gaan. 312 00:15:58,240 --> 00:16:01,160 En ik ga om aan te geven, geef ons het nummer 15. 313 00:16:01,160 --> 00:16:01,900 >> OK. 314 00:16:01,900 --> 00:16:05,510 En nu met iedereen watching-- als wilt u misschien staan ​​op deze manier, 315 00:16:05,510 --> 00:16:09,970 want het zal lijn up-- doorgaan en schakelen de acht knoppen aan de bovenkant 316 00:16:09,970 --> 00:16:12,530 om de bollen op te zetten of uit te schakelen als u dat nodig achten. 317 00:16:12,530 --> 00:16:13,530 >> PUBLIEK: OK. 318 00:16:13,530 --> 00:16:17,720 >> DAVID J. MALAN: En nee vreemdgaan door het raken van plus 15 keer. 319 00:16:17,720 --> 00:16:19,275 Oh, gaan we dat doen. 320 00:16:19,275 --> 00:16:20,069 >> PUBLIEK: Oh, wacht. 321 00:16:20,069 --> 00:16:20,610 Het spijt me zo. 322 00:16:20,610 --> 00:16:22,660 >> DAVID J. MALAN: U kunt ook draaien de lampen op individueel 323 00:16:22,660 --> 00:16:24,076 met elk van deze knoppen op de bovenkant. 324 00:16:24,076 --> 00:16:24,844 PUBLIEK: Oh, OK. 325 00:16:24,844 --> 00:16:27,429 Dus het zou like-- zijn 326 00:16:27,429 --> 00:16:28,220 DAVID J. MALAN: OK. 327 00:16:28,220 --> 00:16:29,100 Dus nu hebben we acht. 328 00:16:29,100 --> 00:16:31,280 Dus laten we pauzeren voor de publiek hier gaan. 329 00:16:31,280 --> 00:16:34,300 Welk nummer is Jackie momenteel vertegenwoordigen? 330 00:16:34,300 --> 00:16:34,800 11. 331 00:16:34,800 --> 00:16:35,730 Dus we zijn er bijna. 332 00:16:35,730 --> 00:16:38,360 333 00:16:38,360 --> 00:16:39,630 En uitstekend. 334 00:16:39,630 --> 00:16:41,487 Dus hebben we onze eerste winnaar. 335 00:16:41,487 --> 00:16:42,445 Gefeliciteerd. 336 00:16:42,445 --> 00:16:48,200 >> En we dachten dat we zouden moeten een aantal fantastische giveaways. 337 00:16:48,200 --> 00:16:50,860 Indien u graag een van dien aard zijn dorm kamer hier op de campus, 338 00:16:50,860 --> 00:16:56,126 je kunt jezelf een afstudeerproject gebruik nu deze API, dankzij Jackie. 339 00:16:56,126 --> 00:16:57,050 Dus 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 >> --als we konden, nog een zoals rond deze. 343 00:17:04,839 --> 00:17:07,690 Oh, nu wil iedereen een aantal lampen. 344 00:17:07,690 --> 00:17:11,790 Voor de zogenaamde hakker editie, we gaan het opvoeren a-- oh, 345 00:17:11,790 --> 00:17:12,770 ja, vrijblijvend. 346 00:17:12,770 --> 00:17:16,010 Ik denk dat je komt tot nu als je hand gaat naar beneden. 347 00:17:16,010 --> 00:17:16,800 Wat is je naam? 348 00:17:16,800 --> 00:17:17,424 >> PUBLIEK: Alex. 349 00:17:17,424 --> 00:17:19,440 DAVID J. MALAN: Alex, kom eens hier. 350 00:17:19,440 --> 00:17:26,190 Dus voor Alex, gaan we programma in een iets groter aantal. 351 00:17:26,190 --> 00:17:27,790 Misschien wel in orde. 352 00:17:27,790 --> 00:17:29,110 Het getal 50. 353 00:17:29,110 --> 00:17:29,744 >> PUBLIEK: OK. 354 00:17:29,744 --> 00:17:31,660 DAVID J. MALAN: Maar, als Ik zei-- en je misschien 355 00:17:31,660 --> 00:17:33,580 wil hier zo staan dat de knoppen lijn 356 00:17:33,580 --> 00:17:37,115 als je zou expect-- maar ik deed noemen dit de hacker editie. 357 00:17:37,115 --> 00:17:47,125 Dus-- good luck! 358 00:17:47,125 --> 00:17:48,416 >> [Lachen] 359 00:17:48,416 --> 00:17:58,570 360 00:17:58,570 --> 00:18:02,050 >> Bent u in staat om te zetten zal zijn ze indien je-- OK. 361 00:18:02,050 --> 00:18:02,880 Excellent. 362 00:18:02,880 --> 00:18:03,675 Prachtig. 363 00:18:03,675 --> 00:18:04,341 Gefeliciteerd. 364 00:18:04,341 --> 00:18:08,730 >> [Applaus] 365 00:18:08,730 --> 00:18:10,355 Ik denk dat ik zou moeten betalen. 366 00:18:10,355 --> 00:18:11,830 Proficiat aan Alex ook. 367 00:18:11,830 --> 00:18:12,330 OK. 368 00:18:12,330 --> 00:18:15,550 >> Dus de ultieme afhaalrestaurant hier is hopelijk, eerlijk gezegd, 369 00:18:15,550 --> 00:18:18,109 de simplicity-- de eenvoud waarmee 370 00:18:18,109 --> 00:18:20,650 kunt u een aantal leuke licht te krijgen bollen, blijkbaar in [onverstaanbaar]. 371 00:18:20,650 --> 00:18:23,000 Maar zij vertegenwoordigen, uiteindelijk, dezelfde ideeën 372 00:18:23,000 --> 00:18:26,310 waarmee wij mensen reeds al te bekend. 373 00:18:26,310 --> 00:18:28,660 Dus wat zou de volgende stap in de progressie 374 00:18:28,660 --> 00:18:30,920 van te proberen om iets te doen interessant met data 375 00:18:30,920 --> 00:18:34,950 en het vertegenwoordigen van inputs die niet alleen cijfers, maar zijn misschien letters of meer? 376 00:18:34,950 --> 00:18:37,820 >> Nou, het blijkt dat de computer wereld, voor vele jaren, 377 00:18:37,820 --> 00:18:43,300 gewoon aangenomen een willekeurige, maar een consistente standaard die aantallen kaarten 378 00:18:43,300 --> 00:18:44,610 om letters van het alfabet. 379 00:18:44,610 --> 00:18:47,120 Bijvoorbeeld, hier is een fragment uit dat in kaart brengen. 380 00:18:47,120 --> 00:18:48,350 Het heet Ascii. 381 00:18:48,350 --> 00:18:53,220 A-S-C-I-I. En dat is gewoon een tabel die hoofdletters letters-- kaarten 382 00:18:53,220 --> 00:18:56,600 in deze geval-- naar decimale getallen. 383 00:18:56,600 --> 00:18:57,890 >> Maar wat is de implicatie? 384 00:18:57,890 --> 00:19:01,090 Nou, als je echt wilt vertegenwoordigen iets als een e-mail of een tekst 385 00:19:01,090 --> 00:19:03,310 op een webpagina, u natuurlijk willen laten zien 386 00:19:03,310 --> 00:19:06,100 het menselijke letters van de alfabet, geen nummers. 387 00:19:06,100 --> 00:19:09,140 Dus afhankelijk van de context van het programma 388 00:19:09,140 --> 00:19:12,600 dat een gebruiker gebruikt, als het een webbrowser of een e-mail client, 389 00:19:12,600 --> 00:19:16,090 nummers kunnen zeker geïnterpreteerd als brieven. 390 00:19:16,090 --> 00:19:20,290 Dat wil zeggen, bitpatronen kan gemakkelijk worden geïnterpreteerd als brieven. 391 00:19:20,290 --> 00:19:24,700 >> En dus wat we kunnen hebben is de letter A wezen 392 00:19:24,700 --> 00:19:28,410 weergegeven als 65, B wordt weergegeven als 66. 393 00:19:28,410 --> 00:19:30,900 Dus als we een super kort woord, zoals hi, 394 00:19:30,900 --> 00:19:35,740 wat een computer zou uiteindelijk winkel in decimale maar echt in binaire, 395 00:19:35,740 --> 00:19:40,070 met behulp van enkele opeenvolging van bits, gebruik te maken van wat elektriciteit of andere manier, 396 00:19:40,070 --> 00:19:44,010 zouden de twee getallen 72 en 73. 397 00:19:44,010 --> 00:19:46,780 >> Maar het patroon van bits die vertegenwoordigt die waarden. 398 00:19:46,780 --> 00:19:49,820 Dus deze dan zijn hoe we kunnen vertegenwoordigen onze in-en uitgangen. 399 00:19:49,820 --> 00:19:52,630 En volstaat het om te zeggen, we kunnen doen meer complexe representaties 400 00:19:52,630 --> 00:19:56,450 uiteindelijk met dingen als afbeeldingen, video's, muziek en meer 401 00:19:56,450 --> 00:19:58,190 zoals we later deze term zullen zien. 402 00:19:58,190 --> 00:20:00,630 >> Zodat alleen verlaat dan algoritmen, deze sets 403 00:20:00,630 --> 00:20:03,490 van instructies waarmee we zijn het oplossen van concrete problemen. 404 00:20:03,490 --> 00:20:05,820 We passeren in inputs om algoritmen. 405 00:20:05,820 --> 00:20:09,630 En die algoritmes produceren uitgangen, hopelijk de juiste uitgangssignalen 406 00:20:09,630 --> 00:20:14,160 en hopelijk, ook, efficiënt vergaderd uitgangen. 407 00:20:14,160 --> 00:20:16,890 Met andere woorden, het is een ding te kunnen iets uit te voeren. 408 00:20:16,890 --> 00:20:20,790 Het is een ander ding om te implementeren iets goed of efficiënt. 409 00:20:20,790 --> 00:20:23,690 >> Bijvoorbeeld, een demonstratie dat we zijn dol op in de loop 410 00:20:23,690 --> 00:20:24,460 is deze. 411 00:20:24,460 --> 00:20:26,345 Maar deze dingen worden steeds steeds moeilijk te vinden. 412 00:20:26,345 --> 00:20:28,930 Maar dit is inderdaad een oude school telefoonboek, binnenste gedeelte 413 00:20:28,930 --> 00:20:32,580 zijn 1.000 plus pagina's van namen en telefoonnummers. 414 00:20:32,580 --> 00:20:34,830 En als ik wilde opzoeken iemand in dit telefoonboek, 415 00:20:34,830 --> 00:20:38,640 Ik kon gewoon doen een zeer naïef algoritme. 416 00:20:38,640 --> 00:20:42,150 Ik kon openen voor de eerste pagina en Ik zou op zoek gaan naar, zeg, iemand 417 00:20:42,150 --> 00:20:43,130 genaamd Mike Smith. 418 00:20:43,130 --> 00:20:46,160 En als hij niet op de eerste pagina, vooruitgang ik naar de tweede, 419 00:20:46,160 --> 00:20:49,120 en vervolgens naar het derde, en de vierde, enzovoort, 420 00:20:49,120 --> 00:20:51,430 totdat ik eindelijk Mike Smith. 421 00:20:51,430 --> 00:20:53,010 >> Nu is dat algoritme juist? 422 00:20:53,010 --> 00:20:53,896 >> PUBLIEK: Ja. 423 00:20:53,896 --> 00:20:54,248 >> DAVID J. MALAN: Ja. 424 00:20:54,248 --> 00:20:56,039 Als hij daar is, zal ik hem uiteindelijk vinden. 425 00:20:56,039 --> 00:20:58,820 Maar het is waarschijnlijk niet erg efficiënt, zeker niet snel, 426 00:20:58,820 --> 00:21:01,200 want, mijn god, waarom ben ik het verspillen van mijn tijd flipping 427 00:21:01,200 --> 00:21:04,500 door al deze pagina's als ik kon zeker dit fysiek sneller doen? 428 00:21:04,500 --> 00:21:08,210 >> Welnu, een lichte optimalisatie, zo te spreken, kan niet een pagina tegelijk behoren, 429 00:21:08,210 --> 00:21:11,610 maar twee, vier, zes, acht, 10. 430 00:21:11,610 --> 00:21:12,725 Nog juist? 431 00:21:12,725 --> 00:21:14,030 >> PUBLIEK: Nee 432 00:21:14,030 --> 00:21:17,040 >> DAVID J. MALAN: Dus als ik voor Zo overslaan Mike Smith. 433 00:21:17,040 --> 00:21:20,530 Maar zo lang als ik een back-pedaal een pagina, als ik hem voorbij schieten, 434 00:21:20,530 --> 00:21:25,240 misschien kunnen we corrigeren wat misschien een gotcha anders. 435 00:21:25,240 --> 00:21:26,020 >> Maar is het beter? 436 00:21:26,020 --> 00:21:27,469 Is het sneller? 437 00:21:27,469 --> 00:21:28,010 Ik bedoel, ja. 438 00:21:28,010 --> 00:21:30,950 Het is letterlijk twee keer zo snel als ik twee pagina's tegelijk. 439 00:21:30,950 --> 00:21:35,720 Dus als ik had oorspronkelijk 1.000 pagina's, nu heb ik alleen maar 500 keer omdraaien, 440 00:21:35,720 --> 00:21:39,429 niet volledig 1000 bladzijden krijgen potentieel in het ergste geval 441 00:21:39,429 --> 00:21:41,220 aan het einde van de telefoon boek, waar iemand 442 00:21:41,220 --> 00:21:44,380 zoals Mike Smith of iemand met een later naam zou eigenlijk. 443 00:21:44,380 --> 00:21:46,540 >> Maar, natuurlijk, we mensen zeker niet 444 00:21:46,540 --> 00:21:49,250 gaat dat te doen, zeker niet op dit punt in ons leven. 445 00:21:49,250 --> 00:21:51,454 Wat is een redelijke mens waarschijnlijk gaan doen? 446 00:21:51,454 --> 00:21:52,870 PUBLIEK: Ga direct naar de The9 S's. 447 00:21:52,870 --> 00:21:53,860 DAVID J. MALAN: Ga direct naar de S? 448 00:21:53,860 --> 00:21:55,563 Hoe ga ik meteen naar de S? 449 00:21:55,563 --> 00:21:57,342 >> PUBLIEK: Scheur het in tweeën. 450 00:21:57,342 --> 00:21:59,050 DAVID J. MALAN: Nou, er is geen markering. 451 00:21:59,050 --> 00:22:02,116 Dus ja, als er inderdaad een etiket of een kleverige tabblad voor S, 452 00:22:02,116 --> 00:22:03,240 we moeten springen daar. 453 00:22:03,240 --> 00:22:05,420 Maar het is vrij onschuldig. 454 00:22:05,420 --> 00:22:08,480 Dus het beste wat ik kan doen is ruwweg het gedeelte S of misschien ruwweg 455 00:22:08,480 --> 00:22:09,650 in het midden. 456 00:22:09,650 --> 00:22:12,110 Maar de sleutel mee te nemen nu-- en de intuïtie 457 00:22:12,110 --> 00:22:14,430 dat je hebt genomen voor verleend voor de jaren probably-- 458 00:22:14,430 --> 00:22:17,103 is dat wat doet u nu weet over dit probleem? 459 00:22:17,103 --> 00:22:19,320 >> PUBLIEK: [onverstaanbaar] 460 00:22:19,320 --> 00:22:22,290 >> DAVID J. MALAN: Mike Smith is zeker niet in deze helft van het probleem 461 00:22:22,290 --> 00:22:25,600 want Smith komt na het midden die ongeveer het deel M, 462 00:22:25,600 --> 00:22:26,510 het lijkt. 463 00:22:26,510 --> 00:22:30,340 Dus zoals je misschien hebt gezien op Visitas, kunnen we nu letterlijk 464 00:22:30,340 --> 00:22:31,737 scheuren dit probleem in de helft. 465 00:22:31,737 --> 00:22:32,320 PUBLIEK: Woo! 466 00:22:32,320 --> 00:22:33,690 DAVID J. MALAN: Het is steeds eenvoudiger. 467 00:22:33,690 --> 00:22:34,666 [Applaus] 468 00:22:34,666 --> 00:22:36,618 Daar ga je. 469 00:22:36,618 --> 00:22:39,060 [Lachen] 470 00:22:39,060 --> 00:22:41,870 En nu fundamenteel I heb het zelfde probleem, 471 00:22:41,870 --> 00:22:43,866 maar het is letterlijk half zo groot. 472 00:22:43,866 --> 00:22:45,240 Ik ben nog steeds op zoek naar Mike Smith. 473 00:22:45,240 --> 00:22:47,950 En ik durf te zeggen, ik kan het nog steeds hem zoeken op dezelfde manier 474 00:22:47,950 --> 00:22:51,200 splitsen het probleem helft nogmaals, scheuren het probleem weer 475 00:22:51,200 --> 00:22:54,140 in de helft, die nu laat me met Een probleem een ​​kwart van de grootte, 476 00:22:54,140 --> 00:22:58,710 drastisch te gooien dat de helft weg, en steeds weer herhalen van dit proces 477 00:22:58,710 --> 00:23:01,150 en weer en keek naar beneden op elk punt te zien 478 00:23:01,150 --> 00:23:03,400 Als Mike Smith op de pagina in kwestie. 479 00:23:03,400 --> 00:23:06,190 >> Nu als ik dit recht, uiteindelijk zal ik mezelf vinden 480 00:23:06,190 --> 00:23:11,085 met slechts een pagina waarop Mike Smith is als hij inderdaad in het telefoonboek. 481 00:23:11,085 --> 00:23:13,510 Natuurlijk, ik kon nooit Mike weer bellen. 482 00:23:13,510 --> 00:23:18,800 Maar het punt hier is dat als we begonnen met 1.000 pagina's, mijn eerste algoritme, 483 00:23:18,800 --> 00:23:21,620 flip de pagina, misschien 1.000 times-- zeker minder, want het is 484 00:23:21,620 --> 00:23:26,430 een S naam en niet een Z naam, maar als liefst 1.000 pagina's mogelijk. 485 00:23:26,430 --> 00:23:27,590 >> Tweede algoritme, beter. 486 00:23:27,590 --> 00:23:28,480 500 pagina's. 487 00:23:28,480 --> 00:23:31,230 Ten derde algoritme, hoewel, hoeveel stappen zou het 488 00:23:31,230 --> 00:23:35,520 naar een 1000 pagina verdelen telefoonboek doormidden als dat? 489 00:23:35,520 --> 00:23:37,000 10, te geven of te nemen. 490 00:23:37,000 --> 00:23:40,770 Dus alleen door flipping via dat telefoonboek, duiken en te veroveren, 491 00:23:40,770 --> 00:23:46,130 zo te zeggen, 10 keer, zal ik mijn weg naar beneden tot slechts een enkele pagina. 492 00:23:46,130 --> 00:23:48,880 >> En dus kunnen we deze intuïtie vastleggen nu een beetje grafisch 493 00:23:48,880 --> 00:23:51,320 als je gewoon overwegen deze super eenvoudige grafiek. 494 00:23:51,320 --> 00:23:55,470 We zijn op de x-as, of horizontale as is de grootte van mijn probleem, 495 00:23:55,470 --> 00:23:57,100 het aantal pagina's in het telefoonboek. 496 00:23:57,100 --> 00:23:59,040 En informatici algemeen willen noemen 497 00:23:59,040 --> 00:24:02,180 de grootte van een probleem n, waarbij n is slechts enkele variabele die 498 00:24:02,180 --> 00:24:04,310 represents-- in deze geval-- aantal pagina's. 499 00:24:04,310 --> 00:24:07,412 >> De verticale of y-as, is hier naar de tijd te lossen, 500 00:24:07,412 --> 00:24:09,870 misschien is het aantal pagina bochten, misschien is het aantal seconden 501 00:24:09,870 --> 00:24:11,960 of minuten, wat dan ook maateenheid is. 502 00:24:11,960 --> 00:24:14,337 En dus is deze rode lijn is het eerste algoritme, 503 00:24:14,337 --> 00:24:16,670 want er is een een op een verhouding tussen het aantal 504 00:24:16,670 --> 00:24:18,880 van de pagina's en de hoeveelheid tijd die het kost. 505 00:24:18,880 --> 00:24:22,240 >> Als Verizon verdubbelt het aantal pagina's in het telefoonboek van volgend jaar, 506 00:24:22,240 --> 00:24:24,590 mijn running tijd-- de tijd die dit in beslag 507 00:24:24,590 --> 00:24:27,610 die eerste algorithm-- verdubbelt in het ergste geval. 508 00:24:27,610 --> 00:24:30,690 Maar het tweede algoritme, waar ik flippen door twee, 509 00:24:30,690 --> 00:24:33,650 vereist minder tijd voor een bepaalde grootte probleem. 510 00:24:33,650 --> 00:24:36,090 Dus als ik dit veel pagina's hier-- bericht 511 00:24:36,090 --> 00:24:38,870 dat de gele lijn stelt minder tijd op te lossen. 512 00:24:38,870 --> 00:24:42,490 En inderdaad, vertegenwoordigt, we zullen zeggen, n meer dan twee. 513 00:24:42,490 --> 00:24:47,717 >> Maar wat is de vorm van de derde en laatste bocht uit gaat zien? 514 00:24:47,717 --> 00:24:50,800 Ja, het is inderdaad gaat look-- I weet niet wat je gaat zeggen. 515 00:24:50,800 --> 00:24:52,300 Maar laten we eens kijken wat je zou gaan zeggen. 516 00:24:52,300 --> 00:24:53,280 >> PUBLIEK: Net als dat. 517 00:24:53,280 --> 00:24:57,060 >> DAVID J. MALAN: Het gaat om te kijken als dit is een logaritmische slope-- exactly-- 518 00:24:57,060 --> 00:24:59,770 waarbij je deze merkwaardige helling. 519 00:24:59,770 --> 00:25:01,235 Het is niet langer een rechte lijn. 520 00:25:01,235 --> 00:25:05,000 En wat is overtuigend over, dat is dat hoewel de grafiek nu afgesneden, 521 00:25:05,000 --> 00:25:07,790 u kunt extrapoleren in uw erg dat die groene lijn is niet 522 00:25:07,790 --> 00:25:10,060 zal toenemen in hoogte dat alles veel 523 00:25:10,060 --> 00:25:13,500 als je verder te gaan bepaald dat de horizontale as. 524 00:25:13,500 --> 00:25:15,890 >> Inderdaad, Verizon, voor Zo zou verdubbelen 525 00:25:15,890 --> 00:25:19,100 het aantal pagina's in de telefoon boek tussen dit jaar en volgend jaar 526 00:25:19,100 --> 00:25:22,140 van 1000 tot 2000 pagina's, maar geen big deal. 527 00:25:22,140 --> 00:25:24,960 Met deze derde en laatste, er is een intuïtieve algoritme 528 00:25:24,960 --> 00:25:26,209 verdelen en veroveren. 529 00:25:26,209 --> 00:25:29,000 Het gaat om me hoeveel meer stappen volgend jaar om iemand te vinden 530 00:25:29,000 --> 00:25:29,700 Like Mike Smith? 531 00:25:29,700 --> 00:25:30,560 >> PUBLIEK: One. 532 00:25:30,560 --> 00:25:31,230 >> DAVID J. MALAN: Er is slechts een. 533 00:25:31,230 --> 00:25:34,430 En ze kunnen het verviervoudigen, is het kost me slechts twee stappen 534 00:25:34,430 --> 00:25:35,210 enzovoort. 535 00:25:35,210 --> 00:25:38,730 En dus dit is een bewijs van gewoon hoe sommige zorgvuldig ontwerp 536 00:25:38,730 --> 00:25:42,437 en enkele waardering voor wat uw ingangen zijn kunnen nog beter doen. 537 00:25:42,437 --> 00:25:44,270 Nu zijn we vals spelen een beetje in de zin 538 00:25:44,270 --> 00:25:46,350 dat we gebruik te maken van een veronderstelling. 539 00:25:46,350 --> 00:25:48,500 Wat is mijn veronderstelling over onze telefoonboek 540 00:25:48,500 --> 00:25:52,720 dat stond me toe om te verdelen en te veroveren in deze intuïtieve en toch correcte manier? 541 00:25:52,720 --> 00:25:53,705 >> PUBLIEK: [onverstaanbaar] 542 00:25:53,705 --> 00:25:54,580 DAVID J. MALAN: Ja. 543 00:25:54,580 --> 00:25:55,440 Dus het werd besteld. 544 00:25:55,440 --> 00:25:57,392 Het werd in alfabetische volgorde het telefoonboek bedrijf. 545 00:25:57,392 --> 00:26:00,100 Als het in willekeurige volgorde, dat zou een hel van een telefoonboek te zijn, 546 00:26:00,100 --> 00:26:02,850 maar het zou zeker niet lenen zich tot het algoritme 547 00:26:02,850 --> 00:26:05,950 Ik gebruikte, want je zou nooit toevallig over Mike Smith 548 00:26:05,950 --> 00:26:09,210 als je hield te delen in helft zo toevallig. 549 00:26:09,210 --> 00:26:12,060 >> Dus laten we nu formaliseren wat is duidelijk intuïtief. 550 00:26:12,060 --> 00:26:13,950 Dus iets genaamd pseudocode is waar we zullen 551 00:26:13,950 --> 00:26:15,780 beginnen met een aantal van onze aanvankelijke problemen. 552 00:26:15,780 --> 00:26:20,410 En dit is een generieke manier van het beschrijven Een algoritme of een computerprogramma, 553 00:26:20,410 --> 00:26:24,150 niet met C of C ++ of Java, of een specifieke taal, 554 00:26:24,150 --> 00:26:27,430 maar alleen met behulp van het Engels, met die een mens zou kunnen zijn vertrouwd. 555 00:26:27,430 --> 00:26:31,220 >> En we kunnen de pseudocode schrijven Dit probleem als volgt. 556 00:26:31,220 --> 00:26:33,520 Stap een, pak de telefoon boek. 557 00:26:33,520 --> 00:26:35,840 Stap twee, open voor midden van het telefoonboek. 558 00:26:35,840 --> 00:26:37,730 Stap drie, kijken naar de namen. 559 00:26:37,730 --> 00:26:40,630 Stap vier Als Smith is onder names-- 560 00:26:40,630 --> 00:26:42,960 >> En nu is dit een interessante constructie. 561 00:26:42,960 --> 00:26:44,290 Het is een beslissing punt. 562 00:26:44,290 --> 00:26:47,920 Het is een splitsing in de weg, als je zal, een tak, zo te zeggen. 563 00:26:47,920 --> 00:26:50,810 Dus ik ga laten inspringen alleen volgens afspraak step-- 564 00:26:50,810 --> 00:26:53,950 niet five-- dat is te zeg, ik zal Mike bellen. 565 00:26:53,950 --> 00:26:57,290 Dus dit inspringen, totaal arbitraire menselijke conventie, maar het is 566 00:26:57,290 --> 00:27:01,160 gewoon bedoeld om semantisch te brengen dat als Smith is onder namen, 567 00:27:01,160 --> 00:27:03,310 dan moet ik Mike bellen. 568 00:27:03,310 --> 00:27:06,630 >> Ondertussen in stap zes, kennisgeving dat de inkeping is gegaan. 569 00:27:06,630 --> 00:27:10,980 Zo anders is de andere vork in de weg, de andere weg die ik zou kunnen reizen. 570 00:27:10,980 --> 00:27:14,130 Dus anders als Smith eerder in het boek, wat is 571 00:27:14,130 --> 00:27:16,964 mijn volgende stap waarschijnlijk gaan om hier te zijn? 572 00:27:16,964 --> 00:27:18,380 PUBLIEK: Je gaat naar de linkerkant. 573 00:27:18,380 --> 00:27:21,004 DAVID J. MALAN: Ja, dus ga naar de linker helft van het telefoonboek. 574 00:27:21,004 --> 00:27:24,140 Gooi de rechter helft als Smith eerder in het boek is. 575 00:27:24,140 --> 00:27:27,140 Dus open midden de linkerhelft van het boek. 576 00:27:27,140 --> 00:27:30,240 >> En dan stap acht, ga naar drie lijn. 577 00:27:30,240 --> 00:27:34,520 En dit is een merkwaardige lus ik ben inducerende, een recursie zo te zeggen. 578 00:27:34,520 --> 00:27:35,990 Maar meer daarover in de toekomst. 579 00:27:35,990 --> 00:27:39,590 >> Ik gebruik mijn hetzelfde algoritme, mijn zelfde pseudocode, 580 00:27:39,590 --> 00:27:43,020 om hetzelfde probleem weer op te lossen want het enige wat er veranderd is 581 00:27:43,020 --> 00:27:46,550 is de omvang van het probleem, niet mijn doel, en niet de persoon 582 00:27:46,550 --> 00:27:47,340 Ik ben op zoek naar. 583 00:27:47,340 --> 00:27:51,610 Dus ik kan het algoritme hergebruiken dat ik al hebt gedefinieerd. 584 00:27:51,610 --> 00:27:53,580 >> Anders als Smith is later in book-- je misschien 585 00:27:53,580 --> 00:27:56,200 guess-- open voor het midden van de rechter helft van het boek. 586 00:27:56,200 --> 00:27:58,350 En nogmaals, ga naar drie lijn. 587 00:27:58,350 --> 00:28:01,480 Anders-- wat is de laatste regel In dit programma gaat het worden? 588 00:28:01,480 --> 00:28:03,580 Als hij niet onder de namen op de pagina Ik ben 589 00:28:03,580 --> 00:28:06,870 op, als hij niet eerder in het boek, en hij is niet later 590 00:28:06,870 --> 00:28:09,899 in het boek, wat weet ik is waar over Mike Smith nu? 591 00:28:09,899 --> 00:28:11,190 PUBLIEK: Hij is niet in het boek. 592 00:28:11,190 --> 00:28:12,731 DAVID J. MALAN: Hij is niet in het boek. 593 00:28:12,731 --> 00:28:16,040 Dus het beste wat ik kan doen is gewoon opgeven en stoppen met dit programma. 594 00:28:16,040 --> 00:28:16,540 Oke. 595 00:28:16,540 --> 00:28:20,350 Dus op dit punt, laten we eens een snelle rondleiding door een deel van wat te wachten staat. 596 00:28:20,350 --> 00:28:23,620 En in feite, ik ben hier lid geworden van door een aantal CS50 personeel. 597 00:28:23,620 --> 00:28:26,940 Als deze mensen konden alle join me hier op het podium. 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 >> Let wel, dit is alleen een subset van CS50 personeel 601 00:28:38,170 --> 00:28:42,380 want elk jaar hebben we bijna 100 medewerkers leden in rollen van natuurlijk assistenten, 602 00:28:42,380 --> 00:28:44,410 Teaching Fellows, en nog veel meer. 603 00:28:44,410 --> 00:28:45,700 Kom maar naar boven. 604 00:28:45,700 --> 00:28:48,820 Dus ze zullen ons hier mee onhandig voor slechts een moment 605 00:28:48,820 --> 00:28:54,230 zo geven we een wervelwind tour van wat moet je hier verwachten in de loop. 606 00:28:54,230 --> 00:28:59,640 >> Dus eerst en vooral, we hebben SAT / UNS als de sortering optie in de cursus. 607 00:28:59,640 --> 00:29:03,180 Dit is bewust bedoeld om een ​​optie waarbij zijn 608 00:29:03,180 --> 00:29:05,570 als je een beetje ongemakkelijk bij het zijn in de loop, 609 00:29:05,570 --> 00:29:09,390 en je hoeft bang failure-- zelfs als eerlijk gezegd niet betekent kwetsen van uw GPA, 610 00:29:09,390 --> 00:29:13,180 om een ​​B's geen A-- die precies wat zeker een gateway 611 00:29:13,180 --> 00:29:15,750 Natuurlijk zoals CS50 en andere inleidende cursussen, 612 00:29:15,750 --> 00:29:17,540 deze indeling optie is bedoeld om. 613 00:29:17,540 --> 00:29:19,930 >> Ik steun van harte aanmoedigen students-- vooral 614 00:29:19,930 --> 00:29:23,090 indien op de fence-- aan de start Natuurlijk SAT / UNS, zelfs blijven SAT / UNS. 615 00:29:23,090 --> 00:29:27,310 Maar je kan zeker overstappen naar een brief leerjaar van de vijfde maandag in de term. 616 00:29:27,310 --> 00:29:31,560 >> Eerlijk gezegd, toen ik was een eerstejaars in 1995, 617 00:29:31,560 --> 00:29:34,630 Ikzelf wist niet eens nemen CS50 want ik heb niet de moed 618 00:29:34,630 --> 00:29:36,540 om daadwerkelijk voet stap in de klas. 619 00:29:36,540 --> 00:29:40,020 Het leek een domeinnaam veel te onbekend voor mij en eigenlijk alleen 620 00:29:40,020 --> 00:29:43,080 voor die vrienden van mij, eerlijk gezegd, die had het programmeren 621 00:29:43,080 --> 00:29:45,570 omdat ze waren zes of misschien wel 10 jaar oud. 622 00:29:45,570 --> 00:29:48,640 En het was alleen omdat ik was kunnen CS50 nemen in mijn tijd 623 00:29:48,640 --> 00:29:52,720 in het equivalente versie SAT / UNS-- pass / fail terug in de dag-- 624 00:29:52,720 --> 00:29:53,850 dat zelfs ik nam 50. 625 00:29:53,850 --> 00:29:57,440 En een of andere manier ben ik hier weer met u vandaag. 626 00:29:57,440 --> 00:30:00,690 >> Nu ondertussen wat je nog meer moet in gedachten te houden over 50 627 00:30:00,690 --> 00:30:01,910 is gelijktijdige inschrijving. 628 00:30:01,910 --> 00:30:03,785 In tegenstelling tot geruchten dat je zou kunnen hebben gehoord, 629 00:30:03,785 --> 00:30:07,650 u kan in feite gelijktijdig inschrijven in CS50 en een andere klasse die 630 00:30:07,650 --> 00:30:12,150 voldoet aan dezelfde of een overlappende tijd als lezingen CS50's hier. 631 00:30:12,150 --> 00:30:16,420 Zie de syllabus voor de gegevens van de uitvoering daarvan. 632 00:30:16,420 --> 00:30:19,540 >> Lezingen, ondertussen, in tegenstelling tot wat is officieel in de catalogus, 633 00:30:19,540 --> 00:30:22,060 zal in het algemeen alleen ontmoeten voor slechts een uur. 634 00:30:22,060 --> 00:30:24,240 Bij gelegenheid kunnen we lopen een beetje lang. 635 00:30:24,240 --> 00:30:26,800 Maar houd in gedachten dat de doel in lezingen CS50's 636 00:30:26,800 --> 00:30:28,980 is om u te voorzien van een conceptueel overzicht, 637 00:30:28,980 --> 00:30:31,830 hopelijk een aantal demonstraties, misschien zelfs wat giveaways, 638 00:30:31,830 --> 00:30:34,390 van wat er te wachten staat voor de week die volgt. 639 00:30:34,390 --> 00:30:37,730 >> En zo in lezingen, zullen we verkennen die onderwerpen en voorbeelden bij elkaar, 640 00:30:37,730 --> 00:30:41,420 brengen studenten op het podium, en personeel op het podium zo vaak als we kunnen, 641 00:30:41,420 --> 00:30:43,740 voor slechts een paar uur per week. 642 00:30:43,740 --> 00:30:47,435 Secties, ondertussen, zal die door deze mensen hier-- vele 643 00:30:47,435 --> 00:30:50,060 van hen te leren kerels, sommige van hen natuurlijk assistants-- wil 644 00:30:50,060 --> 00:30:51,160 worden wekelijks gebeurt. 645 00:30:51,160 --> 00:30:52,940 >> En wat is belangrijk om te blijven in het achterhoofd is dat we 646 00:30:52,940 --> 00:30:55,920 denk have-- niet in tegenstelling tot de eerste Avonden, de muziek class-- 647 00:30:55,920 --> 00:30:59,220 verschillende tracks van secties voor studenten minder comfortabel, meer 648 00:30:59,220 --> 00:31:01,150 comfortabel, en ergens tussenin. 649 00:31:01,150 --> 00:31:03,559 En eerlijk gezegd, weet je als je bent minder comfortabel. 650 00:31:03,559 --> 00:31:05,600 En weet je waarschijnlijk als je bent meer comfortabel. 651 00:31:05,600 --> 00:31:09,920 En als je niet echt zeker, je bent per definitie ergens tussenin. 652 00:31:09,920 --> 00:31:12,850 Dus als het tijd is om deel in een week of zo, per de syllabus, 653 00:31:12,850 --> 00:31:14,070 zullen we u vragen die vraag. 654 00:31:14,070 --> 00:31:16,890 En u kunt zelf selecteren op basis op uw eigen comfort niveau 655 00:31:16,890 --> 00:31:22,220 en met students-- met groene dots-- vergelijkbaar comfort voor u. 656 00:31:22,220 --> 00:31:25,710 >> Ondertussen hebben we probleem sets, die uiteindelijk zal 657 00:31:25,710 --> 00:31:28,310 definieer uw ervaring in deze cursus. 658 00:31:28,310 --> 00:31:30,370 Ze zijn meestal aangeboden in meerdere edities. 659 00:31:30,370 --> 00:31:34,150 Een standaard editie die we het meest verwachten elke student in de cursus aan te pakken 660 00:31:34,150 --> 00:31:37,900 maar ook een zogenaamde hakker editie dat biedt geen enkele vorm van extra krediet 661 00:31:37,900 --> 00:31:41,980 regelrechte maar echt het opscheppen om te zeggen dat je geprobeerd en aangepakt 662 00:31:41,980 --> 00:31:45,250 hacker edities van de cursus die benaderen soortgelijk materiaal 663 00:31:45,250 --> 00:31:47,370 maar vanuit een meer verfijnde hoek. 664 00:31:47,370 --> 00:31:49,480 >> Wat wij bieden voor de standaard editie, voor, 665 00:31:49,480 --> 00:31:51,420 Weer een super meerderheid van studenten, zijn niet 666 00:31:51,420 --> 00:31:54,060 alleen walk-throughs, die zijn video's onder leiding van medewerkers van de cursus 667 00:31:54,060 --> 00:31:57,840 dat je echt lopen door de problemen cursus en mogelijke vormgeving 668 00:31:57,840 --> 00:31:58,910 implementaties. 669 00:31:58,910 --> 00:32:01,434 En wij ook, na de feite bieden nabespreking, 670 00:32:01,434 --> 00:32:03,350 waarbij als je je afvraagt hoe je zou kunnen hebben 671 00:32:03,350 --> 00:32:05,930 of had moeten opgelost sommige probleem, het onderwijzend personeel 672 00:32:05,930 --> 00:32:08,640 zal u door die op video ook. 673 00:32:08,640 --> 00:32:14,350 >> Ondertussen wachten welke ook zijn laat vijf dagen en het feit 674 00:32:14,350 --> 00:32:16,680 dat we zullen dalen uw laagste probleem set score. 675 00:32:16,680 --> 00:32:20,370 We waarderen het zeker dat in ruil voor de werklast die 50 verwacht 676 00:32:20,370 --> 00:32:24,020 van u, het leven in de weg staat Soms, zo niet vijf keer. 677 00:32:24,020 --> 00:32:26,150 En dus dit zal bieden je een beetje van flexibiliteit, 678 00:32:26,150 --> 00:32:29,400 uitbreiding van uw deadline van, zeg, een Donderdag 's middags naar een vrijdag' s middags. 679 00:32:29,400 --> 00:32:33,150 Zie de syllabus voor de implementatie details daarvan. 680 00:32:33,150 --> 00:32:34,702 >> Nu, wat wacht nu? 681 00:32:34,702 --> 00:32:36,660 En het wordt alleen optredende me nu hoe lang 682 00:32:36,660 --> 00:32:38,333 Ik heb jullie staan ​​hier op het podium. 683 00:32:38,333 --> 00:32:39,060 >> [Lachen] 684 00:32:39,060 --> 00:32:41,867 >> DAVID J. MALAN: Maar we krijgen de climax afwerking duurde niet lang. 685 00:32:41,867 --> 00:32:43,700 Dus wat te wachten staat op het gebied van het probleem sets? 686 00:32:43,700 --> 00:32:47,099 Nou ja, misschien een teaser van wat we allemaal vorig jaar deden met uw voorgangers. 687 00:32:47,099 --> 00:32:49,140 In de eerste Probleemverzameling Vorig jaar introduceerden we 688 00:32:49,140 --> 00:32:51,630 Scratch, een grafische programmeertaal die 689 00:32:51,630 --> 00:32:54,570 laat je letterlijk programmeren door slepen en neerzetten van puzzelstukjes, 690 00:32:54,570 --> 00:32:57,220 soort, die denken aan de constructen 691 00:32:57,220 --> 00:32:59,260 zal slechts een week te zien Vandaar dat, wanneer we overschakelen 692 00:32:59,260 --> 00:33:01,870 een meer traditionele taal, bekend als C. 693 00:33:01,870 --> 00:33:03,930 >> Vorig jaar gingen we dit probleem set, 694 00:33:03,930 --> 00:33:06,720 waarbij voor cryptografie, het decoderen van informatie 695 00:33:06,720 --> 00:33:10,410 om te voorkomen dat de overheid of vrienden ' ogen die je niet wilt zien. 696 00:33:10,410 --> 00:33:12,540 Gecodeerde hier is een bericht dat u binnenkort 697 00:33:12,540 --> 00:33:15,740 kunnen decoderen of de-scramble. 698 00:33:15,740 --> 00:33:17,960 >> Breakout was een probleem set van vorig jaar, waarin 699 00:33:17,960 --> 00:33:21,530 je deze nieuwe gevonden programmering gebruiken vaardigheden om daadwerkelijk te implementeren 700 00:33:21,530 --> 00:33:24,840 een spel wherein-- als je kan herinneren van childhood-- 701 00:33:24,840 --> 00:33:28,040 het doel was om de bash stenen die bovenop het scherm 702 00:33:28,040 --> 00:33:30,190 hier, de opslag een scoren langs de weg, 703 00:33:30,190 --> 00:33:35,460 en de uitvoering van uw eigen algoritmes waarbij deze oplossing uiteindelijk 704 00:33:35,460 --> 00:33:37,357 laat je het spel speelt. 705 00:33:37,357 --> 00:33:39,440 Ondertussen, later in de semester, zullen wij u geven 706 00:33:39,440 --> 00:33:43,470 een woordenboek van 143.091 woorden Engels. 707 00:33:43,470 --> 00:33:46,300 En je wordt uitgedaagd om een ​​programma te schrijven dat 708 00:33:46,300 --> 00:33:50,260 spell cheques, documenten, door laden dat veel woorden in het geheugen 709 00:33:50,260 --> 00:33:52,300 zo efficiënt mogelijk. 710 00:33:52,300 --> 00:33:54,240 Algemeen pitting u tegen je klasgenoten 711 00:33:54,240 --> 00:33:56,610 Als u zich aanmeldt voor een beetje een uitdaging in het klassement 712 00:33:56,610 --> 00:34:00,090 om te zien wie het minst kan gebruiken seconden van de looptijd, 713 00:34:00,090 --> 00:34:03,550 en het minste aantal megabytes aan geheugen, 714 00:34:03,550 --> 00:34:08,659 en eigenlijk fine-tuning van uw programma's te zijn ongelooflijk resources efficiënt niet 715 00:34:08,659 --> 00:34:09,820 gewoon tijd. 716 00:34:09,820 --> 00:34:13,239 >> Vorig jaar, ook, hebben we gekeken naar het einde van het semester aan web programmeren. 717 00:34:13,239 --> 00:34:16,230 En inderdaad, we zullen dat opnieuw doen jaar met meerdere sets probleem, 718 00:34:16,230 --> 00:34:20,290 introductie tot de technieken en de mentaliteit waarmee u kunt toepassen 719 00:34:20,290 --> 00:34:23,489 deze programmering vaardigheden om websites, dynamische websites, 720 00:34:23,489 --> 00:34:26,639 websites die daadwerkelijk op te lossen problemen en gedragen zich anders 721 00:34:26,639 --> 00:34:30,620 en zijn niet alleen statisch sites met statische informatie. 722 00:34:30,620 --> 00:34:32,854 >> Het laatste project uiteindelijk definieert echter, 723 00:34:32,854 --> 00:34:34,770 de climax van de cursus voor studenten, waarin 724 00:34:34,770 --> 00:34:37,228 u zult worden uitgedaagd om te implementeren bijna alles van belang 725 00:34:37,228 --> 00:34:40,590 aan u, zo lang als het een of andere manier baseert zich op de lessen van de cursus. 726 00:34:40,590 --> 00:34:42,930 >> En zoals je zag in de video bij de start, 727 00:34:42,930 --> 00:34:47,340 zullen we het semester met de conclusie CS50 Hackathon, dat indien, onbekende, 728 00:34:47,340 --> 00:34:51,420 zal beginnen om 07:00 een nacht en eindigen om 7:00 uur de volgende ochtend. 729 00:34:51,420 --> 00:34:53,614 Rond 09:00 gaan we Om in eerste diner. 730 00:34:53,614 --> 00:34:55,489 Rond 01:00 gaan we Om in tweede diner. 731 00:34:55,489 --> 00:34:57,490 En als je nog steeds staan ​​op 05:00, we 732 00:34:57,490 --> 00:35:00,320 zal pendelbus u naar IHOP voor het ontbijt. 733 00:35:00,320 --> 00:35:04,980 >> De CS50 Fair, ondertussen, is een evenement waaraan 2.000 plus docenten, studenten, 734 00:35:04,980 --> 00:35:07,850 en medewerkers uit de hele campus zal komen om je prestaties te zien 735 00:35:07,850 --> 00:35:10,150 in de loop en de uiteindelijke projecten en creaties 736 00:35:10,150 --> 00:35:14,960 die u op uw laptop, desktops, of misschien zelfs gloeilampen. 737 00:35:14,960 --> 00:35:17,340 >> Ondertussen kantooruren en de steunconstructie. 738 00:35:17,340 --> 00:35:20,480 En nu zou het geweest een betere tijd om u allen brengen. 739 00:35:20,480 --> 00:35:24,310 >> Spreekuur vindt plaats vier nachten een week voor meerdere uren elke nacht 740 00:35:24,310 --> 00:35:27,710 algemeen 20 tot 30 van de personeel cursus van dienst in een keer 741 00:35:27,710 --> 00:35:31,240 om u te voorzien van intieme een-op-een mogelijkheden voor ondersteuning 742 00:35:31,240 --> 00:35:33,790 met de cursus probleem sets. 743 00:35:33,790 --> 00:35:36,120 Tutoring ook zal zijn beschikbaar, met name 744 00:35:36,120 --> 00:35:39,630 voor studenten minder comfortable-- of durven zeggen minstens comfortable-- voor wie 745 00:35:39,630 --> 00:35:41,869 openingstijden zijn niet de stimulerendste milieu 746 00:35:41,869 --> 00:35:43,660 en zeker niet het meest stress-vrij. 747 00:35:43,660 --> 00:35:47,430 Vooral wanneer deadlines te drukken, we zullen proactief koppelen u ons 748 00:35:47,430 --> 00:35:51,440 met een lid van het personeel om te werken met op sommige reguliere schema zoals uw behoeften 749 00:35:51,440 --> 00:35:53,850 en hun schema het toelaat. 750 00:35:53,850 --> 00:35:55,260 >> En personeel. 751 00:35:55,260 --> 00:36:01,020 Sta mij toe om Davon, Rob introduceren, en Gabriel, de hoofden van dit jaar. 752 00:36:01,020 --> 00:36:02,370 Wilt u elke willen zeggen-- 753 00:36:02,370 --> 00:36:03,349 >> [Applaus] 754 00:36:03,349 --> 00:36:03,849 --een woord. 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 hier is de manager opleiding, die 758 00:36:13,220 --> 00:36:15,730 betekent in zijn voltijds rol Hij helpt bij de uitvoering 759 00:36:15,730 --> 00:36:18,424 en de logistiek van de CS50. 760 00:36:18,424 --> 00:36:19,340 DAVON: Ja, hallo, jongens. 761 00:36:19,340 --> 00:36:20,965 Je zult een hoop te zien om me op het kantoor uren. 762 00:36:20,965 --> 00:36:22,110 Zal ik onderwijzen secties. 763 00:36:22,110 --> 00:36:25,150 En als je e-mails vooruit te schieten, Ik zal waarschijnlijk te reageren. 764 00:36:25,150 --> 00:36:27,670 Dus ik zie heel veel van jullie het hele semester. 765 00:36:27,670 --> 00:36:29,890 En welkom bij CS50. 766 00:36:29,890 --> 00:36:38,330 >> DAVID J. MALAN: En nu Gabriel, die zelf was gewoon een eerstejaars vorig jaar, 767 00:36:38,330 --> 00:36:41,820 maar voor de afgelopen paar jaar heeft de exploitatie van zijn eigen versie van CS50 768 00:36:41,820 --> 00:36:44,660 in Brazilië, waardoor hij gedownload alle content-- de cursus 769 00:36:44,660 --> 00:36:46,890 hetgeen duidelijk wordt gefilmd en geplaatst online-- 770 00:36:46,890 --> 00:36:51,480 zodat hij kon vertalen naar Portugese en vervolgens te leren meer dan 100 771 00:36:51,480 --> 00:36:54,610 van zijn klasgenoten over de loop van een paar jaar, 772 00:36:54,610 --> 00:36:57,650 onderwijs in zijn moedertaal curriculum van de cursus. 773 00:36:57,650 --> 00:36:58,964 >> GABRIEL: Hello. 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: Hoi, ik ben Gabriel. 777 00:37:07,710 --> 00:37:09,340 Ik ben het hoofd TF van de cursus. 778 00:37:09,340 --> 00:37:10,780 En ik hoop dat u zult genieten van CS50. 779 00:37:10,780 --> 00:37:12,830 Dit is CS50. 780 00:37:12,830 --> 00:37:14,697 >> DAVID J. MALAN: nu voor Rob. 781 00:37:14,697 --> 00:37:15,780 Oh, je inleiding wil? 782 00:37:15,780 --> 00:37:16,696 >> ROB: Nee, ik weet het niet. 783 00:37:16,696 --> 00:37:18,225 [Lachen] 784 00:37:18,225 --> 00:37:19,475 DAVID J. MALAN: En Rob Boden. 785 00:37:19,475 --> 00:37:22,300 [Lachen] 786 00:37:22,300 --> 00:37:23,800 ROB: Hoi, ik ben Rob. 787 00:37:23,800 --> 00:37:27,220 Dit is mijn vijfde jaar betrokken bij de cursus. 788 00:37:27,220 --> 00:37:29,220 Elk jaar, het is gewoon een beter en betere klasse, 789 00:37:29,220 --> 00:37:31,550 dus jullie zijn duidelijk zal geweldig zijn. 790 00:37:31,550 --> 00:37:33,181 Ik hoop dat jullie allemaal plezier mee te hebben. 791 00:37:33,181 --> 00:37:34,430 Ik ga om plezier te hebben met het. 792 00:37:34,430 --> 00:37:36,670 Zo zie je rond. 793 00:37:36,670 --> 00:37:38,445 >> DAVID J. MALAN: En de tijd zal niet toestaan ​​ons-- 794 00:37:38,445 --> 00:37:39,670 >> [Applaus] 795 00:37:39,670 --> 00:37:41,661 >> De tijd zal het ons niet toe iedereen introduceren 796 00:37:41,661 --> 00:37:44,660 op het podium en al hun collega die winkelen klassen vandaag. 797 00:37:44,660 --> 00:37:47,390 Maar staat u mij toe om te introduceren Belinda en CS50 Puzzle 798 00:37:47,390 --> 00:37:49,550 Dag, die deze wacht komende zaterdag, waarin 799 00:37:49,550 --> 00:37:51,800 is de eerste van de grootschalige evenementen cursus. 800 00:37:51,800 --> 00:37:54,300 >> Deze in het bijzonder bedoeld te hameren op het punt 801 00:37:54,300 --> 00:37:57,580 dat informatica is uiteindelijk niet over programmeren, maar 802 00:37:57,580 --> 00:37:59,280 over het oplossen van problemen in het algemeen. 803 00:37:59,280 --> 00:38:01,450 En Puzzle Day, zoals u zult zien, brengt u 804 00:38:01,450 --> 00:38:04,207 en je klasgenoten together-- we hopen dat dit zaterdag. 805 00:38:04,207 --> 00:38:04,961 >> BELINDA: OK. 806 00:38:04,961 --> 00:38:05,750 Hoi, jongens. 807 00:38:05,750 --> 00:38:06,740 Dus bedankt. 808 00:38:06,740 --> 00:38:10,120 Dus als onze illustere kapitein zei, mijn naam is Belinda. 809 00:38:10,120 --> 00:38:12,100 Ik ben een tweedejaars op Quincy House. 810 00:38:12,100 --> 00:38:15,730 >> Ik, net als jullie, nam CS50 vorig jaar, vonden het geweldig. 811 00:38:15,730 --> 00:38:17,960 Ik heb een zwak voor jullie in de derde rij. 812 00:38:17,960 --> 00:38:21,384 En ik ben trots om te zeggen, ik ben nu in een vaste relatie 813 00:38:21,384 --> 00:38:22,300 met CS50 [onverstaanbaar]. 814 00:38:22,300 --> 00:38:22,799 OK. 815 00:38:22,799 --> 00:38:26,140 Dat was mijn kreupele versie van een grap. 816 00:38:26,140 --> 00:38:28,320 >> Hoe dan ook, dus bewegen op, wilde alleen maar uit te nodigen 817 00:38:28,320 --> 00:38:31,439 jullie allemaal op de i-lab, of HBS netelroos. 818 00:38:31,439 --> 00:38:33,730 We gaan te hebben Puzzel Dag 12:00-03:00. 819 00:38:33,730 --> 00:38:37,680 En het is een geweldige kans voor u jongens om je collega CS vrienden te ontmoeten, 820 00:38:37,680 --> 00:38:42,780 oplossen van een aantal niet-CS puzzels, zoals Captain genoemd, en ook eten wat gratis eten, 821 00:38:42,780 --> 00:38:46,910 verdient een aantal geweldige prijzen, zoals cadeaubonnen, $ 75 per persoon, 822 00:38:46,910 --> 00:38:48,400 en also-- wat was het? 823 00:38:48,400 --> 00:38:49,540 Wii U of zo? 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 Voor onze tombola. 827 00:38:52,330 --> 00:38:52,830 Awesome. 828 00:38:52,830 --> 00:38:54,310 Dus ik zal blijven hangen na de les. 829 00:38:54,310 --> 00:38:56,770 En als jullie nog vragen, laat het me weten. 830 00:38:56,770 --> 00:38:59,980 >> DAVID J. MALAN: En je zult zien, dan dit is er niets te doen vandaag. 831 00:38:59,980 --> 00:39:01,920 Het eerste probleem vastgesteld gaat uit vrijdag. 832 00:39:01,920 --> 00:39:05,420 Maar om ons naar huis te brengen vandaag, wil ik graag u kennismaken met name een meer 833 00:39:05,420 --> 00:39:09,080 lid van het personeel, Colton Ogden hier, wier handen zijn nu 834 00:39:09,080 --> 00:39:12,250 boven je beschermd met Deze MIDI-controller 835 00:39:12,250 --> 00:39:15,170 naar het huis van de punt verder hamer dat informatica, ook, 836 00:39:15,170 --> 00:39:19,130 heeft toepasbaarheid veel verder dan techniek en STEM en informatica zelf, 837 00:39:19,130 --> 00:39:22,890 zelfs uit te breiden tot dergelijke domeinen als muziek. 838 00:39:22,890 --> 00:39:30,590 >> Colton heeft vriendelijk offered-- ik dacht een van hen was van plan om de scherpstelling vast. 839 00:39:30,590 --> 00:39:34,400 Andrew, als we konden opbrengen aandacht hier voor slechts een moment. 840 00:39:34,400 --> 00:39:36,780 >> Wat Colton heeft gedaan vooraf is het programma 841 00:39:36,780 --> 00:39:40,345 dit apparaat, dit pad van de knoppen dat je hier ziet afgebeeld up, 842 00:39:40,345 --> 00:39:42,470 als een MIDI-controller, waarbij elk van deze knoppen 843 00:39:42,470 --> 00:39:47,080 is aangesloten op een bepaalde muzieknoot of een geluid algemeen een opname, 844 00:39:47,080 --> 00:39:50,445 zodanig dat door het spelen van patronen van deze knopen, net als bitpatronen, 845 00:39:50,445 --> 00:39:52,620 kunnen andere vormen hogere concepten. 846 00:39:52,620 --> 00:39:56,750 Zal hij in staat zijn uiteindelijk hier aan ons huis te nemen vandaag? 847 00:39:56,750 --> 00:39:59,540 Zonder verdere omhaal, indien we konden de lichten dimmen, 848 00:39:59,540 --> 00:40:03,145 en zet het scherm achter Colton. 849 00:40:03,145 --> 00:40:03,865 >> PUBLIEK: Woo! 850 00:40:03,865 --> 00:40:06,090 >> DAVID J. MALAN: Dit is CS50. 851 00:40:06,090 --> 00:40:10,518 >> [Muziek] 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 >> Dat is het voor CS50. 856 00:42:56,450 --> 00:42:57,950 We zullen je zien vrijdag. 857 00:42:57,950 --> 00:42:59,890 Sommige taart wacht op u in het transept. 858 00:42:59,890 --> 00:43:04,046 859 00:43:04,046 --> 00:43:08,850 >> [Muziek] 860 00:43:08,850 --> 00:45:49,227