1 00:00:00,000 --> 00:00:15,059 >> [Muziek] 2 00:00:15,059 --> 00:00:19,170 >> Dit is CS50-- Harvard University's introductie 3 00:00:19,170 --> 00:00:22,070 het intellectuele ondernemingen van de informatica 4 00:00:22,070 --> 00:00:23,800 en de kunst van het programmeren. 5 00:00:23,800 --> 00:00:27,020 En mijn naam is David Malan, en Ik zat net te denken vanmorgen, 6 00:00:27,020 --> 00:00:33,120 het is verbazingwekkend al 20 jaar vandaag sinds ik voor het laatst zat, waar jullie nu doen. 7 00:00:33,120 --> 00:00:33,840 >> Het was 1996. 8 00:00:33,840 --> 00:00:37,550 Ik was een tweedejaars, en ik nam CS50 voor de allereerste keer. 9 00:00:37,550 --> 00:00:40,890 En ik had niet eens opgestaan ​​de zenuw om het te nemen mezelf eerste jaar, 10 00:00:40,890 --> 00:00:42,500 mede vanwege de tijd. 11 00:00:42,500 --> 00:00:44,782 Informatica voor mij was een beetje leuk, meh. 12 00:00:44,782 --> 00:00:46,990 Ik was een beetje een geek groeiende up, maar ik heb niet echt 13 00:00:46,990 --> 00:00:49,180 enig intellectueel interesse in wat leek 14 00:00:49,180 --> 00:00:51,920 gewoon een hele hoop te zijn mensen programmeren van alle tijd. 15 00:00:51,920 --> 00:00:53,904 >> En ik was bang om eerlijk te zijn. 16 00:00:53,904 --> 00:00:56,820 De cursus en informatica meer algemeen had en in zekere mate, 17 00:00:56,820 --> 00:01:01,230 heeft nog steeds deze reputatie van een veld aan pas op, al was het maar omdat er zo velen van ons 18 00:01:01,230 --> 00:01:04,410 niet vertrouwd zijn met het en onzeker van. 19 00:01:04,410 --> 00:01:08,480 En het was echt niet totdat ik gewinkeld deze klasse die tweedejaars fall-- 20 00:01:08,480 --> 00:01:10,880 en zelfs dan, ik heb alleen ingeschreven omdat de professor-- 21 00:01:10,880 --> 00:01:13,950 een van mijn eerste mentor, Brian Kernighan nu bij Princeton-- 22 00:01:13,950 --> 00:01:15,700 kon ik neem de klas Pass mislukken. 23 00:01:15,700 --> 00:01:18,020 En inderdaad, dat is de reden waarom vandaag hebben we laten en aan te moedigen 24 00:01:18,020 --> 00:01:20,030 studenten tot deze klasse nemen sat / unsat. 25 00:01:20,030 --> 00:01:22,040 >> En alleen dan, door de einde van het semester 26 00:01:22,040 --> 00:01:24,870 besefte ik als, wow, dit was niet zo'n een onbekend gebied. 27 00:01:24,870 --> 00:01:26,850 Inderdaad, dit was een zeer empowerment veld, 28 00:01:26,850 --> 00:01:28,970 en nog veel meer spannende, vooral later 29 00:01:28,970 --> 00:01:32,809 zoals ik volgde cursussen in Dramatic Arts 101 en Latijns-A 30 00:01:32,809 --> 00:01:34,600 en dan uiteindelijk graduate school archeologie, 31 00:01:34,600 --> 00:01:37,860 heb ik echt beginnen met het zien snijpunten van dit gebied, computer 32 00:01:37,860 --> 00:01:41,979 wetenschap, met de geesteswetenschappen, natuurwetenschappen, de kunsten, geneeskunde, 33 00:01:41,979 --> 00:01:42,520 en dergelijke. 34 00:01:42,520 --> 00:01:44,420 En dus dat is wat is gewoon zo keurige over informatica 35 00:01:44,420 --> 00:01:46,930 uiteindelijk, zoals we hopen dat u zult see-- is de toepasbaarheid 36 00:01:46,930 --> 00:01:50,280 op deze andere terreinen, en hoe u kunt neemt een deel van de huidige en het semester 37 00:01:50,280 --> 00:01:53,070 ideeën en praktische vaardigheden terug naar je eigen domein, 38 00:01:53,070 --> 00:01:58,200 en eigenlijk verken dit kruispunt van de vrije kunsten en de wetenschappen. 39 00:01:58,200 --> 00:02:02,690 >> Dus 73% van u, als laatste jaar een indicatie is, 40 00:02:02,690 --> 00:02:04,390 hebben een CS natuurlijk nooit eerder genomen. 41 00:02:04,390 --> 00:02:06,389 Dus als je, zoals ik, je bent gevoel een beetje 42 00:02:06,389 --> 00:02:09,190 bang, of eerlijk gezegd ben je niet echt zeker waarom u nog hier bent. 43 00:02:09,190 --> 00:02:11,510 Misschien heb je gewoon volgen enkele vrienden uit om Sanders nu. 44 00:02:11,510 --> 00:02:12,490 Dat is helemaal prima. 45 00:02:12,490 --> 00:02:15,059 Het doel is hier om te haken u en u geruststellen 46 00:02:15,059 --> 00:02:17,100 dat als je kijkt naar Links en rechts, 47 00:02:17,100 --> 00:02:21,480 je gaat om klasgenoten te zien met zo veel of zo weinig ervaring 48 00:02:21,480 --> 00:02:22,890 dat je zelf zou kunnen hebben. 49 00:02:22,890 --> 00:02:25,280 En inderdaad, we delen wat statistieken later vandaag 50 00:02:25,280 --> 00:02:28,120 wat de demografie van de klas meestal uitzien. 51 00:02:28,120 --> 00:02:31,440 >> En als toegevoegde reassurance-- en dat we bedoel omdat ik nam in de loop 52 00:02:31,440 --> 00:02:33,252 enkele jaren ago-- in syllabus van de cursus 53 00:02:33,252 --> 00:02:35,460 is dit-- dat wat uiteindelijk kwesties in deze cursus 54 00:02:35,460 --> 00:02:38,040 is niet zozeer waar je terecht up ten opzichte van je klasgenoten, 55 00:02:38,040 --> 00:02:43,110 maar waar in week 11, het einde van de semester, uiteindelijk ten opzichte van jezelf 56 00:02:43,110 --> 00:02:46,280 in week 0, wat waar we zijn hier vandaag. 57 00:02:46,280 --> 00:02:48,704 En dit is wat ik besefte al die jaren geleden. 58 00:02:48,704 --> 00:02:50,620 En ik weet dat veel classes zeg dit, maar het is 59 00:02:50,620 --> 00:02:52,450 met name het geval in de informatica. 60 00:02:52,450 --> 00:02:55,320 Aan het eind van de dag, dit gebied onbekend is zoals het was voor mij 61 00:02:55,320 --> 00:02:58,590 en zou kunnen zijn voor u, is echt alleen over het oplossen van problemen. 62 00:02:58,590 --> 00:03:01,324 En als zodanig, is het dit hebben toepasbaarheid op andere gebieden te krijgen. 63 00:03:01,324 --> 00:03:03,490 En inderdaad, als we probeerden te destilleren wat dit betekent, 64 00:03:03,490 --> 00:03:06,897 dit is het oplossen van problemen in zijn essentie, ik durf te zeggen. 65 00:03:06,897 --> 00:03:09,480 Er is input-- zo wat het is dat je probeert op te lossen. 66 00:03:09,480 --> 00:03:12,264 Er is output, dat is hopelijk de oplossing voor dit probleem. 67 00:03:12,264 --> 00:03:14,180 En dan, als we zouden zeggen in de informatica, 68 00:03:14,180 --> 00:03:17,310 er is deze zwarte doos in de midden dat je niet per se 69 00:03:17,310 --> 00:03:19,450 zorgen te maken over hoe het werkt. 70 00:03:19,450 --> 00:03:22,230 Je jezelf uiteindelijk misschien implementeren wat er in die doos. 71 00:03:22,230 --> 00:03:25,194 Maar met het oog op de huidige en nog veel meer over het algemeen in het leven, alles wat je zorg over 72 00:03:25,194 --> 00:03:26,610 is dat deze problemen worden opgelost. 73 00:03:26,610 --> 00:03:29,340 >> En wat is deze cursus uiteindelijk over is het verkennen 74 00:03:29,340 --> 00:03:31,700 het kruispunt van deze ingangen en uitgangen, 75 00:03:31,700 --> 00:03:34,410 en deze zogenaamde algoritmes, zoals we binnenkort zullen zien, 76 00:03:34,410 --> 00:03:37,450 dat implementeren wat onder daar, de motorkap. 77 00:03:37,450 --> 00:03:40,487 Maar deze ingangen en deze outputs-- Wat betekent dat eigenlijk? 78 00:03:40,487 --> 00:03:43,570 Goed aan het eind van de dag moeten we een manier die informatie. 79 00:03:43,570 --> 00:03:46,660 Dit geldt met name in een computer, die zo luxe en complex als het 80 00:03:46,660 --> 00:03:48,160 lijkt, is een vrij domme apparaat. 81 00:03:48,160 --> 00:03:52,240 Het duurt electricity-- of uit een kabel of batterij input-- 82 00:03:52,240 --> 00:03:55,820 en dan maakt het wat programmeerde reacties op het scherm. 83 00:03:55,820 --> 00:03:57,970 >> Maar hoe komen we uit gaan er af? 84 00:03:57,970 --> 00:03:59,470 Nou, wat is een probleem dat moet worden opgelost? 85 00:03:59,470 --> 00:04:01,050 Nou ja, misschien kunnen we op het begin van elk semester, 86 00:04:01,050 --> 00:04:02,841 proberen om opkomst te nemen in een kamer als dit. 87 00:04:02,841 --> 00:04:04,750 Dus ik zou kunnen doen als een, twee, drie. 88 00:04:04,750 --> 00:04:07,060 Of misschien, als ik het deed naar soort bijhouden 89 00:04:07,060 --> 00:04:10,560 van myself-- om spoor van things-- houden Ik kon al snel opraken van de vingers. 90 00:04:10,560 --> 00:04:14,650 Dus zou ik gewoon hash marks-- één persoon, twee, drie, vier, vijf, zes, 91 00:04:14,650 --> 00:04:15,431 zeven acht. 92 00:04:15,431 --> 00:04:17,930 En ieder van ons hebben waarschijnlijk dit gedaan, of op je handen 93 00:04:17,930 --> 00:04:19,680 of op een stuk papier. 94 00:04:19,680 --> 00:04:22,140 En dit is eigenlijk gewoon iets genaamd unary notation-- 95 00:04:22,140 --> 00:04:26,130 waar als u slechts één letter in uw alfabet, één of hash 96 00:04:26,130 --> 00:04:29,440 merk dat geval wordt voor elk ingang die u wilt tellen, 97 00:04:29,440 --> 00:04:32,330 je nodig hebt om van een van deze zetten letters-- één van deze merken. 98 00:04:32,330 --> 00:04:32,510 >> Okee. 99 00:04:32,510 --> 00:04:34,790 Dat is allemaal prima en goed en niet zo ingewikkeld. 100 00:04:34,790 --> 00:04:37,800 Maar computers zijn niet allemaal dat veel ingewikkelder. 101 00:04:37,800 --> 00:04:40,770 Sterker nog, de meeste van jullie waarschijnlijk weet zelfs als je hebt niet echt 102 00:04:40,770 --> 00:04:44,080 overwogen wat dit betekent, dat computers alleen begrijpen nullen 103 00:04:44,080 --> 00:04:45,870 en ones-- de zogenaamde binaire systeem. 104 00:04:45,870 --> 00:04:49,390 Wij mensen daarentegen, zo veel geavanceerder zover 105 00:04:49,390 --> 00:04:51,770 als we begrijpen nullen door de negens. 106 00:04:51,770 --> 00:04:55,740 >> Maar zelfs als binair is, aanvankelijk blik, niet zo bekend, 107 00:04:55,740 --> 00:05:00,330 Het blijkt dat het is net als de systemen en de ideeën die we al weten. 108 00:05:00,330 --> 00:05:02,420 Dus bijvoorbeeld, overweeg dan dit. 109 00:05:02,420 --> 00:05:03,896 Dit is slechts een opeenvolging van symbolen. 110 00:05:03,896 --> 00:05:05,770 En u allen, wanneer een blik op het, waarschijnlijk 111 00:05:05,770 --> 00:05:09,380 denk 123-- niets echt interessant daar. 112 00:05:09,380 --> 00:05:11,940 Maar waarom is het dit aantal, 123? 113 00:05:11,940 --> 00:05:14,440 Dit zijn slechts glyphs op de Screen-- gewoon patronen 114 00:05:14,440 --> 00:05:16,387 dat iemand zou hebben getrokken of getypt. 115 00:05:16,387 --> 00:05:18,970 Maar als je net als mij, je waarschijnlijk herinneren van de basisschool 116 00:05:18,970 --> 00:05:21,610 dat er soort kolommen of plaatsen hier. 117 00:05:21,610 --> 00:05:25,340 Er is de ene's plaats en de tienen plaats en honderd's place. 118 00:05:25,340 --> 00:05:29,820 De reden dat dit 123 en niet alleen een patroon van drie symbolen 119 00:05:29,820 --> 00:05:33,090 is omdat, natuurlijk, als we hebben een een in de honderden plaats, 120 00:05:33,090 --> 00:05:36,610 je doet de wiskunde van 100 keer één, en dan twee op de tien de plaats. 121 00:05:36,610 --> 00:05:41,390 Dus dat is 10 keer 2, en vervolgens drie in de een de plaats en dat is 1 keer 3. 122 00:05:41,390 --> 00:05:45,670 En als je al die optellen, van Natuurlijk krijg je 100 plus 20 plus 3. 123 00:05:45,670 --> 00:05:48,220 >> Dus begonnen we met slechts een patroon van symbols-- een alphabet-- 124 00:05:48,220 --> 00:05:51,670 maar dan in kaart gebracht we betekenis op door middel van deze kolommen. 125 00:05:51,670 --> 00:05:54,450 Nou, het blijkt dat computers zijn echt niet 126 00:05:54,450 --> 00:05:56,300 alles wat anders dan jij en ik. 127 00:05:56,300 --> 00:06:01,840 Maar in plaats van de bevoegdheden van de 10 gebruikt, zo te speak-- 1, 10, 100, 1000, 128 00:06:01,840 --> 00:06:04,330 10.000 plek en zo forth-- ze eigenlijk 129 00:06:04,330 --> 00:06:08,930 gewoon gebruik maken van bevoegdheden van 2-- zodat een, 2, 4, en 130 00:06:08,930 --> 00:06:12,810 als we meer cijfers, 8, 16, 32, 64, 128, enzovoort. 131 00:06:12,810 --> 00:06:16,050 En dus dit is hoe een computer zou het getal 0 te vertegenwoordigen, 132 00:06:16,050 --> 00:06:17,300 net als wij mensen. 133 00:06:17,300 --> 00:06:21,660 >> 0, 0, 0-- en je kunt waarschijnlijk wel raden welk patroon van nullen en enen, 134 00:06:21,660 --> 00:06:24,610 als een computer kan alleen spreken 0 of 1-- wat 135 00:06:24,610 --> 00:06:29,110 patroon gaat vertegenwoordigen het aantal mensen die we kennen als 1? 136 00:06:29,110 --> 00:06:30,590 Yeah-- 0, 0, 1. 137 00:06:30,590 --> 00:06:31,090 Okee. 138 00:06:31,090 --> 00:06:35,900 Dus 0, 0, 1 is de manier waarop wij vertegenwoordigen 1, dus je zou zijn dan geneigd 139 00:06:35,900 --> 00:06:39,510 om het nummer 2 vertegenwoordigen, als u de vier de plaats en de twee de plaats 140 00:06:39,510 --> 00:06:48,290 als de enige plek, zou je kunnen zeggen, nou ja, als we hadden een 1 op de ene plaats, 141 00:06:48,290 --> 00:06:50,430 en nu willen we tellen tot 2, zou je 142 00:06:50,430 --> 00:06:53,310 doe dit en laat dit een nul. 143 00:06:53,310 --> 00:06:56,397 Maar natuurlijk is dit niet hoe het decimale stelsel werkt ook niet. 144 00:06:56,397 --> 00:06:58,230 Als je een cijfer in deze beide kolommen, 145 00:06:58,230 --> 00:06:59,563 je moet het rekenkundig doen. 146 00:06:59,563 --> 00:07:01,930 Dus welk nummer heb ik per ongeluk gewoon vertegenwoordigen? 147 00:07:01,930 --> 00:07:06,710 >> Dus het is 3, omdat 2 maal 1 plus 1 1 maal natuurlijk geeft ons drie. 148 00:07:06,710 --> 00:07:08,340 Dus zou dit twee. 149 00:07:08,340 --> 00:07:12,730 De bit soort flips, zogezegd als 0 wordt een een, net als een 9 rollen boven 150 00:07:12,730 --> 00:07:14,840 en wordt een 0 als u de 1 te dragen. 151 00:07:14,840 --> 00:07:16,510 Dit zou dan drie uiteraard. 152 00:07:16,510 --> 00:07:20,170 Four-- ander interessant ding gebeurt, waarbij degenen rollen 153 00:07:20,170 --> 00:07:21,750 en je draagt ​​de 1, om zo te zeggen. 154 00:07:21,750 --> 00:07:23,320 Dus dit is natuurlijk 4. 155 00:07:23,320 --> 00:07:25,160 >> Maar als je snel vooruit nu, Wat is het grootste aantal te gaan 156 00:07:25,160 --> 00:07:26,660 te zijn dat een computer kan in? 157 00:07:26,660 --> 00:07:30,420 158 00:07:30,420 --> 00:07:32,380 Dus het is slechts zeven in dit geval, toch? 159 00:07:32,380 --> 00:07:35,570 Want je hebt een een op de vier, in één van de twee, één in het. 160 00:07:35,570 --> 00:07:36,900 Dus dat is 4 plus 2 plus 1. 161 00:07:36,900 --> 00:07:37,972 Dus dat geeft je zeven. 162 00:07:37,972 --> 00:07:39,680 Inderdaad, zou lijken op het eerste gezicht 163 00:07:39,680 --> 00:07:43,750 dat computers kunnen rekenen niet hoger dan dit. 164 00:07:43,750 --> 00:07:45,210 >> Maar dit is natuurlijk niet waar. 165 00:07:45,210 --> 00:07:48,243 Wat doen wij mensen doen als we willen hoger te zijn dan als 999 tellen? 166 00:07:48,243 --> 00:07:51,000 167 00:07:51,000 --> 00:07:53,900 dragen alleen de een en net Een vierde cijfer links. 168 00:07:53,900 --> 00:07:55,070 En dus inderdaad we konden. 169 00:07:55,070 --> 00:07:57,900 We kunnen een acht hebben plaats en de plaats van een 16's, 170 00:07:57,900 --> 00:08:02,000 en een 32 de plaats, 64, 128-- en u kan gewoon doorgaan op tot oneindig. 171 00:08:02,000 --> 00:08:04,640 Dus deze nullen en ones-- de zogenaamde binaire system-- 172 00:08:04,640 --> 00:08:10,290 zijn wat een computer wetenschapper zou doen over het algemeen noemen een beetje, of binair cijfer. 173 00:08:10,290 --> 00:08:13,590 >> Maar nu, hoe kunnen we krijgen van de concept of de grafische vormgeving van deze dingen 174 00:08:13,590 --> 00:08:14,620 tot een werkelijke computer? 175 00:08:14,620 --> 00:08:17,170 We lijken te zijn het overslaan van een stap hier. 176 00:08:17,170 --> 00:08:20,210 Nou, de enige ingang aan het einde van de dag, om mijn laptop hier 177 00:08:20,210 --> 00:08:22,060 Hierdoor stroom van elektriciteit. 178 00:08:22,060 --> 00:08:24,560 Zelfs als het een lange is geweest keer sinds je nagedacht over 179 00:08:24,560 --> 00:08:26,580 of nooit over nagedacht hoe elektriciteit werkt, 180 00:08:26,580 --> 00:08:30,909 er elektronen die in of uit, en dat is mijn soort ingang. 181 00:08:30,909 --> 00:08:34,659 >> Dus als dat is alles wat we zijn krijgen als input hier, 182 00:08:34,659 --> 00:08:36,830 wat kunnen we doen met die informatie? 183 00:08:36,830 --> 00:08:40,040 Nou, we kunnen denken aan een nul gewoon een afwezigheid van elektriciteit. 184 00:08:40,040 --> 00:08:42,540 Niets is flowinw, niets is bewegen, gebeurt er niets. 185 00:08:42,540 --> 00:08:44,690 Dat is gewoon de standaard state-- nul. 186 00:08:44,690 --> 00:08:48,200 Maar als er elektriciteit stroomt, waarom doen we niet gewoon willekeurig, maar wereldwijd 187 00:08:48,200 --> 00:08:50,250 consequent, noem dat een one. 188 00:08:50,250 --> 00:08:54,760 >> Dus gewoon door het hebben van geen macht, we hebben een nul, ja macht, 189 00:08:54,760 --> 00:08:57,520 we hebben een een-- geen macht, ja macht. 190 00:08:57,520 --> 00:09:01,520 En op die manier, met behulp van iets meer fysieke of elektronische 191 00:09:01,520 --> 00:09:05,340 beginnen we aan dit begrip uit te voeren iets hetzij als een of nul. 192 00:09:05,340 --> 00:09:07,230 Inderdaad, kunnen we doen het gewoon hier. 193 00:09:07,230 --> 00:09:10,590 Dus hier heb ik niet drie, maar acht lampen, die elk 194 00:09:10,590 --> 00:09:11,810 heeft zijn eigen schakelaar. 195 00:09:11,810 --> 00:09:15,760 >> En dus als ik wilde te vertegenwoordigen het getal zeven hier, 196 00:09:15,760 --> 00:09:18,510 Ik zou kunnen blijken in de volgende drie gloeilampen. 197 00:09:18,510 --> 00:09:21,470 En inderdaad, binnenin mijn computer is miljoenen, 198 00:09:21,470 --> 00:09:25,650 miljarden van de dingen die gewoon zijn kleiner dan die, genoemd transistors, 199 00:09:25,650 --> 00:09:27,330 switches, dat je gewoon aan en uit zetten. 200 00:09:27,330 --> 00:09:30,420 Dus deze zijn relatief big-- big-- schakelaars in mijn laptop-- 201 00:09:30,420 --> 00:09:32,150 zijn vele, vele, vele, veel meer schakelaars. 202 00:09:32,150 --> 00:09:35,160 Maar alles wat ze doen is precies dat-- zet iets op, zet iets af. 203 00:09:35,160 --> 00:09:38,076 En als zodanig kan een computer vertegenwoordigen, met die miljoenen of miljarden 204 00:09:38,076 --> 00:09:40,480 transistors, veel en veel nullen en enen. 205 00:09:40,480 --> 00:09:43,160 En er is nog steeds dat andere hardware kunt u op te slaan informatie op lange termijn, 206 00:09:43,160 --> 00:09:45,243 zodat wanneer u trek de plug, hoef je niet verliezen. 207 00:09:45,243 --> 00:09:46,900 Maar dat is een verhaal voor een andere dag. 208 00:09:46,900 --> 00:09:51,170 >> Dus wat kunnen we doen met deze bits? 209 00:09:51,170 --> 00:09:54,309 Kunnen we alleen maar om te nemen de druk af van mij-- 210 00:09:54,309 --> 00:09:56,600 zou iemand willen komen hier en bieden een demo? 211 00:09:56,600 --> 00:09:57,516 Ik zag deze hand eerste. 212 00:09:57,516 --> 00:09:58,709 Wat is je naam? 213 00:09:58,709 --> 00:09:59,250 Maday: Maday. 214 00:09:59,250 --> 00:10:00,542 DAVID MALAN: Maday, kom op maximaal. 215 00:10:00,542 --> 00:10:01,250 Aangenaam kennis te maken. 216 00:10:01,250 --> 00:10:02,390 Maday: Leuk je te ontmoeten. 217 00:10:02,390 --> 00:10:02,930 >> DAVID MALAN: Kom op deze manier. 218 00:10:02,930 --> 00:10:04,182 Ik wil niet dat je lip omhoog. 219 00:10:04,182 --> 00:10:04,682 Okee. 220 00:10:04,682 --> 00:10:11,090 Dus hier, we hebben, notice-- één, two-- we bewerken dat out-- één, twee, vier, 221 00:10:11,090 --> 00:10:13,350 acht, 16, 32, 64, 128. 222 00:10:13,350 --> 00:10:14,220 Dit is een bewuste keuze. 223 00:10:14,220 --> 00:10:17,370 Er is acht bits hier-- binaire digits-- nullen en enen. 224 00:10:17,370 --> 00:10:21,460 En wat een bruikbare eenheid measure-- niet zo nuttig een maateenheid 225 00:10:21,460 --> 00:10:21,999 op zichzelf. 226 00:10:21,999 --> 00:10:24,290 Meestal je wilt op zijn minst acht van deze dingen, alias 227 00:10:24,290 --> 00:10:24,790 een byte. 228 00:10:24,790 --> 00:10:26,230 Dus hebben we een byte bits hier. 229 00:10:26,230 --> 00:10:31,130 >> Dus als we wilden je uitdagen met, bijvoorbeeld, spelling out, in binaire, 230 00:10:31,130 --> 00:10:33,230 deze waarde hier-- 42. 231 00:10:33,230 --> 00:10:35,140 Wil je een gooi naar dat duren? 232 00:10:35,140 --> 00:10:36,034 >> Maday: [ONVERSTAANBAAR]. 233 00:10:36,034 --> 00:10:38,700 DAVID MALAN: Ja, maar duw de kleine witte schakelaars in de voorkant. 234 00:10:38,700 --> 00:10:41,290 En u wilt spellen uit 42, en voor het oprapen 235 00:10:41,290 --> 00:10:44,061 is dit CS50 spanning bal als je dit. 236 00:10:44,061 --> 00:10:44,560 Okee. 237 00:10:44,560 --> 00:10:46,420 Dus je hebt 32. 238 00:10:46,420 --> 00:10:48,430 We gaan nodig hebben 42. 239 00:10:48,430 --> 00:10:51,410 Dus dat is een acht, dus dat is 40. 240 00:10:51,410 --> 00:10:54,160 En uitstekend-- zeer mooi gedaan. 241 00:10:54,160 --> 00:10:55,186 Dank je. 242 00:10:55,186 --> 00:10:58,790 >> [APPLAUS] 243 00:10:58,790 --> 00:10:59,290 Okee. 244 00:10:59,290 --> 00:11:00,623 Dus we hebben nog een stressbal. 245 00:11:00,623 --> 00:11:03,595 Laten we dit nog een keer doen als we kunnen. 246 00:11:03,595 --> 00:11:05,368 Een andere vrijwilliger? 247 00:11:05,368 --> 00:11:07,970 Gratis stressbal, gratis stressbal. 248 00:11:07,970 --> 00:11:08,470 OK. 249 00:11:08,470 --> 00:11:11,640 Hier in het midden, wil je naar beneden te komen? 250 00:11:11,640 --> 00:11:14,100 Okee. 251 00:11:14,100 --> 00:11:15,552 Ik weet. 252 00:11:15,552 --> 00:11:16,360 Daar gaan we. 253 00:11:16,360 --> 00:11:20,818 >> Dus de nummers hier-- kom naar beneden. 254 00:11:20,818 --> 00:11:21,567 Wat is jouw naam? 255 00:11:21,567 --> 00:11:21,984 >> DAVEY: Davey. 256 00:11:21,984 --> 00:11:22,820 >> DAVID MALAN: Davey. 257 00:11:22,820 --> 00:11:23,320 OK. 258 00:11:23,320 --> 00:11:24,810 Kom op, Davey. 259 00:11:24,810 --> 00:11:25,890 Aangenaam kennis te maken. 260 00:11:25,890 --> 00:11:28,639 En wat we gaan je hebt spell-- als je er kon blijven hangen 261 00:11:28,639 --> 00:11:32,810 voor slechts een moment-- is de nummer 50. 262 00:11:32,810 --> 00:11:36,293 Maar, maar, maar maar, maar deze zijn lagere school magneten voor een reden. 263 00:11:36,293 --> 00:11:39,370 264 00:11:39,370 --> 00:11:43,327 Ik ben net een beetje harder, oké? 265 00:11:43,327 --> 00:11:44,160 Er is nog steeds acht. 266 00:11:44,160 --> 00:11:46,820 267 00:11:46,820 --> 00:11:47,320 Okee. 268 00:11:47,320 --> 00:11:48,486 Dus wat hebben we daar? 269 00:11:48,486 --> 00:11:51,356 We hebben 32. 270 00:11:51,356 --> 00:11:54,344 Nice. 271 00:11:54,344 --> 00:11:58,610 32 plus 16 geeft ons 48-- zo dichtbij. 272 00:11:58,610 --> 00:12:00,390 En prachtig. 273 00:12:00,390 --> 00:12:02,831 Proficiat aan Davey ook. 274 00:12:02,831 --> 00:12:05,720 >> [APPLAUS] 275 00:12:05,720 --> 00:12:06,516 >> Okee. 276 00:12:06,516 --> 00:12:09,390 Dus we kunnen dit doen de hele dag lang, en het maakt niet zo heel veel meer te halen 277 00:12:09,390 --> 00:12:10,800 interessant en meer uitdagend. 278 00:12:10,800 --> 00:12:13,250 Maar dat is echt de point-- is hoe relatief eenvoudig 279 00:12:13,250 --> 00:12:16,930 Het is aan het eind van de dag, wat een computer doet om informatie, 280 00:12:16,930 --> 00:12:21,740 inputs slaan en uiteindelijk op te slaan of te vertegenwoordigen die uitgangen. 281 00:12:21,740 --> 00:12:23,750 Maar cijfers alleen zijn niet zo interessant. 282 00:12:23,750 --> 00:12:26,069 >> Dus mensen, enkele jaren geleden, besloten, weet je wat? 283 00:12:26,069 --> 00:12:27,860 Het zou mooi zijn als zijn computers waren niet alleen 284 00:12:27,860 --> 00:12:31,030 calculators voor rekenkundige operaties, maar eigenlijk kon 285 00:12:31,030 --> 00:12:35,209 dingen doen, zoals tekstverwerking, of e-mail, of meer moderne incarnaties 286 00:12:35,209 --> 00:12:36,500 van dergelijke technologieën. 287 00:12:36,500 --> 00:12:40,680 En dus is de wereld besloten willekeurig, maar universeel, 288 00:12:40,680 --> 00:12:44,380 dat als je wilt naar de hoofdstad op te slaan letter A in een computer, weet je wat? 289 00:12:44,380 --> 00:12:47,730 Laten we gewoon allemaal over eens op te slaan sommige patroon van nullen en ones-- 290 00:12:47,730 --> 00:12:52,422 bits-- die uiteindelijk vertegenwoordigt het decimale getal 65. 291 00:12:52,422 --> 00:12:53,630 We zullen het allemaal over eens. 292 00:12:53,630 --> 00:12:56,620 >> 66 zou vertegenwoordigen B, 67 zou C vertegenwoordigen, 293 00:12:56,620 --> 00:13:00,210 en er is trossen van andere patronen van nullen en enen, of de onderliggende cijfers, 294 00:13:00,210 --> 00:13:02,224 dat zou betekenen andere letters nog steeds. 295 00:13:02,224 --> 00:13:04,390 Dus als je soort mentaal absorberen dit voor een moment, 296 00:13:04,390 --> 00:13:10,900 Ik heb met opzet zetten A tot en met I, waarbij H een 72 en ik is 73. 297 00:13:10,900 --> 00:13:15,830 Als een computer dan, in het kader van een tekstverwerkingsprogramma of een e-mail, 298 00:13:15,830 --> 00:13:19,620 bleek onder de motorkap te hebben deze patronen van bits-- patroon 299 00:13:19,620 --> 00:13:22,500 bits vertegenwoordigen 72, dan 73, dan 33-- 300 00:13:22,500 --> 00:13:26,640 wat zou dit betekenen in dat programma? 301 00:13:26,640 --> 00:13:28,150 >> Dus hi, en dan is er iets. 302 00:13:28,150 --> 00:13:31,460 We weten niet per se weten, maar wel 33-- niet op de grafiek earlier-- 303 00:13:31,460 --> 00:13:33,170 was gewoon een uitroepteken. 304 00:13:33,170 --> 00:13:38,870 Dus 72 was H, 73 is I, 33 gebeurt een uitroepteken nog steeds. 305 00:13:38,870 --> 00:13:41,719 Maar dat is allemaal goed en wel, en in feite tegenwoordig, in plaats van 306 00:13:41,719 --> 00:13:43,760 gewoon gebruik maken van zeven of acht bits, dankzij iets 307 00:13:43,760 --> 00:13:46,530 genoemd Unicode tegenstelling om terug te Ascii in de dag, 308 00:13:46,530 --> 00:13:50,010 kunnen we eigenlijk nog meer te vertegenwoordigen interessante personages dan alleen 309 00:13:50,010 --> 00:13:52,980 deze originele Engels bevooroordeeld letters. 310 00:13:52,980 --> 00:13:56,030 Maar we kunnen ook nog vertegenwoordigen netter dingen zoals kleuren. 311 00:13:56,030 --> 00:13:59,750 >> Als je ooit het acroniem heb gehoord RGB, rood, groen, blauw, dat 312 00:13:59,750 --> 00:14:03,510 betekent gewoon dat een computer gebruikt doorgaans drie sets van bits-- 313 00:14:03,510 --> 00:14:06,760 sommige aantal bits dat vertegenwoordigen een nummer voor hoeveel red je wilt, 314 00:14:06,760 --> 00:14:08,940 een andere set van bits voor hoeveel groen je wilt, 315 00:14:08,940 --> 00:14:11,430 en een andere set nummer voor hoeveel blauw je wilt. 316 00:14:11,430 --> 00:14:14,457 Dus een groot aantal betekent veel rood, klein aantal betekent dat er geen rood. 317 00:14:14,457 --> 00:14:16,290 En dus zijn dit soort van middelbare waarden hier. 318 00:14:16,290 --> 00:14:20,180 >> Dus geef me wat rood, geef me wat groen, en geef me een beetje blauw. 319 00:14:20,180 --> 00:14:24,260 En als je mix die drie tinten kleur samen, in casu 320 00:14:24,260 --> 00:14:26,850 U krijgt deze duistere schaduw geel of bruin. 321 00:14:26,850 --> 00:14:32,330 Maar dat patroon van acht plus acht plus eight-- zo 24 bits-- 322 00:14:32,330 --> 00:14:36,550 links naar rechts, is hoe een computer zou die bepaalde kleur te geven. 323 00:14:36,550 --> 00:14:38,090 Nu is dit gewoon een stip op een scherm. 324 00:14:38,090 --> 00:14:42,230 Als je kijkt echt dicht bij uw TV uw computer, zie je puntjes of pixels. 325 00:14:42,230 --> 00:14:45,420 En als je een hele raster van pixels horizontaal en verticaal, 326 00:14:45,420 --> 00:14:46,630 je hebt beelden. 327 00:14:46,630 --> 00:14:49,029 En dan als je rekening een beeld en daarna wassen 328 00:14:49,029 --> 00:14:52,070 toon jezelf een ander beeld, een ander afbeelding, een ander beeld, een ander beeld, 329 00:14:52,070 --> 00:14:54,760 echt snel, je uiteraard films. 330 00:14:54,760 --> 00:14:56,109 >> En dus zien waar we begonnen zijn. 331 00:14:56,109 --> 00:14:57,650 We zijn begonnen met deze nullen en enen. 332 00:14:57,650 --> 00:15:00,570 We werkten vanaf daar naar decimaal getallen, hoe we hen te vertegenwoordigen. 333 00:15:00,570 --> 00:15:02,070 Nu hebben we letters van het alfabet. 334 00:15:02,070 --> 00:15:05,664 Maar in andere contexten wachten, kunnen we nog een paar stukjes en vertegenwoordigen kleuren. 335 00:15:05,664 --> 00:15:07,830 Zodra u de het vermogen om kleuren te vertegenwoordigen, 336 00:15:07,830 --> 00:15:11,200 heb je de mogelijkheid om te vertegenwoordigen foto's en animated gifs 337 00:15:11,200 --> 00:15:13,780 en andere dergelijke tekens op het scherm. 338 00:15:13,780 --> 00:15:17,160 En als je een hele hoop foto's vliegen door de mens in een keer, 339 00:15:17,160 --> 00:15:21,480 het ziet eruit als bewegende beelden, en zo krijg je ook video's ook. 340 00:15:21,480 --> 00:15:23,460 >> Dus met deze zeer eenvoudige primitieven doen we 341 00:15:23,460 --> 00:15:28,070 hebben de weg vertegenwoordigen uiteindelijk al deze vormen van media. 342 00:15:28,070 --> 00:15:30,450 En we hebben weer geabstraheerd en opnieuw en opnieuw, totdat we 343 00:15:30,450 --> 00:15:33,467 krijgen van het laagste niveau om dit hoogste niveau. 344 00:15:33,467 --> 00:15:35,550 Dus dat geeft ons deze algemeen idee van abstractie. 345 00:15:35,550 --> 00:15:36,990 Maar we hier begonnen. 346 00:15:36,990 --> 00:15:38,790 >> Nu hier, zouden we vertegenwoordigen een computer 347 00:15:38,790 --> 00:15:41,920 onze ingangen met nullen en enen, onze output in nullen en enen, 348 00:15:41,920 --> 00:15:43,640 maar wat er in de doos? 349 00:15:43,640 --> 00:15:46,080 Dat is waar de computer wetenschap wordt het interessant. 350 00:15:46,080 --> 00:15:49,770 Dat is waar je eigenlijk meenemen eigen geest te dragen om problemen op te lossen. 351 00:15:49,770 --> 00:15:52,590 We kunnen nu bepalen, voor de rest van het semester, ja. 352 00:15:52,590 --> 00:15:53,870 Ik weet hoe binaire werkt. 353 00:15:53,870 --> 00:15:57,942 Ik herinner me hoe ASCII of Unicode-- het in kaart brengen om werken letters--. 354 00:15:57,942 --> 00:15:59,650 En het is zeker staat dat we redeneren 355 00:15:59,650 --> 00:16:03,470 kon rood en groen geven en blauw, en vertegenwoordigen multimedia ook. 356 00:16:03,470 --> 00:16:05,390 Maar dit is de interessante dingen. 357 00:16:05,390 --> 00:16:09,790 Dit is wat iemand in staat om problemen op te lossen. 358 00:16:09,790 --> 00:16:11,980 >> En een dergelijk probleem we willen doen, inderdaad, 359 00:16:11,980 --> 00:16:15,345 is het nemen van aanwezigheid, of dit te doen algoritmisch. 360 00:16:15,345 --> 00:16:16,470 En nogmaals, ik zou dit te doen. 361 00:16:16,470 --> 00:16:19,580 Ik kan een, twee, drie, vier do vijf, zes, zeven, acht negen. 362 00:16:19,580 --> 00:16:21,520 En ik kon het schrijven naar beneden bij te houden van het te houden. 363 00:16:21,520 --> 00:16:23,769 Maar dat is gewoon hoe ik zou geven de informatie. 364 00:16:23,769 --> 00:16:27,550 Of ik kon doen dit faster-- twee, vier, zes, acht, tien, 12, 14, 16, 18, 20, 365 00:16:27,550 --> 00:16:30,380 22-- het voelt als twee keer zo snel, maar het is nog steeds 366 00:16:30,380 --> 00:16:32,050 gaat een heleboel tijd in beslag nemen. 367 00:16:32,050 --> 00:16:35,990 >> Maar het blijkt, als we nog hefboomeffect andere resource-- en zelfs computers 368 00:16:35,990 --> 00:16:38,940 deze dagen hebben meerdere CPU's of hersenen. 369 00:16:38,940 --> 00:16:41,970 Het blijkt dat computers kan doen veel dingen tegelijk, 370 00:16:41,970 --> 00:16:44,460 en inderdaad we, in deze kamer, zou dit precies vertegenwoordigen. 371 00:16:44,460 --> 00:16:47,130 >> Dus het is een beetje sociaal onhandig, maar als je zou humor me 372 00:16:47,130 --> 00:16:51,550 voor slechts een proces in drie stappen, laat het mij vraagt ​​iedereen in de plaats is er gewoon 373 00:16:51,550 --> 00:16:54,640 om op te staan ​​voor een moment. 374 00:16:54,640 --> 00:16:57,380 Sta op. 375 00:16:57,380 --> 00:17:01,580 Dus denk je bij jezelf, nummer een-- zodat iedereen in deze kamer, 376 00:17:01,580 --> 00:17:05,010 met uitzondering van de mensen die dat niet deden oblige, denken nummer één. 377 00:17:05,010 --> 00:17:06,510 Dus dat is uw nummer op dit moment. 378 00:17:06,510 --> 00:17:09,399 Dat is de eerste stap, of computer wetenschapper of een programmeur 379 00:17:09,399 --> 00:17:11,827 zouden in het algemeen te doen, gaan we beginnen tellen bij nul. 380 00:17:11,827 --> 00:17:14,410 Als het kleinste getal we kunnen vertegenwoordigen met die lampen 381 00:17:14,410 --> 00:17:17,410 nul is, door gewoon te verlaten alles uit, ik kan net zo goed 382 00:17:17,410 --> 00:17:19,271 beginnen te tellen vanaf nul in plaats van één. 383 00:17:19,271 --> 00:17:21,020 En dus dat is wat informatici te doen. 384 00:17:21,020 --> 00:17:23,750 Dus stap nul, opstaan ​​en denk aan de nummer één. 385 00:17:23,750 --> 00:17:26,339 De volgende stap is dit-- pair off met iemand staande 386 00:17:26,339 --> 00:17:27,660 en voeg uw nummers samen. 387 00:17:27,660 --> 00:17:30,660 388 00:17:30,660 --> 00:17:32,850 Geweldig. 389 00:17:32,850 --> 00:17:37,640 >> Dus op dit moment in de tijd, letterlijk iedereen deelnemen 390 00:17:37,640 --> 00:17:41,930 denkt aan de nummer 2, met uitzondering van voor een vreemde persoon als we 391 00:17:41,930 --> 00:17:43,450 een oneven aantal mensen in de kamer. 392 00:17:43,450 --> 00:17:50,640 En nu is de derde stap hier gaat worden dit-- een van jullie moet gaan zitten. 393 00:17:50,640 --> 00:17:54,490 Een van jullie moet gaan zitten, en als je nog steeds staan, 394 00:17:54,490 --> 00:17:56,590 ga terug naar één stap. 395 00:17:56,590 --> 00:18:44,799 396 00:18:44,799 --> 00:18:45,790 Okee. 397 00:18:45,790 --> 00:19:00,760 398 00:19:00,760 --> 00:19:01,650 Okee. 399 00:19:01,650 --> 00:19:03,880 Zodat steeds meer mensen moet worden zitten. 400 00:19:03,880 --> 00:19:08,280 Merk op dat dit heeft veroorzaakt een loop-- een soort cyclus. 401 00:19:08,280 --> 00:19:11,983 Sommigen van jullie moet onhandig geplakt zijn, heen en weer tussen de eerste stap 402 00:19:11,983 --> 00:19:14,180 en twee, één en twee, één en twee. 403 00:19:14,180 --> 00:19:21,190 404 00:19:21,190 --> 00:19:21,810 Dat is geen probleem. 405 00:19:21,810 --> 00:19:22,630 Onze eerste bug. 406 00:19:22,630 --> 00:19:24,740 We zullen omgaan. 407 00:19:24,740 --> 00:19:25,320 Okee. 408 00:19:25,320 --> 00:19:27,370 Laat me proberen om dingen te stimuleren mee. 409 00:19:27,370 --> 00:19:31,454 >> In principe is slechts één persoon die zoals iedereen blijft om af te koppelen. 410 00:19:31,454 --> 00:19:33,870 Maar laat me dingen te versnellen met de mensen die nog steeds overeind. 411 00:19:33,870 --> 00:19:35,480 Welk nummer denk je? 412 00:19:35,480 --> 00:19:36,070 46. 413 00:19:36,070 --> 00:19:36,570 OK. 414 00:19:36,570 --> 00:19:37,820 Ga je gang en gaan zitten. 415 00:19:37,820 --> 00:19:39,190 Jullie zijn nog steeds overeind. 416 00:19:39,190 --> 00:19:42,130 Wie is er nog staan? 417 00:19:42,130 --> 00:19:45,240 Welk nummer denk je? 418 00:19:45,240 --> 00:19:46,160 OK. 419 00:19:46,160 --> 00:19:47,900 >> Dus we terug naar je toe komen. 420 00:19:47,900 --> 00:19:49,630 Achterin? 421 00:19:49,630 --> 00:19:50,790 Wat is dat? 422 00:19:50,790 --> 00:19:53,100 22. 423 00:19:53,100 --> 00:19:56,540 OK iemand anders up top-- ja? 424 00:19:56,540 --> 00:19:57,720 34. 425 00:19:57,720 --> 00:19:58,300 OK. 426 00:19:58,300 --> 00:20:02,780 Meer dan hier op mijn right-- hier? 427 00:20:02,780 --> 00:20:06,820 132, erg leuk. 428 00:20:06,820 --> 00:20:08,380 22? 429 00:20:08,380 --> 00:20:08,990 >> OK. 430 00:20:08,990 --> 00:20:10,031 En wie nog overeind? 431 00:20:10,031 --> 00:20:11,000 Hier? 432 00:20:11,000 --> 00:20:14,520 46, erg leuk. 433 00:20:14,520 --> 00:20:16,890 72. 434 00:20:16,890 --> 00:20:18,220 Ik kan niet veel langer kraam. 435 00:20:18,220 --> 00:20:20,520 Ja? 436 00:20:20,520 --> 00:20:22,490 30, nice. 437 00:20:22,490 --> 00:20:24,120 Hier? 438 00:20:24,120 --> 00:20:26,200 23? 439 00:20:26,200 --> 00:20:27,270 23. 440 00:20:27,270 --> 00:20:30,920 >> En ik denk dat iedereen behalve jullie, geen druk. 441 00:20:30,920 --> 00:20:32,860 Oh wacht. 442 00:20:32,860 --> 00:20:33,360 28? 443 00:20:33,360 --> 00:20:37,500 444 00:20:37,500 --> 00:20:38,281 Slechts acht. 445 00:20:38,281 --> 00:20:38,780 OK. 446 00:20:38,780 --> 00:20:41,030 Slechts acht. 447 00:20:41,030 --> 00:20:42,580 Hieronder? 448 00:20:42,580 --> 00:20:44,570 30. 449 00:20:44,570 --> 00:20:47,344 23. 450 00:20:47,344 --> 00:20:47,843 24. 451 00:20:47,843 --> 00:20:50,810 452 00:20:50,810 --> 00:20:52,310 18. 453 00:20:52,310 --> 00:20:54,690 Dit is het ergste implementatie van dit algoritme ooit. 454 00:20:54,690 --> 00:20:55,190 OK. 455 00:20:55,190 --> 00:20:59,760 Dus iemand anders? 456 00:20:59,760 --> 00:21:00,421 Iemand anders? 457 00:21:00,421 --> 00:21:00,920 OK. 458 00:21:00,920 --> 00:21:03,300 Nog een. 459 00:21:03,300 --> 00:21:04,400 16? 460 00:21:04,400 --> 00:21:04,900 OK. 461 00:21:04,900 --> 00:21:05,510 16. 462 00:21:05,510 --> 00:21:06,010 Okee. 463 00:21:06,010 --> 00:21:09,070 Dus als ik het niet gemist hebben iedereen in de schittering hier, toen ik druk op Enter, 464 00:21:09,070 --> 00:21:13,091 we zullen zien, algoritmisch, de totale aantal mensen in Sanders. 465 00:21:13,091 --> 00:21:16,340 Want nogmaals, het is alsof iedereen als je ging zitten, ging je nummer af 466 00:21:16,340 --> 00:21:19,215 aan iemand anders, iemand anders, aan iemand anders, zodat in theorie, 467 00:21:19,215 --> 00:21:22,304 Uiteindelijk enige onhandig persoon moet staan ​​worden gelaten. 468 00:21:22,304 --> 00:21:22,970 Maar dat is prima. 469 00:21:22,970 --> 00:21:24,290 We versneld dingen handmatig. 470 00:21:24,290 --> 00:21:27,590 Het is vooral moeilijk om te zien in deze bepaalde ruimte. 471 00:21:27,590 --> 00:21:34,200 >> En het totale aantal mensen We denken dat er hier 546. 472 00:21:34,200 --> 00:21:37,330 Het totale aantal I was handed door het onderwijs fellows, 473 00:21:37,330 --> 00:21:40,660 die de oude deed het de school langzame manier, was 820. 474 00:21:40,660 --> 00:21:43,660 >> [Lachend] 475 00:21:43,660 --> 00:21:47,170 >> [APPLAUS] 476 00:21:47,170 --> 00:21:48,670 >> Dat is geen probleem. 477 00:21:48,670 --> 00:21:50,740 Dus zeker toen, zijn er deze bugs. 478 00:21:50,740 --> 00:21:51,460 En dat is prima. 479 00:21:51,460 --> 00:21:53,810 En dus denk terug op deze de eerste keer dat er iets 480 00:21:53,810 --> 00:21:55,420 schrijf je hoeft niet per se te werken. 481 00:21:55,420 --> 00:21:57,620 Dit is gebeurd met mij hier ook. 482 00:21:57,620 --> 00:22:00,844 Maar laten we nu nadenken over hoe we misschien passen dit hetzelfde idee om iets 483 00:22:00,844 --> 00:22:03,760 je zou eerder hebben gezien, die is deze oude school technologie hier-- 484 00:22:03,760 --> 00:22:05,130 een echt grote telefoonboek. 485 00:22:05,130 --> 00:22:09,380 En stel dat deze telefoon boek heeft 1000 pagina's en 1000 namen 486 00:22:09,380 --> 00:22:11,360 en nummers alfabetisch binnenkant van het. 487 00:22:11,360 --> 00:22:14,860 >> Nou, we konden soort toepassing een soortgelijke idee om dit zeer fysiek probleem, 488 00:22:14,860 --> 00:22:16,270 alleen met behulp van me. 489 00:22:16,270 --> 00:22:18,810 Ik gewoon een soort van bedrogen door gebruik te maken van jullie allemaal 490 00:22:18,810 --> 00:22:23,240 met veel en veel verschillende CPU's of hersenen het uitvoeren van een aantal algoritme. 491 00:22:23,240 --> 00:22:25,440 Maar als het is gewoon klein oude me, ik kan het nog steeds 492 00:22:25,440 --> 00:22:29,630 hefboomeffect dat zelfde essentie van een idee te verdelen en het veroveren van dat probleem 493 00:22:29,630 --> 00:22:32,970 opnieuw en opnieuw, waarbij de helft van jullie, de helft van jullie, de helft van je de helft van je, 494 00:22:32,970 --> 00:22:35,830 theoretisch bleef zitten, totdat we vertrokken waren, in theorie, 495 00:22:35,830 --> 00:22:36,990 met slechts één persoon. 496 00:22:36,990 --> 00:22:39,810 >> Dus in dit oude school technology-- we niet doen 497 00:22:39,810 --> 00:22:43,030 moeten deze map-- deze oude school technologie, 498 00:22:43,030 --> 00:22:47,300 we kunnen beginnen met het zoeken naar iemand Like Mike Smith, één pagina per keer. 499 00:22:47,300 --> 00:22:49,410 En ik zie dat niet, Mike is niet hier. 500 00:22:49,410 --> 00:22:51,110 Ik ben nog steeds in de A-sectie. 501 00:22:51,110 --> 00:22:53,900 Uiteindelijk vind ik mezelf in de sectie B. 502 00:22:53,900 --> 00:22:56,910 En dit is een algorithm-- stap voor stap instructie. 503 00:22:56,910 --> 00:22:59,890 Begin bij het begin en één pagina in een tijd, op zoek naar Mike Smith. 504 00:22:59,890 --> 00:23:03,410 Hierdoor correct-- deze algoritme of aanpak? 505 00:23:03,410 --> 00:23:04,550 >> Ja, het klopt. 506 00:23:04,550 --> 00:23:06,840 Als Mike hier is, uiteindelijk Ik krijg hem. 507 00:23:06,840 --> 00:23:08,139 Maar het is niet efficiënt. 508 00:23:08,139 --> 00:23:09,180 Het is natuurlijk erg traag. 509 00:23:09,180 --> 00:23:11,340 Dus ik kan gebruik maken van de Hetzelfde twosies benaderen. 510 00:23:11,340 --> 00:23:15,350 Ik kan soort van twee te doen, vier, zes, acht, 10, 12. 511 00:23:15,350 --> 00:23:16,330 Het is twee keer zo snel. 512 00:23:16,330 --> 00:23:18,290 Ik ga Mike te krijgen sneller als hij er is. 513 00:23:18,290 --> 00:23:20,770 Klopt het? 514 00:23:20,770 --> 00:23:22,320 Ja, maar ik hoorde een little-- nee. 515 00:23:22,320 --> 00:23:24,200 Nu hoorde ik een nee. 516 00:23:24,200 --> 00:23:24,700 Ja. 517 00:23:24,700 --> 00:23:26,190 Er is een bug in potentie. 518 00:23:26,190 --> 00:23:29,374 Misschien Mike gewoon per ongeluk ingeklemd tussen twee bladzijden, 519 00:23:29,374 --> 00:23:31,290 want ik ben vliegen door Deze twee tegelijk. 520 00:23:31,290 --> 00:23:33,580 Dus in ieder geval we need some soort voorwaardelijke fix. 521 00:23:33,580 --> 00:23:35,330 Ik moet zeggen, hey, als ik raakte iemand wiens 522 00:23:35,330 --> 00:23:39,190 naam begint met een T in plaats van een S, Ik beter verdubbelen ten minste één pagina terug. 523 00:23:39,190 --> 00:23:40,767 Dus buggy op het eerste, maar opgelapt worden. 524 00:23:40,767 --> 00:23:43,850 Maar niemand van ons zijn gaan op zoek naar Mike Smith via een 1000 pagina telefoon 525 00:23:43,850 --> 00:23:45,290 Boek één pagina per keer. 526 00:23:45,290 --> 00:23:48,486 Wat is een normaal persoon gaan doen? 527 00:23:48,486 --> 00:23:50,860 Je gaat naar de S, als je wist waar de S. 528 00:23:50,860 --> 00:23:54,230 Je zou ruwweg naar het midden of enigszins schuin naar het einde. 529 00:23:54,230 --> 00:23:56,850 En ik kijk hier naar beneden en Ik ben in de M sectie. 530 00:23:56,850 --> 00:23:58,952 Maar wat weet je dit probleem is nu, 531 00:23:58,952 --> 00:24:02,160 dat we niet per se weten voordat met ons allemaal gewoon tellen onszelf 532 00:24:02,160 --> 00:24:03,030 equivalent? 533 00:24:03,030 --> 00:24:06,010 Nou, Mike is duidelijk gaat om in deze helft van het boek 534 00:24:06,010 --> 00:24:07,920 als hij hier helemaal, want het is opgelost. 535 00:24:07,920 --> 00:24:10,160 >> En zo kun je heel dramatically-- 536 00:24:10,160 --> 00:24:11,250 >> [Hijgen] 537 00:24:11,250 --> 00:24:12,300 >> Ik weet. 538 00:24:12,300 --> 00:24:16,940 >> [APPLAUS] 539 00:24:16,940 --> 00:24:19,450 >> Het is eigenlijk heel makkelijk als je doet het de ruggengraat daar. 540 00:24:19,450 --> 00:24:22,070 Maar je kunt dan gooien de helft van het probleem weg. 541 00:24:22,070 --> 00:24:25,950 Nu, ik ben vertrokken met dezelfde probleem-- vinden Mike Smith in een telefoon book-- 542 00:24:25,950 --> 00:24:29,610 maar nu is het telefoonboek begint bij M en gaat naar Z, maar het is half zo groot. 543 00:24:29,610 --> 00:24:30,890 >> Maar dit is wat is indrukwekkend. 544 00:24:30,890 --> 00:24:34,170 Net als in theorie, jullie, wanneer jullie zitten slechts de helft in een tijd, 545 00:24:34,170 --> 00:24:37,150 het probleem kreeg half zo groot, half zo groot, opnieuw en opnieuw. 546 00:24:37,150 --> 00:24:40,260 Dus heeft dit probleem uitgegroeid tot de hetzelfde probleem maar half zo groot. 547 00:24:40,260 --> 00:24:42,670 Nu is het een 250 pagina probleem. 548 00:24:42,670 --> 00:24:45,340 Zodra ik realiseer, oh, ik ben in de T sectie ongeluk. 549 00:24:45,340 --> 00:24:46,590 Ik ben te ver gegaan. 550 00:24:46,590 --> 00:24:48,500 Ik kan dat de helft gooien van het telefoonboek van het hotel. 551 00:24:48,500 --> 00:24:50,410 Nu, ik ben tot een kwart van het probleem. 552 00:24:50,410 --> 00:24:53,910 >> En je kunt herhalen, herhalen, herhaal tot, in theorie, je bent 553 00:24:53,910 --> 00:24:55,460 vertrokken met slechts één pagina. 554 00:24:55,460 --> 00:24:59,010 En als Mike is op die pagina, Ik kan nu dit probleem oplossen. 555 00:24:59,010 --> 00:25:00,810 Maar hoe snel heb ik deze oplossen? 556 00:25:00,810 --> 00:25:05,420 In het eerste geval, het kostte me als misschien 1.000 stappen om Mike Smith te vinden. 557 00:25:05,420 --> 00:25:09,260 Het zou hebben mij-- Ik pakte het telefoonboek 558 00:25:09,260 --> 00:25:11,440 en ik ging op zoek één pagina per keer, 559 00:25:11,440 --> 00:25:13,480 en Mike misschien 1.000 pagina's later. 560 00:25:13,480 --> 00:25:16,020 >> Tweede benadering misschien kost me 500 stappen, 561 00:25:16,020 --> 00:25:17,960 want ik vlieg met twee tegelijk. 562 00:25:17,960 --> 00:25:21,082 En de derde benadering hoewel, het is bijzonder krachtig. 563 00:25:21,082 --> 00:25:23,790 Maar laten we eens kijken wat we eigenlijk deed met deze derde benadering. 564 00:25:23,790 --> 00:25:27,590 Ik zal hebben wat ik noem alleen deze verklaringen hier, één tegelijk. 565 00:25:27,590 --> 00:25:28,560 Pick-up een telefoonboek. 566 00:25:28,560 --> 00:25:30,130 Open naar het midden van het telefoonboek. 567 00:25:30,130 --> 00:25:31,419 Kijk naar de namen. 568 00:25:31,419 --> 00:25:33,960 En dan dingen een beetje meer intellectueel interessant, 569 00:25:33,960 --> 00:25:35,170 indien nog steeds eenvoudig. 570 00:25:35,170 --> 00:25:38,350 Als Smith is een van de namen op dat de huidige pagina, 571 00:25:38,350 --> 00:25:40,170 dan is er iets te doen voorwaardelijk. 572 00:25:40,170 --> 00:25:41,840 Het is als een vork in de weg. 573 00:25:41,840 --> 00:25:42,660 Bel Mike. 574 00:25:42,660 --> 00:25:44,930 Als Mike is onder de namen op die pagina, genaamd Mike. 575 00:25:44,930 --> 00:25:49,720 Maar alleen lijn vier als lijn boom, als je wil, is waar. 576 00:25:49,720 --> 00:25:51,590 Het antwoord op die vraag is ja. 577 00:25:51,590 --> 00:25:55,520 >> Anders als Smith is eerder in de book-- Met andere woorden, als ik in de M sectie 578 00:25:55,520 --> 00:25:58,540 en ik ben op zoek naar iemand om links, dan wat ik moet doen 579 00:25:58,540 --> 00:26:00,300 is iets vergelijkbaars. 580 00:26:00,300 --> 00:26:03,440 Dan moet ik openen naar het midden van de linkerhelft van het boek. 581 00:26:03,440 --> 00:26:07,930 Dus ga naar links, en dan ga terug naar stap twee. 582 00:26:07,930 --> 00:26:09,290 Kijk naar de namen daar. 583 00:26:09,290 --> 00:26:12,779 >> Dus met andere woorden, hetzelfde doen, maar een probleem dat is gehalveerd. 584 00:26:12,779 --> 00:26:13,570 Weet je wat? 585 00:26:13,570 --> 00:26:16,470 Als Smith is later in het boek op basis van de pagina Ik ben op zoek naar, 586 00:26:16,470 --> 00:26:18,790 open voor het midden van de rechter helft van het boek 587 00:26:18,790 --> 00:26:22,050 en weer terug te gaan dan naar stap twee, else-- 588 00:26:22,050 --> 00:26:24,000 er is nog een vierde mogelijkheid hier. 589 00:26:24,000 --> 00:26:28,830 Mike's hier of naar links of naar rechts of er niet. 590 00:26:28,830 --> 00:26:30,570 En hier zijn we beter dit te overwegen. 591 00:26:30,570 --> 00:26:33,360 En in feite, als je ooit heb gehad uw computer gewoon crashen op jou, 592 00:26:33,360 --> 00:26:36,822 die soms, maar niet altijd, resultaat van slechts een menselijk programmeur niet 593 00:26:36,822 --> 00:26:39,280 realiseren, oh schieten, is er eigenlijk deze vierde scenario. 594 00:26:39,280 --> 00:26:41,650 En als je geen code te schrijven om dat scenario te behandelen, 595 00:26:41,650 --> 00:26:43,220 Soms weet je niet wat de computer zou kunnen doen. 596 00:26:43,220 --> 00:26:44,770 En inderdaad een programma zou kunnen crashen. 597 00:26:44,770 --> 00:26:47,550 >> Maar in dit geval, dacht ik over, en ik zei, anders stoppen, 598 00:26:47,550 --> 00:26:49,850 want dat is de vierde logisch mogelijk scenario. 599 00:26:49,850 --> 00:26:51,950 Nu, laten we gewoon toe te voegen sommige woordenschat dus we 600 00:26:51,950 --> 00:26:55,320 kan beginnen te gooien rond termen die anderszins vrij intuïtief. 601 00:26:55,320 --> 00:26:57,870 Al de dingen die ik heb zojuist geel gemarkeerd hier, 602 00:26:57,870 --> 00:27:00,140 Ik ga gewoon naar de functies of procedures. 603 00:27:00,140 --> 00:27:01,590 Ze zijn gewoon een soort van acties. 604 00:27:01,590 --> 00:27:04,900 Dus pick-up, open, kijk bij, bel, geopend, open, 605 00:27:04,900 --> 00:27:09,170 quit-- dit zijn slechts acties, of we noemen ze formeler, functies. 606 00:27:09,170 --> 00:27:11,410 >> Ondertussen, nu in geel, Ik heb dingen gemarkeerd 607 00:27:11,410 --> 00:27:14,084 dat-- laten we gewoon beginnen bellen deze voorwaarden of takken. 608 00:27:14,084 --> 00:27:16,750 Dit zijn beslissing punten waar de je zou op deze manier gaan, op deze manier, 609 00:27:16,750 --> 00:27:18,100 of een andere richting nog. 610 00:27:18,100 --> 00:27:19,430 Dus die zal zijn voorwaarden. 611 00:27:19,430 --> 00:27:20,930 En nu dit is een beetje liefhebber. 612 00:27:20,930 --> 00:27:24,600 Laten we noemen deze vragen Booleaanse uitdrukkingen, 613 00:27:24,600 --> 00:27:26,530 nadat iemand met een achternaam Bool. 614 00:27:26,530 --> 00:27:28,340 >> En een Booleaanse uitdrukking is gewoon iets 615 00:27:28,340 --> 00:27:30,290 dat is waar of onwaar, ja of nee. 616 00:27:30,290 --> 00:27:35,870 Dus het is de vraag waarvan het antwoord u geven om, teneinde in staat 617 00:27:35,870 --> 00:27:39,210 maak een decision-- terug te krijgen een antwoord, en ga dan naar links of rechts, of zoiets 618 00:27:39,210 --> 00:27:40,450 heel anders. 619 00:27:40,450 --> 00:27:42,860 >> En dan tot slot, deze lijnen hier-- teruggaan 620 00:27:42,860 --> 00:27:44,737 naar stap twee, ga terug om two-- stappen we konden 621 00:27:44,737 --> 00:27:46,320 uitvoering van dit idee op verschillende manieren. 622 00:27:46,320 --> 00:27:49,028 En dan degenen onder u met programmeerervaring zou hebben gedaan 623 00:27:49,028 --> 00:27:50,670 of kan me voorstellen dat dit anders te doen. 624 00:27:50,670 --> 00:27:53,170 Maar voor doeleinden van vandaag, is het gewoon het idee dat telt. 625 00:27:53,170 --> 00:27:55,400 Dit induceert wat we over het algemeen noemen 626 00:27:55,400 --> 00:28:00,110 een loop-- een soort van cyclus, omdat het maakt me weer iets aan te doen. 627 00:28:00,110 --> 00:28:03,340 >> Dus nu, laten we maar eens kijken hoe goed dit algoritme is. 628 00:28:03,340 --> 00:28:03,899 Het is correct. 629 00:28:03,899 --> 00:28:06,940 Als Mike's in het boek, het is een van deze vier scenarios-- weer 630 00:28:06,940 --> 00:28:08,023 en nogmaals, we zullen hem vinden. 631 00:28:08,023 --> 00:28:08,890 Maar hoe goed is het? 632 00:28:08,890 --> 00:28:10,150 Nou, we hebben niet om hier te formeel te zijn. 633 00:28:10,150 --> 00:28:12,066 Maar laten we gewoon plotten iets, x en y, om 634 00:28:12,066 --> 00:28:14,470 een gevoel van de vorm van dit probleem. 635 00:28:14,470 --> 00:28:17,160 >> Op de x-as is hier de omvang van mijn probleem. 636 00:28:17,160 --> 00:28:20,256 En zij een y-as hier staan ​​tot lossen. 637 00:28:20,256 --> 00:28:21,630 Dus misschien is dit aantal pagina's. 638 00:28:21,630 --> 00:28:24,400 Misschien is dit seconden of pagina turns-- wat dan ook. 639 00:28:24,400 --> 00:28:27,290 Maar u wilt tellen is wat dit beeld zal vertegenwoordigen. 640 00:28:27,290 --> 00:28:30,630 En die eerste algoritme, ik ga om te beschrijven als gewoon een rechte lijn. 641 00:28:30,630 --> 00:28:33,120 Als er n pagina's in het telefoonboek, dan is het 642 00:28:33,120 --> 00:28:36,010 kan mij zo veel zo n stappen om Mike te vinden. 643 00:28:36,010 --> 00:28:38,930 Als Verizon of de telefoonmaatschappij voegt nog een pagina volgend jaar, 644 00:28:38,930 --> 00:28:42,170 het zou me nog een step-- nog een eenheid van tijd om Mike te vinden. 645 00:28:42,170 --> 00:28:44,230 Dus er is alleen deze 1-1 ratio. 646 00:28:44,230 --> 00:28:45,970 Het is een rechte lijn helling. 647 00:28:45,970 --> 00:28:49,110 >> Ondertussen, dat de tweede algorithm-- als ik 648 00:28:49,110 --> 00:28:51,570 gaan twee op een tijd-- twee, vier, zes, acht of double-- 649 00:28:51,570 --> 00:28:54,550 gaan door de pagina's twee keer per keer, twee tegelijk, 650 00:28:54,550 --> 00:28:55,710 het is nog steeds rechte lijn. 651 00:28:55,710 --> 00:28:58,720 Er is nu 01:59 ratio, maar net over het doel. 652 00:28:58,720 --> 00:29:02,240 Dus als er zoveel pagina's op de kaart hier in geel, 653 00:29:02,240 --> 00:29:04,800 dat me zou kunnen nemen deze veel stappen of seconden, 654 00:29:04,800 --> 00:29:07,980 anders gaat me te nemen twee keer zoveel op de rode lijn. 655 00:29:07,980 --> 00:29:10,190 >> Maar de groene lijn is de echte afhaalmaaltijd. 656 00:29:10,190 --> 00:29:12,290 Dit is wat we in het algemeen bel een logorithm-- log 657 00:29:12,290 --> 00:29:13,840 n, waarbij n het aantal bladzijden. 658 00:29:13,840 --> 00:29:16,450 Maar het is de vorm die zaken vandaag, want we hebben niet 659 00:29:16,450 --> 00:29:17,950 om nog na te denken over het plotten punten. 660 00:29:17,950 --> 00:29:19,830 >> Denk na over een extreem scenario. 661 00:29:19,830 --> 00:29:23,070 Stel dat Verizon morgen verdubbelt de aantal pagina's in dat telefoonboek, 662 00:29:23,070 --> 00:29:24,900 van 1000 tot 2000. 663 00:29:24,900 --> 00:29:28,440 In het eerste algoritme, I zou verspillen een extra 1000 664 00:29:28,440 --> 00:29:32,080 stappen op zoek naar Mike, enkel omdat Verizon verdubbeling van het boek. 665 00:29:32,080 --> 00:29:34,740 De tweede algorithm-- het misschien neem me een extra 500 stappen. 666 00:29:34,740 --> 00:29:38,370 1000 meer pagina's, ga ik twee bij een tijd-- 500 meer stappen om Mike te vinden. 667 00:29:38,370 --> 00:29:41,020 >> Maar dat derde algoritme is een soort van magisch. 668 00:29:41,020 --> 00:29:44,270 Verizon verdubbelt het aantal pagina's van 1000 tot 2000, 669 00:29:44,270 --> 00:29:47,730 maar hoeveel meer stappen doet nemen me om te zoeken naar Mike? 670 00:29:47,730 --> 00:29:51,220 Het is slechts een, want ik kan gewoon scheur het telefoonboek nog een keer 671 00:29:51,220 --> 00:29:55,280 een probleem 2000 pagina naar een probleem 1000 pagina en voila. 672 00:29:55,280 --> 00:29:57,030 Ik heb een enorme hap genomen uit het. 673 00:29:57,030 --> 00:29:59,405 >> En als je echt extreem, veronderstellen dat het telefoonboek 674 00:29:59,405 --> 00:30:03,600 onderneming had iets gek als een 4 miljard pagina telefoonboek. 675 00:30:03,600 --> 00:30:07,020 Nou hoeveel stappen zou kunnen nemen Mike Smith vinden in een 4 miljard 676 00:30:07,020 --> 00:30:09,990 page telefoonboek? 677 00:30:09,990 --> 00:30:16,450 Het is een groot aantal, maar slechts 4 miljard 2000000000-1000000000 om te 500 miljoen euro, 678 00:30:16,450 --> 00:30:18,720 250 million-- nog steeds klinkt als grote getallen, 679 00:30:18,720 --> 00:30:20,980 maar ik ben zeer snel om naar kleinere waarden. 680 00:30:20,980 --> 00:30:24,790 >> En in feite, als ik de wiskunde Goed, ik kan alleen maar verdelen 4000000000 681 00:30:24,790 --> 00:30:28,750 met ongeveer 32 keer eerder Ik krijg tot slechts één. 682 00:30:28,750 --> 00:30:31,640 Dus als dat telefoonboek waren 4 miljard pagina's lang, geen big deal. 683 00:30:31,640 --> 00:30:35,270 Binnen een paar seconden, misschien 32 seconden, kon ik het verdelen in de helft 684 00:30:35,270 --> 00:30:39,560 en uiteindelijk vindt Mike of concluderen dat hij er niet is. 685 00:30:39,560 --> 00:30:42,219 En dat is de essentie van een algorithm-- een goede algoritme. 686 00:30:42,219 --> 00:30:44,260 En dat is een van de doelstellingen van een klasse als deze, 687 00:30:44,260 --> 00:30:47,350 probeert te achterhalen hoe kan ik het probleem niet alleen correct 688 00:30:47,350 --> 00:30:52,360 zoals ik altijd wist hoe het te doen een pagina per tijd-- maar correct en goed. 689 00:30:52,360 --> 00:30:55,034 Hoe kan ik het ontwerpen van een goede oplossingen voor problemen? 690 00:30:55,034 --> 00:30:57,200 Dus laten we eens even hier en geven u een gevoel nu 691 00:30:57,200 --> 00:31:00,260 CS50 van de cursus itself-- introduceren medewerkers een paar cursus. 692 00:31:00,260 --> 00:31:02,010 Net voor 02:00, zullen we neem een ​​korte pauze 693 00:31:02,010 --> 00:31:03,520 zodat degenen onder u die winkelen kan 694 00:31:03,520 --> 00:31:05,130 eend uit en neem een kijken naar een aantal andere klasse 695 00:31:05,130 --> 00:31:06,580 en kijken naar de rest van deze online. 696 00:31:06,580 --> 00:31:09,250 Maar voor nu, laat me even CS50, de klasse zelf, 697 00:31:09,250 --> 00:31:11,330 met name wat nieuw. 698 00:31:11,330 --> 00:31:13,960 >> Dus het verleden voorjaar, we heb heel wat van tijd-- 699 00:31:13,960 --> 00:31:17,911 het personeel van de cursus en ik-- denken over wat het is dat we willen CS50 te zijn, 700 00:31:17,911 --> 00:31:19,910 en terug te gaan naar de eerste beginselen zogezegd, 701 00:31:19,910 --> 00:31:22,760 om te overwegen wat het is dat we willen deze cursus te lijken en zijn 702 00:31:22,760 --> 00:31:23,740 als voor haar studenten. 703 00:31:23,740 --> 00:31:26,480 En dus zie je in de problemen set nul als goed, een uitnodiging 704 00:31:26,480 --> 00:31:28,780 om een ​​kijkje te nemen dat URL die een samenvatting 705 00:31:28,780 --> 00:31:33,270 een aantal van de motivaties achter de volgende kenmerken van de herfst 2016. 706 00:31:33,270 --> 00:31:35,570 >> Dus zoals je misschien hebt opgedaan van de TL: DR handout, 707 00:31:35,570 --> 00:31:39,060 de syllabus vandaag alsook uit de studiegids, dit jaar in CS50, 708 00:31:39,060 --> 00:31:42,540 je alleen verwacht bij te wonen today-- dus werk goed done-- 709 00:31:42,540 --> 00:31:45,960 en de laatste lezing op 21 november. 710 00:31:45,960 --> 00:31:49,150 En je welkom, maar niet verwacht dat bent bij te wonen die lezingen in het midden, 711 00:31:49,150 --> 00:31:51,180 want wat we doen dit jaar, is schieten 712 00:31:51,180 --> 00:31:52,661 in real-time materiaal van de cursus. 713 00:31:52,661 --> 00:31:54,660 Dus alles blijft huidige en opgenomen 714 00:31:54,660 --> 00:31:57,410 zo goed can-- we de actualiteit en gesprekken die mensen zou kunnen 715 00:31:57,410 --> 00:32:00,400 te hebben in de industrie in de wereld, maar het maken van dat materiaal 716 00:32:00,400 --> 00:32:03,892 verkrijgbaar, daardoor zelfs earlier-- compleet met full-text transcripties 717 00:32:03,892 --> 00:32:05,850 en doorzoekbaarheid en links naar andere bronnen. 718 00:32:05,850 --> 00:32:07,930 >> En inderdaad, we zijn geweest claimen voor bepaalde tijd 719 00:32:07,930 --> 00:32:10,830 en wij geloven nu dit, dat we kunnen creëren, digitaal, 720 00:32:10,830 --> 00:32:15,170 een meeslepende, een meer dwingend leerzame ervaring, in tegenstelling 721 00:32:15,170 --> 00:32:19,110 te verzamelen hier ongeveer 23 keer in persoon, het horen van iemand zoals ik 722 00:32:19,110 --> 00:32:22,925 gewoon te praten over de informatica, in tegenstelling tot boeiende actiever. 723 00:32:22,925 --> 00:32:25,800 Zo zie je in syllabus van de cursus een schets van het semester hier, 724 00:32:25,800 --> 00:32:27,840 samen met wanneer lezingen gefilmd worden, waarop u bent 725 00:32:27,840 --> 00:32:29,710 welkom, maar niet verwacht, en wanneer zij zullen 726 00:32:29,710 --> 00:32:31,640 worden vrijgegeven op de website van de cursus. 727 00:32:31,640 --> 00:32:34,300 >> En wat we hier doen op Woensdagen vanaf volgende week, 728 00:32:34,300 --> 00:32:37,362 is veel meer intiem, slechts die mensen die willen deelnemen, 729 00:32:37,362 --> 00:32:39,820 een zogenaamde doorkruisen, waar ik en de hoofden van de cursus 730 00:32:39,820 --> 00:32:41,730 ook daadwerkelijk dingen te maken een beetje meer intieme 731 00:32:41,730 --> 00:32:44,313 hier beneden in het orkest sectie, hebben nog wat technologie 732 00:32:44,313 --> 00:32:46,365 en loop door de huidige week probleem set, 733 00:32:46,365 --> 00:32:50,020 en bieden u particularly-- als onder degenen die minder comfortable-- des te meer 734 00:32:50,020 --> 00:32:52,790 begeleiding die je zou willen of nodig hebt voor de uitdaging van de week. 735 00:32:52,790 --> 00:32:55,820 En op dezelfde manier, voor degenen die dat niet kunnen bij te wonen die in persoon, geen big deal. 736 00:32:55,820 --> 00:32:58,486 Er zullen op dezelfde manier worden geleid door één van de stafmedewerkers van de cursus, 737 00:32:58,486 --> 00:33:02,650 Zamalya, dezelfde kans ingebedde het probleem stelt zelf. 738 00:33:02,650 --> 00:33:04,960 >> Probleem stelt dit jaar zal worden uitgebracht op vrijdag 739 00:33:04,960 --> 00:33:08,080 en niet langer zeven dagen later te doen, maar 10 dagen later-- doelbewust 740 00:33:08,080 --> 00:33:10,910 overlapt met elk probleem ingesteld, teneinde zo beter, 741 00:33:10,910 --> 00:33:13,050 wij hopen, eb en vloed in student schema's, 742 00:33:13,050 --> 00:33:16,550 vooral als tentamens of atletiek of academici of extracurriculars 743 00:33:16,550 --> 00:33:18,465 de neiging om te komen en gaan vooral mid-semester. 744 00:33:18,465 --> 00:33:21,340 Dat moet u een beetje meer discretie over de vraag of u de voorzijde 745 00:33:21,340 --> 00:33:25,690 laad je week met CS50 of rugbelasting Op de volgende weekend plaats. 746 00:33:25,690 --> 00:33:28,817 Dus kijk naar syllabus van de cursus hier voor het schema daarvan. 747 00:33:28,817 --> 00:33:30,900 En je zult ook onder de merken de veranderingen dit jaar, 748 00:33:30,900 --> 00:33:34,082 voor degenen die meer vertrouwd zijn met programmering in het verleden, 749 00:33:34,082 --> 00:33:36,290 we zullen het semester als start zullen we vandaag in Scratch, 750 00:33:36,290 --> 00:33:39,730 richten zich vooral op de taal genaamd C, en vervolgens de overgang niet 751 00:33:39,730 --> 00:33:43,430 PHP, maar om een ​​taal genaamd Python tegen het einde van het semester 752 00:33:43,430 --> 00:33:46,565 in de context van web programmeren, samen met SQL en JavaScript, 753 00:33:46,565 --> 00:33:48,930 HTML, CSS, en nog veel meer. 754 00:33:48,930 --> 00:33:51,790 >> En in antwoord op een FAQ, het is inderdaad het geval 755 00:33:51,790 --> 00:33:55,520 dat CS is niet zo eng als ik eens dacht dat het was, maar het is zo veel werk 756 00:33:55,520 --> 00:33:57,280 zoals ik had gehoord dat het zou kunnen zijn. 757 00:33:57,280 --> 00:34:03,210 Maar dit is het woord dat hier zijn enkele statistieken van herfst 2015 studenten, 758 00:34:03,210 --> 00:34:06,460 waarbij de horizontale blauwe lijnen geven het gemiddelde aantal uren 759 00:34:06,460 --> 00:34:06,960 gerapporteerd. 760 00:34:06,960 --> 00:34:10,570 En u zult een gemiddelde van te zien zes tot 10 tot misschien 16 12-- 761 00:34:10,570 --> 00:34:14,580 of zo enzovoort, maar hoge variantie om duidelijk te zijn. 762 00:34:14,580 --> 00:34:18,570 En dus beseffen dat er niet alleen studenten comfortabeler en minder 763 00:34:18,570 --> 00:34:22,150 comfortabel in de cursus, maar een overeenkomstige drager 764 00:34:22,150 --> 00:34:25,699 structuur die studenten krijgen door middel van het semester met succes. 765 00:34:25,699 --> 00:34:29,409 >> Inderdaad, in antwoord op een FAQ, moet je CS50 nemen als een eerste jaar? 766 00:34:29,409 --> 00:34:30,139 Absoluut. 767 00:34:30,139 --> 00:34:32,690 En in feite, ik betreur niet mijn manier hebben gevonden 768 00:34:32,690 --> 00:34:35,170 of hebben een nieuw veld het eerste jaar ook. 769 00:34:35,170 --> 00:34:39,149 En mocht u met CS50 andere cursussen, zeker als goed-- 770 00:34:39,149 --> 00:34:41,940 en het algemene advies kunnen we geven de studenten, dat is waarschijnlijk CS50 771 00:34:41,940 --> 00:34:44,929 niet het soort van de klasse of intro klasse dat je moet nemen met drie 772 00:34:44,929 --> 00:34:47,199 andere of vier andere p klassen. 773 00:34:47,199 --> 00:34:50,583 Maar als je het nemen van twee andere p-set klassen, iets anders, en CS50, 774 00:34:50,583 --> 00:34:51,499 absoluut beheersbaar. 775 00:34:51,499 --> 00:34:54,900 Ik heb veel studenten in het had verleden gedaan behoorlijk succesvol. 776 00:34:54,900 --> 00:34:57,490 >> En om u te krijgen in de richting van dat Finish Line met succes, 777 00:34:57,490 --> 00:35:00,260 heeft de cursus sections-- verschillende tracks voor studenten 778 00:35:00,260 --> 00:35:03,100 minder comfortabel, comfortabeler, ergens tussenin, 779 00:35:03,100 --> 00:35:04,850 waarbij in de loop van eerste probleem set, 780 00:35:04,850 --> 00:35:06,360 wordt u gevraagd om jezelf te beschrijven. 781 00:35:06,360 --> 00:35:09,151 En als je onder degenen minder comfortabel, het is het soort ding 782 00:35:09,151 --> 00:35:10,420 dat je gewoon liever weten. 783 00:35:10,420 --> 00:35:13,010 En inderdaad, dat is al de groeiende demografische in CS50 784 00:35:13,010 --> 00:35:14,090 voor een paar jaar. 785 00:35:14,090 --> 00:35:17,680 >> Met ingang van afgelopen najaar voor bijvoorbeeld 58% van de klasse 786 00:35:17,680 --> 00:35:20,560 beschreven zichzelf als onder hen minder comfortabel, 787 00:35:20,560 --> 00:35:23,210 met 9% onder degenen meer comfortabel, en dan 788 00:35:23,210 --> 00:35:25,900 de andere studenten daar in rode zichzelf beschrijven 789 00:35:25,900 --> 00:35:27,890 als ergens tussenin. 790 00:35:27,890 --> 00:35:31,980 En je zult zien hier de onderwerpen algehele en schema van gedeelten, die 791 00:35:31,980 --> 00:35:34,820 worden aangeboden in eigen persoon, in real-time, met de cursus 792 00:35:34,820 --> 00:35:38,320 geweldig personeel van het onderwijs fellows en natuurlijk assistenten, van wie sommigen 793 00:35:38,320 --> 00:35:39,660 ontmoet je in slechts een moment. 794 00:35:39,660 --> 00:35:42,993 >> Secties zelf, zoals u zult zien, zal zijn maandag en dinsdag en woensdag, 795 00:35:42,993 --> 00:35:45,910 zodat u toelaten om te duiken na boeiende, als je zo 796 00:35:45,910 --> 00:35:48,110 kiezen, in de loop van lezing eerder die week. 797 00:35:48,110 --> 00:35:51,420 En dan kantooruren, die zeker, ieder jaar, 798 00:35:51,420 --> 00:35:54,110 zijn niet minder geweest vechten voor de cursus. 799 00:35:54,110 --> 00:35:57,040 En dit jaar, we zijn van plan niet alleen te bekleden hours-- één 800 00:35:57,040 --> 00:36:00,300 kansen op een hulp voor studenten op woensdag donderdag 801 00:36:00,300 --> 00:36:03,790 en zondag, de laatste van die het zijn in de middag door het ontwerp 802 00:36:03,790 --> 00:36:06,910 een aantal van de stress te verminderen die steevast ontstaat met late night 803 00:36:06,910 --> 00:36:10,180 p-settting met een deadline looming-- maar kantooruren zal ook worden aangeboden 804 00:36:10,180 --> 00:36:14,920 op maandag en dinsdag en Woensdag en vrijdag en zaterdag, 805 00:36:14,920 --> 00:36:17,080 dank aan onze vrienden bij HSA. 806 00:36:17,080 --> 00:36:20,330 >> CS50 heeft nu zijn eigen ruimte voor studenten en personeel CS50, 807 00:36:20,330 --> 00:36:23,070 atop 67 Mount Auburn Street, daar in Harvard Square. 808 00:36:23,070 --> 00:36:26,340 De visie waarvoor is dat CS50's TF's en CA's de hele week, 809 00:36:26,340 --> 00:36:29,052 vrij veel in het grootste deel dagen, zal er voor ondersteuning. 810 00:36:29,052 --> 00:36:30,760 Dus als je hebt een aantal vraag op een p-set 811 00:36:30,760 --> 00:36:33,093 of je bent het gevoel een beetje geblokkeerd of een beetje in de war, 812 00:36:33,093 --> 00:36:35,640 en ach, je hebt een uur kreeg of een half uur tussen klassen, 813 00:36:35,640 --> 00:36:38,920 vooral in de square-- kan pop in en hebben die vraag beantwoord 814 00:36:38,920 --> 00:36:41,720 hebben van die verwarring clarified-- heel veel in de geest, 815 00:36:41,720 --> 00:36:45,490 je bent vertrouwd, van de wiskunde eigen wiskunde vragen centrum afdeling, 816 00:36:45,490 --> 00:36:49,300 maar vrij veel rond de klok per [? Gcal?] Dat we online zal plaatsen. 817 00:36:49,300 --> 00:36:52,400 >> Studiebegeleiding is ook beschikbaar voor diegenen studenten, vrij van de cursus 818 00:36:52,400 --> 00:36:54,750 eigen personeel als je zou willen intiemere een op een, 819 00:36:54,750 --> 00:36:58,940 of twee of drie klasgenoten uitsluitend werken met één van de medewerkers van de cursus. 820 00:36:58,940 --> 00:37:02,320 En inderdaad, dit hier zijn slechts een aantal van de medewerkers van de cursus, 821 00:37:02,320 --> 00:37:04,120 een paar van wie je zult ontmoeten elkaar in slechts een moment. 822 00:37:04,120 --> 00:37:07,440 In feite, CS50 eigen hoofd onderwijs collega, 823 00:37:07,440 --> 00:37:09,790 en het hoofd natuurlijk assistent, en leermeester, 824 00:37:09,790 --> 00:37:12,998 zou kunnen kom op, laten hen om hallo te zeggen. 825 00:37:12,998 --> 00:37:22,498 >> [APPLAUS] 826 00:37:22,498 --> 00:37:23,456 SPEAKER 1: [ONVERSTAANBAAR]. 827 00:37:23,456 --> 00:37:51,842 828 00:37:51,842 --> 00:37:57,856 >> [APPLAUS] 829 00:37:57,856 --> 00:37:58,814 SPEAKER 2: [ONVERSTAANBAAR]. 830 00:37:58,814 --> 00:38:17,240 831 00:38:17,240 --> 00:38:27,238 >> [APPLAUS] 832 00:38:27,238 --> 00:38:28,196 SPEAKER 3: [ONVERSTAANBAAR]. 833 00:38:28,196 --> 00:38:58,951 834 00:38:58,951 --> 00:39:03,120 >> [APPLAUS] 835 00:39:03,120 --> 00:39:06,740 >> DAVID MALAN: En ons toelaten om brengen aan boord van twee van de CS50 meest 836 00:39:06,740 --> 00:39:09,730 senior staff, Rob en Zamayla ook. 837 00:39:09,730 --> 00:39:15,120 >> [APPLAUS] 838 00:39:15,120 --> 00:39:17,226 >> Inderdaad, zowel Rob en Zamayla zijn bij ons 839 00:39:17,226 --> 00:39:19,940 zo lang, dat ik in staat was om te gaan in de archieven CS50's 840 00:39:19,940 --> 00:39:22,470 en vind dit erg SD beelden van hen die deelnemen 841 00:39:22,470 --> 00:39:25,402 op het podium zelf enkele jaren geleden. 842 00:39:25,402 --> 00:39:26,110 ROB: [ONVERSTAANBAAR]. 843 00:39:26,110 --> 00:39:53,660 844 00:39:53,660 --> 00:39:59,247 >> [APPLAUS] 845 00:39:59,247 --> 00:40:00,080 ZAMAYLA: [ONVERSTAANBAAR] 846 00:40:00,080 --> 00:40:50,888 847 00:40:50,888 --> 00:40:52,467 >> [APPLAUS] 848 00:40:52,467 --> 00:40:53,425 DAVID MALAN: Dank je wel. 849 00:40:53,425 --> 00:40:56,160 850 00:40:56,160 --> 00:40:58,030 Dus naast deze teamleden hier, 851 00:40:58,030 --> 00:41:01,662 CS50 heeft een team van bijna 100 medewerkers, die allen 852 00:41:01,662 --> 00:41:04,370 zal beschikbaar zijn voor secties en kantooruren en nog veel meer. 853 00:41:04,370 --> 00:41:06,920 En zoals Rob zegt ook, dit is de meest significante revisie 854 00:41:06,920 --> 00:41:09,534 van CS50 in de 10 jaren Ik heb in [onhoorbaar] geweest. 855 00:41:09,534 --> 00:41:12,200 [Onhoorbaar] vooral gericht in het verschaffen van een ondersteuningsconstructie, 856 00:41:12,200 --> 00:41:14,050 trimmen weg een heleboel het grootste deel dat is geweest 857 00:41:14,050 --> 00:41:16,870 opgebouwd in 10 jaar iteratieve ontwikkelingen 858 00:41:16,870 --> 00:41:18,120 Op de cursus probleem sets. 859 00:41:18,120 --> 00:41:21,470 >> Dus dit jaar, niet alleen in de klas, maar ook in de vorm van het probleem van de cursus 860 00:41:21,470 --> 00:41:24,800 sets, moet je dingen te vinden meer worden gestroomlijnd, trimmer, veel 861 00:41:24,800 --> 00:41:26,700 beter beheersbaar dan in de afgelopen jaren, zoals wij 862 00:41:26,700 --> 00:41:31,330 werpen van de bagage die is ontwikkeld door de natuur van de evoluerende jaar 863 00:41:31,330 --> 00:41:32,970 na jaar en iteratie. 864 00:41:32,970 --> 00:41:35,110 Zodat de nieuwe en verbeterde vandaag begint. 865 00:41:35,110 --> 00:41:37,860 >> Je zult wat meer van het voldoen personeel in de [onhoorbaar] cursus 866 00:41:37,860 --> 00:41:40,186 om 2:30, waar wij, als een traditie, cake. 867 00:41:40,186 --> 00:41:42,060 Er is een beetje meer taart dan dat, maar je zult 868 00:41:42,060 --> 00:41:44,690 meet Erin en Tobias en anderen nog. 869 00:41:44,690 --> 00:41:46,470 En laat me je geeft een tour voordat we horen 870 00:41:46,470 --> 00:41:49,600 van andere personeelsleden in de klas, van wat er te wachten staat als goed. 871 00:41:49,600 --> 00:41:52,730 In feite, we beginnen altijd CS50's semester deze komende zaterdag, 872 00:41:52,730 --> 00:41:54,330 met wat heet CS50 Puzzle Day. 873 00:41:54,330 --> 00:41:56,710 >> Het heeft niets te maken met informatica per se, 874 00:41:56,710 --> 00:41:58,669 maar met zo'n probleem oplossen algemeen. 875 00:41:58,669 --> 00:42:01,210 En als je daarvoor kiest om deel te nemen, per enkele van de uitnodigingen, 876 00:42:01,210 --> 00:42:03,460 je zou de deur hebben gezien gevallen of op het podium hier 877 00:42:03,460 --> 00:42:05,830 het is een kans in teams twee of drie of vier, 878 00:42:05,830 --> 00:42:10,680 om deel te nemen voor de puzzels en pizza en prijzen en more-- deze zaterdag, 879 00:42:10,680 --> 00:42:12,560 Stay tuned voor meer. 880 00:42:12,560 --> 00:42:15,082 >> Je zult ook merken dat elke Vrijdag, bij Fire and Ice, 881 00:42:15,082 --> 00:42:16,790 heeft CS50 breng een heleboel studenten 882 00:42:16,790 --> 00:42:19,100 lunch, voor een groot maken class voelen zich meer intiem, 883 00:42:19,100 --> 00:42:21,820 en algemeen samenbrengen alumni en vrienden van de industrie 884 00:42:21,820 --> 00:42:24,710 om te praten over wat ze hebben tot uit sinds zijn afstuderen. 885 00:42:24,710 --> 00:42:27,820 Ook dit jaar zullen we inhuldigen de allereerste CS50 50 886 00:42:27,820 --> 00:42:31,390 codering contest-- een mid-semester gelegenheid om iedereen te laten 887 00:42:31,390 --> 00:42:35,430 op een opt-in basis, een hebben uitdaging van verstand tegen klasgenoten, 888 00:42:35,430 --> 00:42:39,250 opnieuw in teams van twee of drie of vier, met alleen dat de programmering 889 00:42:39,250 --> 00:42:41,920 savvy dat u vervolgens onder je riem na slechts zes of zeven 890 00:42:41,920 --> 00:42:44,710 weken van de klas, en de deelnemende in dit soort competitie 891 00:42:44,710 --> 00:42:50,261 online-- Indien u graag uw eigen scherpen vaardigheden des te meer in die uitdaging. 892 00:42:50,261 --> 00:42:52,760 Aan het einde van het semester is de zogenaamde CS50 Hackathon-- 893 00:42:52,760 --> 00:42:56,970 een kans die begint om 7:00 PM eindigt om 07:00, en langs de weg 894 00:42:56,970 --> 00:43:01,900 zijn 12 avonduren in te duiken in finale project-- de cursus 895 00:43:01,900 --> 00:43:04,820 gelegenheid te ontwerpen en uitvoering van de meeste iets van belang 896 00:43:04,820 --> 00:43:06,980 aan u met uw onderwijs begeleiding collega's. 897 00:43:06,980 --> 00:43:09,600 Rond 09:00 doen we doorgaans serveren pizza, 01:00, 898 00:43:09,600 --> 00:43:13,210 Philippe's, en de weinigen van ons die nog steeds wakker om 05:00, 899 00:43:13,210 --> 00:43:16,310 zijn shuttle per bus vervoerd naar beneden de weg naar IHOP voor het ontbijt. 900 00:43:16,310 --> 00:43:19,340 >> En dan een paar dagen later is de zogenaamde CS50 fare-- 901 00:43:19,340 --> 00:43:23,450 een einde van semester tentoonstelling in viering van hoe ver zo veel 902 00:43:23,450 --> 00:43:28,200 van CS50 studenten vandaan komen week nul helemaal tot week, 903 00:43:28,200 --> 00:43:32,610 en in gedachten houden dat 73% van de klasgenoten en de jouwe dit jaar 904 00:43:32,610 --> 00:43:34,840 een CS klasse nooit eerder genomen. 905 00:43:34,840 --> 00:43:39,226 In feite zoveel reemphasize hier is een paar gezichten van het personeel CS50's. 906 00:43:39,226 --> 00:43:40,184 SPEAKER 4: [ONVERSTAANBAAR]. 907 00:43:40,184 --> 00:43:45,909 908 00:43:45,909 --> 00:43:46,867 SPEAKER 5: [ONVERSTAANBAAR]. 909 00:43:46,867 --> 00:43:51,332 910 00:43:51,332 --> 00:43:52,290 SPEAKER 6: [ONVERSTAANBAAR]. 911 00:43:52,290 --> 00:43:55,276 912 00:43:55,276 --> 00:43:56,234 SPEAKER 7: [ONVERSTAANBAAR]. 913 00:43:56,234 --> 00:44:01,727 914 00:44:01,727 --> 00:44:02,643 SPEAKER 8: [ONVERSTAANBAAR] 915 00:44:02,643 --> 00:44:10,066 916 00:44:10,066 --> 00:44:11,024 SPEAKER 9: [ONVERSTAANBAAR]. 917 00:44:11,024 --> 00:44:14,475 918 00:44:14,475 --> 00:44:15,461 >> SPEAKER 4: [ONVERSTAANBAAR]. 919 00:44:15,461 --> 00:44:16,461 >> SPEAKER 10: [ONVERSTAANBAAR]. 920 00:44:16,461 --> 00:44:21,456 921 00:44:21,456 --> 00:44:23,438 SPEAKER 11: [ONVERSTAANBAAR]. 922 00:44:23,438 --> 00:44:24,438 SPEAKER 12: [ONVERSTAANBAAR]. 923 00:44:24,438 --> 00:44:30,438 924 00:44:30,438 --> 00:44:31,396 SPEAKER 13: [ONVERSTAANBAAR] 925 00:44:31,396 --> 00:44:37,360 926 00:44:37,360 --> 00:44:40,342 >> SPEAKER 14: [ONVERSTAANBAAR]. 927 00:44:40,342 --> 00:44:42,863 >> SPEAKER 13: [ONVERSTAANBAAR]. 928 00:44:42,863 --> 00:44:43,821 SPEAKER 15: [ONVERSTAANBAAR] 929 00:44:43,821 --> 00:44:48,785 930 00:44:48,785 --> 00:44:49,785 SPEAKER 16: [ONVERSTAANBAAR]. 931 00:44:49,785 --> 00:44:53,761 932 00:44:53,761 --> 00:44:55,252 >> SPEAKER 11: [ONVERSTAANBAAR] 933 00:44:55,252 --> 00:44:57,773 934 00:44:57,773 --> 00:44:58,731 SPEAKER 5: [ONVERSTAANBAAR]. 935 00:44:58,731 --> 00:45:11,250 936 00:45:11,250 --> 00:45:15,130 DAVID MALAN: Een deel van het team zijn zelf winkelen klassen. 937 00:45:15,130 --> 00:45:17,760 Maar als de leden van CS50 medewerkers zijn hier, 938 00:45:17,760 --> 00:45:19,230 kon bedenken voor een ogenblik. 939 00:45:19,230 --> 00:45:23,450 CS50's TF's en CA's en [? personeel?] leden hier-- dit zijn slechts een paar 940 00:45:23,450 --> 00:45:28,880 van de faces-- van wie je gewoon zag, en een paar other-- en een paar anderen 941 00:45:28,880 --> 00:45:30,020 nog. 942 00:45:30,020 --> 00:45:33,242 Waarom gaan we niet ga je gang en laat jullie een vijf minuten pauze. 943 00:45:33,242 --> 00:45:35,450 Als u nodig hebt om eend uit te winkel klassen, dat is prima. 944 00:45:35,450 --> 00:45:38,900 En in vijf minuten, we zullen hervatten, het nemen van een blik op de eerste Scratch-- 945 00:45:38,900 --> 00:45:42,420 van onze programmeertaal, ontmoeten het personeel van de cursus hier wat meer, 946 00:45:42,420 --> 00:45:45,020 en de focus uiteindelijk Op probleem set nul. 947 00:45:45,020 --> 00:45:46,710 Dus zullen we weer terug in vijf minuten. 1 00:45:46,864 --> 00:45:47,370 >> Okee. 2 00:45:47,370 --> 00:45:48,590 Dus zijn we weer. 3 00:45:48,590 --> 00:45:51,330 En zijn resterende tijd vandaag, het doel 4 00:45:51,330 --> 00:45:54,320 is om het level playing field in termen van enkele terminologie, 5 00:45:54,320 --> 00:45:55,297 in termen van een aantal ideeën. 6 00:45:55,297 --> 00:45:57,380 Omdat Zoals per een aantal van de hitlijsten eerder, 7 00:45:57,380 --> 00:46:00,130 Er zal een lijst van zijn niveaus van ervaring in de klas, 8 00:46:00,130 --> 00:46:03,210 waarvan sommige studenten genomen sommige programmering voor, 9 00:46:03,210 --> 00:46:04,200 van wie sommigen niet. 10 00:46:04,200 --> 00:46:07,430 En dus met deze eerste probleem set en daarmee de eerste taal 11 00:46:07,430 --> 00:46:10,830 hebben we een kans om te beginnen om voor lief nemen na vandaag 12 00:46:10,830 --> 00:46:12,960 een aantal gemeenschappelijke woordenschat en idee. 13 00:46:12,960 --> 00:46:15,590 >> En we zullen dit doen door middel van eerste languages-- de cursus 14 00:46:15,590 --> 00:46:21,070 naast C en Python en JavaScript en SQL en HTML en CSS, 15 00:46:21,070 --> 00:46:24,450 we zullen in eerste instantie richten en alleen voor problemen stellen nul 16 00:46:24,450 --> 00:46:28,160 deze grafische taal, genaamd Scratch, ontwikkeld door MIT Media Lab 17 00:46:28,160 --> 00:46:30,880 op de weg, om te helpen studenten en kinderen vooral 18 00:46:30,880 --> 00:46:35,070 uiten algorithmically-- in een veel meer overeenkomt met wat 19 00:46:35,070 --> 00:46:37,300 we zouden computational denken noemen. 20 00:46:37,300 --> 00:46:40,985 >> En het is een handig taal omdat zeer snel volgende week in week één, 21 00:46:40,985 --> 00:46:44,360 hebben we de overgang naar een meer traditionele en geheimzinnige taal genaamd 22 00:46:44,360 --> 00:46:46,370 C, dat is puur tekstueel. 23 00:46:46,370 --> 00:46:48,930 U gebruikt uw toetsenbord in Om instructies te schrijven 24 00:46:48,930 --> 00:46:50,230 zoals deze op het scherm. 25 00:46:50,230 --> 00:46:52,840 Maar zelfs als je nog nooit hebt gezien een programmeertaal voor, 26 00:46:52,840 --> 00:46:55,170 in slechts een blik op deze alle in het cryptisch, 27 00:46:55,170 --> 00:47:00,010 kunt u waarschijnlijk wel raden dat waarschijnlijk drukt Hello World. 28 00:47:00,010 --> 00:47:02,050 Maar er is een heleboel syntactische overhead daar. 29 00:47:02,050 --> 00:47:05,770 Er is de vreemde hash symbool of hash tag boven. 30 00:47:05,770 --> 00:47:08,900 Er is de hoek tussen haakjes, wat haakjes, accolades, semi-colon-- 31 00:47:08,900 --> 00:47:11,880 er is gewoon zo veel visuele syntaxis die in de weg. 32 00:47:11,880 --> 00:47:13,940 We beginnen de cursus met Scratch teneinde te komen 33 00:47:13,940 --> 00:47:17,600 verleden al die verstandelijk oninteressant afleiding, 34 00:47:17,600 --> 00:47:20,290 en in plaats daarvan richten op de ideeën. 35 00:47:20,290 --> 00:47:22,540 >> In feite zou dit voorheen. 36 00:47:22,540 --> 00:47:24,830 Deze, voor dit, week wordt na. 37 00:47:24,830 --> 00:47:26,760 Dit, in deze grafische taal Scratch, 38 00:47:26,760 --> 00:47:29,870 is hoe je dat zou hetzelfde uit te voeren program-- een programma dat wanneer deze wordt uitgevoerd, 39 00:47:29,870 --> 00:47:31,340 gewoon zegt hallo wereld. 40 00:47:31,340 --> 00:47:34,740 En wat is er leuk is aan Scratch is dat het deze grafische programmering 41 00:47:34,740 --> 00:47:38,780 omgeving die puzzelstukjes of gebruikt blokken, die alleen samen interlock 42 00:47:38,780 --> 00:47:40,440 als het maakt logische zin te doen. 43 00:47:40,440 --> 00:47:43,810 En met Scratch kun je ontwikkelen animaties en interactieve spelletjes 44 00:47:43,810 --> 00:47:47,270 en kunst, en een aantal dingen die je zou denken in je eigen geest, 45 00:47:47,270 --> 00:47:51,200 en implementeren eenvoudig door slepen en neerzetten van puzzelstukjes. 46 00:47:51,200 --> 00:47:54,265 >> En inderdaad, zullen we de mogelijkheid hebben om een ​​aantal van dezelfde ideeën uit te drukken 47 00:47:54,265 --> 00:47:56,890 dat ik zojuist noemde een moment geleden in het kader van Mike Smith 48 00:47:56,890 --> 00:48:00,670 en het zoeken naar een telefoon book-- dingen achtige functies, maar daden, 49 00:48:00,670 --> 00:48:03,070 dingen zoals loops doen dingen opnieuw en opnieuw, 50 00:48:03,070 --> 00:48:05,170 variabelen, die iets wat we zullen introduceren, 51 00:48:05,170 --> 00:48:08,086 maar het is bekend misschien van algebra-- gewoon een soort van placeholder 52 00:48:08,086 --> 00:48:10,840 tot op zekere waarde die u misschien op te slaan moet later-- Booleaanse uitdrukkingen, 53 00:48:10,840 --> 00:48:13,720 waar die ja nee of waar valse vragen van tevoren. 54 00:48:13,720 --> 00:48:17,117 Omstandigheden zijn die vorken in de road-- die takken zo te zeggen. 55 00:48:17,117 --> 00:48:19,700 En dan zijn er nog een aantal liefhebber functies die we zullen zelfs vandaag de dag zien, 56 00:48:19,700 --> 00:48:22,850 riep arrays en draden en events, dat we dan opnieuw op 57 00:48:22,850 --> 00:48:24,460 tijd in verschillende talen. 58 00:48:24,460 --> 00:48:26,790 Maar Scratch laat ons al deze onderzoeken. 59 00:48:26,790 --> 00:48:30,779 Dus hier in Scratch, deze paarse blok is wat een functie is typisch 60 00:48:30,779 --> 00:48:31,570 eruit gaat zien. 61 00:48:31,570 --> 00:48:35,620 Deze paarse puzzelstukje dat sommige heeft woord als we zeggen, dat is de actie, 62 00:48:35,620 --> 00:48:38,490 en dan is het misschien een hebben argument of een parameter-- andere manier 63 00:48:38,490 --> 00:48:41,140 van de aard van de customizing wat dat blok doet 64 00:48:41,140 --> 00:48:45,182 zodat het niet vooraf heeft vastgesteld MIT wat deze paarse blok zegt. 65 00:48:45,182 --> 00:48:47,390 In feite zie je in een moment dat ik ben in staat om te typen 66 00:48:47,390 --> 00:48:49,931 de woorden als hello wereld, of hallo David, of hello Zamayla, 67 00:48:49,931 --> 00:48:53,750 of wat ik wil, in het argument dat raadsel piece-- de witte doos 68 00:48:53,750 --> 00:48:54,251 er. 69 00:48:54,251 --> 00:48:57,166 Ondertussen, als ik wil een lus, zullen we zien dat er puzzelstukken die 70 00:48:57,166 --> 00:48:58,640 er een beetje oranje als deze. 71 00:48:58,640 --> 00:49:01,690 En hun vorm soort suggereert dat er iets gebeurt opnieuw en opnieuw 72 00:49:01,690 --> 00:49:02,680 in een cyclus. 73 00:49:02,680 --> 00:49:06,800 >> Dus als ik een wikkel zeg hallo wereld block met een voor altijd te blokkeren in Scratch, 74 00:49:06,800 --> 00:49:10,307 het is gewoon te blijven zeggen hallo wereld voor altijd, heel letterlijk. 75 00:49:10,307 --> 00:49:12,390 Ondertussen is er een ander soort lus in Scratch 76 00:49:12,390 --> 00:49:14,348 dat we een herhaling zullen see-- block--, waar, als je 77 00:49:14,348 --> 00:49:17,940 tevoren weten hoeveel keer u wilt dat de lus uit te voeren 78 00:49:17,940 --> 00:49:21,850 een eindig aantal keren in fact-- u kunt opgeven dat door te typen in een aantal 79 00:49:21,850 --> 00:49:25,380 of aansluiten van een variabele, zoals x of y zoals we zullen zien. 80 00:49:25,380 --> 00:49:27,690 >> In feite, variabelen zoals i in dit geval, die 81 00:49:27,690 --> 00:49:30,109 is een algemene naam voor een integer variabele die 82 00:49:30,109 --> 00:49:31,900 net slaat een number-- een geheel getal kan zijn, 83 00:49:31,900 --> 00:49:35,470 deze oranje blok hier gebruiken om set een variabele zoals ik op nul. 84 00:49:35,470 --> 00:49:38,900 Hier is een voorbeeld in het groen van een Booleaanse expressie in Scratch. 85 00:49:38,900 --> 00:49:43,700 Hoewel dit ziet eruit als een wiskundige formule, math ongelijkheid als dit 86 00:49:43,700 --> 00:49:45,320 echt Booleaanse uitdrukkingen. 87 00:49:45,320 --> 00:49:46,570 Dit is waar of onwaar. 88 00:49:46,570 --> 00:49:48,300 I kleiner is dan 50. 89 00:49:48,300 --> 00:49:51,815 Het is of een ja of nee antwoord of waar of onwaar antwoord. 90 00:49:51,815 --> 00:49:53,940 En we zullen over het algemeen noemen deze Booleaanse expressies. 91 00:49:53,940 --> 00:49:55,148 En het hoeft niet te worden 50. 92 00:49:55,148 --> 00:49:57,970 Het kan x kleiner dan y, y groter dan, gelijk aan y-- 93 00:49:57,970 --> 00:50:00,020 een aantal andere vragen kunnen worden gesteld. 94 00:50:00,020 --> 00:50:03,250 >> Nu, op het eerste gezicht, dit ziet er misschien opeens heel vet hier, en het is. 95 00:50:03,250 --> 00:50:06,540 Maar begrip verstandig, het is redelijk bekend van voor. 96 00:50:06,540 --> 00:50:09,370 Indien x kleiner dan y, is dan zeggen zo veel. 97 00:50:09,370 --> 00:50:12,230 Indien echter x groter dan y, zeg dan zo veel. 98 00:50:12,230 --> 00:50:14,260 Else zeggen x gelijk is aan y. 99 00:50:14,260 --> 00:50:17,220 Dus we hebben een voorbeeld er van een derde scenario-- 100 00:50:17,220 --> 00:50:20,600 de enige derde possibility-- x is ofwel groter dan, kleiner dan of gelijk aan. 101 00:50:20,600 --> 00:50:22,420 Dus hebben we een drieweg splitsing in de weg. 102 00:50:22,420 --> 00:50:26,290 >> En let op wat is cool hier-- Scratch, lijkt, heeft maar een puzzel 103 00:50:26,290 --> 00:50:28,840 piece, in dit geval, als-blok. 104 00:50:28,840 --> 00:50:32,090 En toch is dat lijkt te impliceren u kunt hebben slechts een in twee richtingen vork in de weg. 105 00:50:32,090 --> 00:50:34,631 U kunt naar links of rechts, maar hoe zit het met die derde scenario? 106 00:50:34,631 --> 00:50:35,760 Wat als x gelijk is aan y? 107 00:50:35,760 --> 00:50:36,500 Geen probleem. 108 00:50:36,500 --> 00:50:39,640 Neem een ​​puzzelstukje, zet ander erin 109 00:50:39,640 --> 00:50:45,759 het semantische equivalente creëren of indien, anders als, else-- en nu 110 00:50:45,759 --> 00:50:47,300 heb je drie weg vork in de weg. 111 00:50:47,300 --> 00:50:49,091 En zoals we zullen zien, de Scratch puzzelstukjes 112 00:50:49,091 --> 00:50:51,820 kan worden uitgerekt en groeien, om meer spullen proppen in hen. 113 00:50:51,820 --> 00:50:54,420 Je hoeft niet aan te passen alles op zijn standaard grootte. 114 00:50:54,420 --> 00:50:56,690 >> Dit is iets wat we zullen Al snel zien heet een array. 115 00:50:56,690 --> 00:51:00,880 Het is als een list-- een manier opslaan van meerdere stukken informatie 116 00:51:00,880 --> 00:51:02,886 in een variabele, niet alleen een nummer. 117 00:51:02,886 --> 00:51:05,760 Deze we een vertegenwoordiger van zullen zien een zogenaamde multi-threading. 118 00:51:05,760 --> 00:51:08,280 In feite, al uw Macs en pc's deze dagen 119 00:51:08,280 --> 00:51:10,810 ondersteuning voor multi-threading, wat betekent dat je kunt letterlijk 120 00:51:10,810 --> 00:51:12,390 doen meerdere dingen tegelijk. 121 00:51:12,390 --> 00:51:15,390 U kunt Microsoft Word hebben in de voorgrond, werken aan een aantal essay. 122 00:51:15,390 --> 00:51:17,160 Misschien heb je een browser op de achtergrond opening 123 00:51:17,160 --> 00:51:18,720 G-mail of Facebook of iets dergelijks. 124 00:51:18,720 --> 00:51:22,730 Uw computer kan meerdere dingen te doen vandaag omdat het multi-threaded, 125 00:51:22,730 --> 00:51:26,390 en programma's die ze in in bijzonder zijn ook multi-threaded. 126 00:51:26,390 --> 00:51:28,970 >> Er zijn dingen geroepen evenementen goed in de wereld van de Scratch, 127 00:51:28,970 --> 00:51:32,640 en dan is er een manier ook, te maken onze eigen aangepaste puzzelstukjes als dingen 128 00:51:32,640 --> 00:51:34,810 niet werkelijk bestaan ​​tevoren. 129 00:51:34,810 --> 00:51:38,260 Dus laten we motiveren dit als volgt. 130 00:51:38,260 --> 00:51:40,580 Enkele jaren geleden, toen ik eerst ontdekt Scratch, 131 00:51:40,580 --> 00:51:43,530 toen ik was eigenlijk een grad student aan het MIT, we 132 00:51:43,530 --> 00:51:45,640 onszelf kregen de opdracht om huiswerk te maken. 133 00:51:45,640 --> 00:51:47,614 En ik implemented-- die, achteraf gezien, 134 00:51:47,614 --> 00:51:50,780 was een zeer slechte beslissing, want het is de meest ergerlijke lied in de wereld 135 00:51:50,780 --> 00:51:53,321 tot acht uur te luisteren tijdens het werken op uw homework-- 136 00:51:53,321 --> 00:51:57,180 maar iets wat ik had Oscar Time genoemd, die misschien een bekend nummer. 137 00:51:57,180 --> 00:51:59,820 >> CS50s bezit Jordan Hayashi, een van onze meer senior medewerkers, 138 00:51:59,820 --> 00:52:03,920 heeft een upgrade voor 2015 en nu 2016, sinds terug in de dag, 139 00:52:03,920 --> 00:52:06,610 Ik had alles gewoon in Oscar's prullenbak. 140 00:52:06,610 --> 00:52:09,320 Nu ondersteunen we recyclage en compostering. 141 00:52:09,320 --> 00:52:12,050 >> Maar om het beeld te schetsen van wat we kunnen doen hier 142 00:52:12,050 --> 00:52:14,130 en om een ​​deel van te motiveren het lagere niveau voorbeelden, 143 00:52:14,130 --> 00:52:16,400 konden we krijgen een andere vrijwilliger om gewoon te komen op maximaal 144 00:52:16,400 --> 00:52:18,331 en speel mijn eerste huiswerkopdracht ooit? 145 00:52:18,331 --> 00:52:18,830 Kom maar naar boven. 146 00:52:18,830 --> 00:52:19,250 Wat is je naam? 147 00:52:19,250 --> 00:52:20,030 >> HENRY: Henry. 148 00:52:20,030 --> 00:52:22,660 >> DAVID MALAN: Henry, kom op maximaal. 149 00:52:22,660 --> 00:52:24,190 Kom maar naar boven. 150 00:52:24,190 --> 00:52:27,070 Ga hoe dan ook, en zie je in een ogenblik, 151 00:52:27,070 --> 00:52:29,870 Ik ga om te gaan en druk op de groene vlag in de rechterbovenhoek 152 00:52:29,870 --> 00:52:31,100 hoek, dat wil zeggen te gaan. 153 00:52:31,100 --> 00:52:33,320 Het teken icoon kleine stop gaat stop zeggen, 154 00:52:33,320 --> 00:52:35,490 en dat is wanneer je begint en stoppen met het programma. 155 00:52:35,490 --> 00:52:36,450 Aangenaam kennis te maken. 156 00:52:36,450 --> 00:52:36,950 Okee. 157 00:52:36,950 --> 00:52:39,100 Dus we gaan naar de instructies op het scherm in slechts een moment. 158 00:52:39,100 --> 00:52:41,450 En alleen door het spelen van dit spel voor een paar seconds-- geloof me, 159 00:52:41,450 --> 00:52:43,670 we gaan niet te willen spelen de hele weg naar de end-- je wil 160 00:52:43,670 --> 00:52:45,470 krijg je een gevoel van wat het programma doet. 161 00:52:45,470 --> 00:52:49,170 En meer dan alleen maar richten op Henry goed of slecht in dit spel, aandacht 162 00:52:49,170 --> 00:52:52,600 en hoe werd uitgevoerd door mij oorspronkelijk en vervolgens door Jordanië. 163 00:52:52,600 --> 00:52:54,640 Met andere woorden, waar zijn de variabelen? 164 00:52:54,640 --> 00:52:55,520 Waar zijn de lussen? 165 00:52:55,520 --> 00:52:56,520 Waar zijn de functies? 166 00:52:56,520 --> 00:53:00,700 En we zullen zien of we niet zien die onder de motorkap. 167 00:53:00,700 --> 00:53:03,660 >> Klik gewoon op en sleep trash naar de juiste bak. 168 00:53:03,660 --> 00:54:02,100 >> [Muziek] 169 00:54:02,100 --> 00:54:02,600 Okee. 170 00:54:02,600 --> 00:54:03,160 Dat is heel goed. 171 00:54:03,160 --> 00:54:04,286 Waarom doen we het niet stoppen daar. 172 00:54:04,286 --> 00:54:04,786 Dank je. 173 00:54:04,786 --> 00:54:05,830 Proficiat aan Henry. 174 00:54:05,830 --> 00:54:07,002 Dank je. 175 00:54:07,002 --> 00:54:10,690 >> [APPLAUS] 176 00:54:10,690 --> 00:54:12,450 >> Stel je voor het debuggen van dat programma. 177 00:54:12,450 --> 00:54:15,880 Als er een probleem is twee minuut van de lied belden-- maar zo 178 00:54:15,880 --> 00:54:17,430 wat is hier aan de hand echt? 179 00:54:17,430 --> 00:54:20,900 Zo ingewikkeld als het misschien beginnen te lijken na verloop van tijd te krijgen, 180 00:54:20,900 --> 00:54:22,910 inderdaad meer dingen begon te vallen, 181 00:54:22,910 --> 00:54:25,370 wat interessant over dit soort example-- 182 00:54:25,370 --> 00:54:27,270 en we zullen zien een paar others-- is dat als je 183 00:54:27,270 --> 00:54:30,416 kijken langs de complexiteit of de verfijning van het spel, 184 00:54:30,416 --> 00:54:33,040 Er is een zeer eenvoudig gebouw blokken die allemaal play--, 185 00:54:33,040 --> 00:54:35,840 als je ze te destilleren die bouwstenen zijn zeer toegankelijk 186 00:54:35,840 --> 00:54:37,401 en uitvoerbare zich. 187 00:54:37,401 --> 00:54:39,150 Zo is het al enige tijd, maar ik ben 188 00:54:39,150 --> 00:54:42,900 vrij zeker van dat wat ik in eerste instantie deed toen het maken van dit spel voor de eerste keer 189 00:54:42,900 --> 00:54:44,787 was ik helemaal zoals procrastinated. 190 00:54:44,787 --> 00:54:47,120 Ik helemaal niet gericht op de logica of de puzzelstukjes, 191 00:54:47,120 --> 00:54:50,810 Concentreerde ik me op de graphics en vinden de straat post en de prullenbak 192 00:54:50,810 --> 00:54:51,540 en dat alles. 193 00:54:51,540 --> 00:54:53,456 Maar dat waren vereiste ingrediënten op het eerste. 194 00:54:53,456 --> 00:54:57,220 En zodra ik klaar uitstellen en de aanleg van het overkoepelend kader, 195 00:54:57,220 --> 00:55:00,337 Ik besloot, laat me gewoon één stuk van afval uit de lucht vallen. 196 00:55:00,337 --> 00:55:02,170 En we zullen zien Scratch ondersteunt dingen geroepen 197 00:55:02,170 --> 00:55:06,386 sprites-- tekens die kunnen hebben verschillende kostuums op, zodat ze 198 00:55:06,386 --> 00:55:07,010 er anders uitzien. 199 00:55:07,010 --> 00:55:09,660 >> En dus heb ik een prullenbak kostuum op één zo'n sprite. 200 00:55:09,660 --> 00:55:12,007 En ik nodig had om uit de lucht vallen. 201 00:55:12,007 --> 00:55:14,590 En zo blijkt, Scratch, zoals de meeste programmeertalen, 202 00:55:14,590 --> 00:55:18,099 ondersteunt willekeurige getallen of technisch pseudocode willekeurige getallen, 203 00:55:18,099 --> 00:55:20,390 zodat door te slepen en het laten vallen van bepaalde puzzelstukjes, 204 00:55:20,390 --> 00:55:22,890 Ik was in staat om de prullenbak hebben komen van links op het eerste. 205 00:55:22,890 --> 00:55:25,580 En dan de volgende keer dat zij viel, uit rechts en dan van het midden. 206 00:55:25,580 --> 00:55:28,060 En al het spel deed was gewoon hebben trash uit de lucht vallen. 207 00:55:28,060 --> 00:55:29,770 Je kon niet wijzen op het of klik erop. 208 00:55:29,770 --> 00:55:31,103 Je kon niet open de prullenbak. 209 00:55:31,103 --> 00:55:32,160 Je kon niets doen. 210 00:55:32,160 --> 00:55:34,450 Maar het was een baby stap in de richting van mijn ultieme visie. 211 00:55:34,450 --> 00:55:36,720 >> En daarna, ik eigenlijk geïmplementeerd een soort 212 00:55:36,720 --> 00:55:41,230 van sensing zodat als je niet klikt en sleep op het stuk van afval 213 00:55:41,230 --> 00:55:44,350 over de prullenbak, Oscar's deksel zou openen en sluiten. 214 00:55:44,350 --> 00:55:47,650 Niets zou er gebeuren met de prullenbak, maar althans het deksel zou openen en sluiten. 215 00:55:47,650 --> 00:55:49,642 Dus dan controleren, stap twee van de twee. 216 00:55:49,642 --> 00:55:52,100 En dit is wat er aan de hand te zijn sleutel in beide probleem nulstellen 217 00:55:52,100 --> 00:55:55,970 en programmeren algemeen, is neem deze zeer bewuste kleine stapjes. 218 00:55:55,970 --> 00:55:59,390 Omdat het niet alleen toestaan ​​om voel me eerlijk gezegd bereikt veel meer 219 00:55:59,390 --> 00:56:01,250 quickly-- het is de ergste in de wereld 220 00:56:01,250 --> 00:56:06,149 om te proberen om alle van Oscar Time uit te voeren, dan uren later raakte de groene vlag, 221 00:56:06,149 --> 00:56:08,440 en niets werkt zoals verwacht want waar moet je zelfs 222 00:56:08,440 --> 00:56:11,150 beginnen te debuggen of te problemen op te lossen dat programma? 223 00:56:11,150 --> 00:56:12,470 Het is gewoon overweldigend. 224 00:56:12,470 --> 00:56:16,792 >> En dus echt omarmen dit idee van het nemen van steps-- kleine stapjes weer 225 00:56:16,792 --> 00:56:19,000 en again-- opbouwen iets dat, op het einde, 226 00:56:19,000 --> 00:56:23,672 echt indrukwekkend en ingewikkelde, maar op het eerste, is lang niet zo veel dus. 227 00:56:23,672 --> 00:56:24,630 In feite, laten we dit doen. 228 00:56:24,630 --> 00:56:28,989 Laat me ga je gang en-- Scratch zelf Er bestaat op het web op Scratch.MIT.edu, 229 00:56:28,989 --> 00:56:30,780 en u zult worden verteld als veel opnieuw in problemen 230 00:56:30,780 --> 00:56:34,200 set nul, de specificatie voor die al op de website van CS50's. 231 00:56:34,200 --> 00:56:35,725 >> Maar dit is wat Scratch zelf is. 232 00:56:35,725 --> 00:56:38,210 En er is eigenlijk alleen maar drie primaire gebieden. 233 00:56:38,210 --> 00:56:40,980 Op de top zijn er links is de zogenaamde fase. 234 00:56:40,980 --> 00:56:41,810 Dit is Scratch. 235 00:56:41,810 --> 00:56:43,710 De standaard kostuum is een kat. 236 00:56:43,710 --> 00:56:46,950 En dit is de rechthoekige wereld in die je kunt move-- omhoog, omlaag, naar links, 237 00:56:46,950 --> 00:56:48,130 recht en een aantal andere dingen. 238 00:56:48,130 --> 00:56:51,839 In het midden zijn hier onze categorieën of onze pallets van puzzelstukjes, 239 00:56:51,839 --> 00:56:53,630 en verschillende kleuren verschillende dingen betekenen. 240 00:56:53,630 --> 00:56:56,520 En als je rondneuzen, zie je dingen zoals loops en voorwaarden 241 00:56:56,520 --> 00:56:58,160 en variabelen en andere bestanddelen. 242 00:56:58,160 --> 00:57:00,060 >> En dan hier is de scripts omgeving. 243 00:57:00,060 --> 00:57:03,020 Dit is waar ik kan slepen en neerzetten die puzzelstukjes om dingen te doen. 244 00:57:03,020 --> 00:57:04,690 Dus laten we een dergelijk ding. 245 00:57:04,690 --> 00:57:06,630 Laat me ga je gang en-- en ik weet waar het is. 246 00:57:06,630 --> 00:57:10,110 Dus ik ga direct op waar ik weet dat dingen zijn klaar te zijn, 247 00:57:10,110 --> 00:57:13,140 maar wijzen en klikken en rondneuzen zijn onvermijdelijk. 248 00:57:13,140 --> 00:57:15,320 Dus als groene vlag geklikt, wat wil ik doen? 249 00:57:15,320 --> 00:57:17,100 Ik ga dit doen. 250 00:57:17,100 --> 00:57:20,699 Ik ga dit purper raadsel sleept stuk, zeg hallo twee seconden, 251 00:57:20,699 --> 00:57:21,490 en laat me in te zoomen. 252 00:57:21,490 --> 00:57:23,865 >> En ik ga om dit te veranderen te zijn wat ik wil dat het be-- 253 00:57:23,865 --> 00:57:26,471 hello wereld gedurende twee seconden is prima. 254 00:57:26,471 --> 00:57:28,970 Nu, ik ga naar de klik groene vlag, of als ik echt wil, 255 00:57:28,970 --> 00:57:31,820 Ik kan het volledige scherm het en kom dan terug. 256 00:57:31,820 --> 00:57:34,060 Het zal gewoon blijven alles in één venster. 257 00:57:34,060 --> 00:57:36,141 Green flag-- hello wereld. 258 00:57:36,141 --> 00:57:36,640 Okee. 259 00:57:36,640 --> 00:57:38,789 Niet zo interessant. 260 00:57:38,789 --> 00:57:40,080 Dus laat me ga je gang en dit te doen. 261 00:57:40,080 --> 00:57:41,038 Laat me proberen een andere. 262 00:57:41,038 --> 00:57:44,740 Toen groene vlag's clicked-- laten zoiets als een geluid te doen. 263 00:57:44,740 --> 00:57:46,880 En merk op dat uit de doos gratis je krijgt 264 00:57:46,880 --> 00:57:49,910 een kat geluid, net als het standaard sprite. 265 00:57:49,910 --> 00:57:52,380 Dus laat me nu ga je gang en druk op de groene vlag nu. 266 00:57:52,380 --> 00:57:53,224 >> [MIAUWEN] 267 00:57:53,224 --> 00:57:54,490 >> Aw. 268 00:57:54,490 --> 00:57:55,370 Dat is schattig. 269 00:57:55,370 --> 00:57:57,040 Ik ben het programmeren. 270 00:57:57,040 --> 00:57:58,550 Dus wat heb ik gedaan? 271 00:57:58,550 --> 00:58:00,430 Dit is het equivalent van een programma. 272 00:58:00,430 --> 00:58:01,600 Het is natuurlijk super simpel. 273 00:58:01,600 --> 00:58:05,300 Het heeft niet echt allemaal te nemen dat er veel inspanning en MIT deed het meeste werk, 274 00:58:05,300 --> 00:58:07,890 maar ik heb een functie genaamd. 275 00:58:07,890 --> 00:58:08,940 Ik heb een functie gebruikt. 276 00:58:08,940 --> 00:58:12,480 Ik heb wat actie gemaakt, met slechts dat een paarse puzzelstukje. 277 00:58:12,480 --> 00:58:15,960 >> Nou, als ik wil doen drie miauwen op een rij? 278 00:58:15,960 --> 00:58:18,570 Laat me ga je gang en doen twee en drie. 279 00:58:18,570 --> 00:58:20,910 En merken dat wanneer je zweven in de buurt van een stukje van de puzzel, 280 00:58:20,910 --> 00:58:22,970 een kleine witte lijn verschijnt soort van magnetisch, 281 00:58:22,970 --> 00:58:25,190 en het zal breken bij elkaar als je loslaat. 282 00:58:25,190 --> 00:58:26,600 Laten we eens kijken wat er hier gebeurt. 283 00:58:26,600 --> 00:58:27,920 >> [MIAUWEN] 284 00:58:27,920 --> 00:58:32,390 285 00:58:32,390 --> 00:58:34,510 >> Er is een bug. 286 00:58:34,510 --> 00:58:35,650 Ik hoor slechts één meow. 287 00:58:35,650 --> 00:58:37,440 Waarom zou dat zijn? 288 00:58:37,440 --> 00:58:39,001 Ja? 289 00:58:39,001 --> 00:58:39,500 Ja. 290 00:58:39,500 --> 00:58:41,650 We niet echt horen, maar dat is een goede intuïtie. 291 00:58:41,650 --> 00:58:43,400 Ze spelen allemaal op hetzelfde moment. 292 00:58:43,400 --> 00:58:44,000 Waarom? 293 00:58:44,000 --> 00:58:46,587 Nou, de computer is gewoon te doen wat je te vertellen te doen. 294 00:58:46,587 --> 00:58:48,670 Dus als je zegt, spel geluid, spelen geluid, spel geluid, 295 00:58:48,670 --> 00:58:52,887 maar je hoeft het niet te vertellen om te spelen totdat je klaar bent, spelen totdat je klaar bent, 296 00:58:52,887 --> 00:58:54,970 het gaat om door te blazen het programma echt snel 297 00:58:54,970 --> 00:58:56,830 en doen alleen wat je hem vertelt wat te doen. 298 00:58:56,830 --> 00:58:59,040 >> Dus ik moet eigenlijk op te lossen dit in een paar manieren. 299 00:58:59,040 --> 00:59:00,623 Ik kan dit gewoon doen, zich te ontdoen van deze. 300 00:59:00,623 --> 00:59:04,180 Laat me proberen deze andere puzzel piece-- spelen geluid meow tot ze gaar zijn, 301 00:59:04,180 --> 00:59:07,072 en sleept drie deze en klik op Play. 302 00:59:07,072 --> 00:59:09,430 >> [MIAUWEN] 303 00:59:09,430 --> 00:59:13,350 >> Het is niet echt very-- dank je-- heel natuurlijk. 304 00:59:13,350 --> 00:59:16,590 Dus waarom niet ik-- laten me gaan om hier te controleren. 305 00:59:16,590 --> 00:59:17,090 Nice. 306 00:59:17,090 --> 00:59:22,230 Wacht een seconde, en nu laat me terug te gaan om geluiden, en te spelen geluid tot ze gaar zijn, 307 00:59:22,230 --> 00:59:24,620 en dan laat me wacht een seconde. 308 00:59:24,620 --> 00:59:28,692 En dan laat me gaan en je krijgt een meer geluid, en daar gaan we. 309 00:59:28,692 --> 00:59:31,350 >> [MIAUWEN] 310 00:59:31,350 --> 00:59:35,930 >> Een beetje meer natuurlijk, maar dit is niet erg efficiënt. 311 00:59:35,930 --> 00:59:39,830 Zoals ik al te vervelen, allemaal Kortom klikken heen en weer 312 00:59:39,830 --> 00:59:42,724 en echt dupliceren mijn work-- vrij veel kopiëren en plakken. 313 00:59:42,724 --> 00:59:44,640 Sterker nog, als ik controle geklikt of rechts geklikt, 314 00:59:44,640 --> 00:59:46,500 Ik kon net hebt gekopieerd en geplakt. 315 00:59:46,500 --> 00:59:49,870 Wat zou een betere te bouwen te gebruiken? 316 00:59:49,870 --> 00:59:51,090 Wat idee van voor? 317 00:59:51,090 --> 00:59:51,990 >> Ja, dus een lus. 318 00:59:51,990 --> 00:59:54,580 En inderdaad, als we neuzen, we kunnen precies dat te vinden. 319 00:59:54,580 --> 00:59:57,730 Laat me gaan naar evenementen of liever controle. 320 00:59:57,730 --> 00:59:59,650 Dus repeat-- ik niet wil dat het 10 keer zijn. 321 00:59:59,650 --> 01:00:01,370 Dat gaat snel vervelend. 322 01:00:01,370 --> 01:00:03,380 Maar ik zal drie keer herhalen. 323 01:00:03,380 --> 01:00:06,355 Laat me teruggaan naar geluid en speel het geluid tot het klaar is. 324 01:00:06,355 --> 01:00:08,480 Laat me teruggaan naar Control en gewoon wachten een seconde. 325 01:00:08,480 --> 01:00:10,271 En merk op, zou je denk het niet past, 326 01:00:10,271 --> 01:00:13,520 maar nogmaals, als je het laat magnetisch snap op zijn plaats, zal het groeien in te vullen. 327 01:00:13,520 --> 01:00:14,971 Hoe is het nu spelen? 328 01:00:14,971 --> 01:00:18,500 >> [MIAUWEN] 329 01:00:18,500 --> 01:00:19,000 OK. 330 01:00:19,000 --> 01:00:19,660 Nice. 331 01:00:19,660 --> 01:00:22,540 En dit is wat genoemd zou worden een programma dat is ook juist. 332 01:00:22,540 --> 01:00:27,590 Het miauwde drie keer vrij natuurlijk, maar het is beter ontworpen. 333 01:00:27,590 --> 01:00:29,580 Ik gebruik minder redundantie. 334 01:00:29,580 --> 01:00:30,970 Ik heb niet kopiëren en plakken om het even wat. 335 01:00:30,970 --> 01:00:32,470 Ik gebruikte een beter idee. 336 01:00:32,470 --> 01:00:35,340 >> Nu is dit nog niet zo interessant met Scratch niet te doen 337 01:00:35,340 --> 01:00:35,930 iets. 338 01:00:35,930 --> 01:00:37,388 Dus laten we iets anders in plaats. 339 01:00:37,388 --> 01:00:38,670 Laten we altijd iets te doen. 340 01:00:38,670 --> 01:00:39,420 En weet je wat? 341 01:00:39,420 --> 01:00:40,470 Motion lijkt interessant. 342 01:00:40,470 --> 01:00:45,760 Laten we hem 10 te verplaatsen stappen en sloeg nu spelen. 343 01:00:45,760 --> 01:00:46,570 >> OK. 344 01:00:46,570 --> 01:00:49,300 Wel kunnen we soort drag hem terug, en hij is nog steeds 345 01:00:49,300 --> 01:00:51,250 running omdat hij dit altijd doet. 346 01:00:51,250 --> 01:00:53,150 Dus de lus doet wat het zegt te doen, 347 01:00:53,150 --> 01:00:54,650 maar dit is niet zo interessant. 348 01:00:54,650 --> 01:00:55,310 Laten we dit doen. 349 01:00:55,310 --> 01:00:59,870 Laat me een controle blok toe te voegen, en het gebruik van een deze voorwaarden voor de eerste keer. 350 01:00:59,870 --> 01:01:03,119 >> Dus het gaat om 10 steps-- bewegen 10 punten, 10 pixels op de Screen-- 351 01:01:03,119 --> 01:01:04,660 dan dat het gaat om deze vraag te stellen. 352 01:01:04,660 --> 01:01:09,340 Als er iets waar is, dan doen iets in dit blok. 353 01:01:09,340 --> 01:01:13,060 Dus het blijkt sensing heeft een hele stelletje Boolean expressions-- 354 01:01:13,060 --> 01:01:16,580 vragen van de ja nee of ware valse form-- laat mij dit te doen. 355 01:01:16,580 --> 01:01:19,260 >> Als touching-- en dan is er dit kleine drop down menu. 356 01:01:19,260 --> 01:01:20,410 Ik kan het parametriseren. 357 01:01:20,410 --> 01:01:23,010 Als het aanraken van de edge-- laten zoiets doen. 358 01:01:23,010 --> 01:01:27,310 Dus als het aanraken edge-- laat me terug te gaan naar de beweging. 359 01:01:27,310 --> 01:01:32,281 En waarom doen we niet gewoon draaien 180 graden? 360 01:01:32,281 --> 01:01:32,780 Okee. 361 01:01:32,780 --> 01:01:35,070 Dus altijd, bewegen 10 stappen. 362 01:01:35,070 --> 01:01:37,670 Als je het aanraken van de edge, draaien 180 graden. 363 01:01:37,670 --> 01:01:39,720 En dat is niet het einde van het programma omdat je in een voor altijd te blokkeren, 364 01:01:39,720 --> 01:01:42,053 dus het gaat om weer te gaan en opnieuw en opnieuw en opnieuw. 365 01:01:42,053 --> 01:01:43,980 Dus laten we eens kijken wat er gebeurt. 366 01:01:43,980 --> 01:01:44,785 OK. 367 01:01:44,785 --> 01:01:48,270 Een beetje buggy, maar wel cool. 368 01:01:48,270 --> 01:01:51,710 >> En we kunnen toevoegen aan deze sommige domme dingen die zijn niet al te intellectueel 369 01:01:51,710 --> 01:01:52,270 interessant. 370 01:01:52,270 --> 01:01:57,210 Maar als we raken dit kleine microfoon button-- ouch. 371 01:01:57,210 --> 01:01:58,480 Laat me dit opruimen. 372 01:01:58,480 --> 01:02:01,540 Laat me dit te verbeteren als ze zouden zeggen op tv. 373 01:02:01,540 --> 01:02:05,400 Schoon dat up, Opslaan en ga nu tot scripts. 374 01:02:05,400 --> 01:02:07,500 >> En nu, laat me gaan klinken. 375 01:02:07,500 --> 01:02:09,002 Laat ik geef het een naam. 376 01:02:09,002 --> 01:02:12,440 Ik zal dit ouch noemen. 377 01:02:12,440 --> 01:02:13,840 En nu spelen geluid ouch. 378 01:02:13,840 --> 01:02:16,520 Let op het in de weinig drop down menu. 379 01:02:16,520 --> 01:02:17,612 Laten we eens kijken. 380 01:02:17,612 --> 01:02:20,444 >> [OUCH] 381 01:02:20,444 --> 01:02:24,377 >> [Lachend] 382 01:02:24,377 --> 01:02:25,835 Maar we kunnen veranderen t zijn on the fly. 383 01:02:25,835 --> 01:02:28,106 We kunnen twee keer zo vervelend zijn. 384 01:02:28,106 --> 01:02:31,760 >> [OUCH] 385 01:02:31,760 --> 01:02:35,332 >> Of als we het als 1000 stappen bij een tijd-- 386 01:02:35,332 --> 01:02:39,900 387 01:02:39,900 --> 01:02:40,670 >> OK. 388 01:02:40,670 --> 01:02:42,295 Dus we gaan naar die ene met rust te laten. 389 01:02:42,295 --> 01:02:45,290 Dus nogmaals, het bouwen van blocks-- I begonnen met iets super eenvoudig, 390 01:02:45,290 --> 01:02:47,930 en dan heb ik een functie, voegde een functie, een functie toegevoegd. 391 01:02:47,930 --> 01:02:50,721 En ik moet niet langer zorgen te maken over hoe de eerste van deze kenmerken 392 01:02:50,721 --> 01:02:53,690 werd uitgevoerd als ik verder om dingen te laag bovenop. 393 01:02:53,690 --> 01:02:55,430 Dus in feite, laat me een ander te doen hier. 394 01:02:55,430 --> 01:03:00,580 Laat me ga je gang en open een bestand dat Ik heb van tevoren, genaamd Schaap. 395 01:03:00,580 --> 01:03:03,970 >> Dus het heeft een iets andere personage dat ziet er zo uit. 396 01:03:03,970 --> 01:03:07,370 En laat me zien als ik kan niet doe iets met behulp van een teller 397 01:03:07,370 --> 01:03:09,310 in dit case-- een zogenaamde variabele. 398 01:03:09,310 --> 01:03:15,540 Ik ga vooruit en onder Events-- gaan laat me een groene vlag geklikt. 399 01:03:15,540 --> 01:03:19,030 Dan laat me gaan naar Data, waarvan ik weet door simpelweg te spelen voor, 400 01:03:19,030 --> 01:03:20,214 Daar variabelen. 401 01:03:20,214 --> 01:03:21,880 En ik ga om verder te gaan en sleep dit. 402 01:03:21,880 --> 01:03:25,144 >> Dus een variabele genaamd teller, en Ik ga het initialiseren op nul. 403 01:03:25,144 --> 01:03:27,560 Ik kan noemen anything-- x of y of z-- maar in de programmering, 404 01:03:27,560 --> 01:03:30,410 roept iets in een semantisch handige manier, zoals teller, 405 01:03:30,410 --> 01:03:34,540 die beschrijft wat het is, het is een stuk makkelijker om uw code later te lezen. 406 01:03:34,540 --> 01:03:37,460 Laat me ga je gang en krijg een voor altijd blokkeren hier. 407 01:03:37,460 --> 01:03:41,289 En laat me gaan naar de looks pagina en doe een Say blok. 408 01:03:41,289 --> 01:03:44,330 Maar wat heb je aan variabelen I hoeft niet enkel type in iets 409 01:03:44,330 --> 01:03:47,850 als hello wereld, die we hebben al gedaan, kan ik in plaats daarvan gaan naar Data 410 01:03:47,850 --> 01:03:50,690 en sleep mijn variabele, en zelfs hoewel de vorm niet helemaal 411 01:03:50,690 --> 01:03:53,000 lijkt alsof het moet passen, het zal groeien te vullen. 412 01:03:53,000 --> 01:03:58,396 En ik zal gewoon zeggen dat de teller voor één second-- spoiler-- hij gaat tellen. 413 01:03:58,396 --> 01:04:00,380 We zullen zeggen dat het een seconde. 414 01:04:00,380 --> 01:04:02,840 Dan ga ik om te gaan en laat hem wachten op een seconde, 415 01:04:02,840 --> 01:04:04,650 dus het telt niet te snel. 416 01:04:04,650 --> 01:04:08,430 En dan tot slot, te wijzigen teller door een-- met andere woorden, 417 01:04:08,430 --> 01:04:13,520 verhogen de teller met één toegevoegde waarde en doe dit altijd. 418 01:04:13,520 --> 01:04:16,129 >> Zodat de schapen ook, als een programmeur, telt vanaf 0. 419 01:04:16,129 --> 01:04:20,350 420 01:04:20,350 --> 01:04:23,740 En als we maar lang genoeg wacht, Hij zal dit altijd doen. 421 01:04:23,740 --> 01:04:27,740 Maar dat is niet helemaal waar, want in feite, zoals we zullen ontdekken in één week, 422 01:04:27,740 --> 01:04:31,871 integers en computers algemeen, technisch gezien slechts een finite-- goed, 423 01:04:31,871 --> 01:04:33,829 veeleer computers, wanneer zij vertegenwoordigen integers, 424 01:04:33,829 --> 01:04:35,670 slechts een eindig aantal bits. 425 01:04:35,670 --> 01:04:37,860 Die lampen er kunnen slechts zo hoog 426 01:04:37,860 --> 01:04:39,239 voordat je uit gloeilampen. 427 01:04:39,239 --> 01:04:41,590 En een computer aan alleen heeft zoveel geheugen, 428 01:04:41,590 --> 01:04:44,640 slechts zoveel transistors, dus het kan alleen maar rekenen zo hoog. 429 01:04:44,640 --> 01:04:47,409 >> Dus het blijkt dat de schapen, Ik denk, kan rekenen tot 2 miljard 430 01:04:47,409 --> 01:04:48,409 of iets heel groots. 431 01:04:48,409 --> 01:04:50,325 Dus we gaan niet wachten om dit te laten gebeuren. 432 01:04:50,325 --> 01:04:54,850 Maar uiteindelijk enkele bug zal gebeuren dat kan een aantal zeer reële wereld 433 01:04:54,850 --> 01:04:55,970 vertakkingen. 434 01:04:55,970 --> 01:04:58,861 Maar afgezien van de schapen, die net introduceert een variabele. 435 01:04:58,861 --> 01:05:01,110 Laten we gaan en open te stellen iets wat ik van tevoren 436 01:05:01,110 --> 01:05:07,430 hier genoemd Pet de Cat-- Huisdier de Cat hier. 437 01:05:07,430 --> 01:05:10,420 En merk hier is het paar blokken, maar als groene vlag 438 01:05:10,420 --> 01:05:12,474 geklikt, voor altijd het volgende te doen. 439 01:05:12,474 --> 01:05:15,265 Als je het aanraken van de muis pointer-- zodat de cursor op het scherm, 440 01:05:15,265 --> 01:05:18,529 de arrow-- play geluid meow en dan twee seconden wachten. 441 01:05:18,529 --> 01:05:19,570 En dit gewoon doen altijd. 442 01:05:19,570 --> 01:05:22,619 Gewoon voortdurend wachten om te zien of de pointer-- 443 01:05:22,619 --> 01:05:24,710 als de kat is het aanraken van de pointer. 444 01:05:24,710 --> 01:05:26,060 >> Dus ik hit te spelen. 445 01:05:26,060 --> 01:05:26,920 Er gebeurt niets. 446 01:05:26,920 --> 01:05:28,980 Maar zoals ik beweeg de cursor over de kat, 447 01:05:28,980 --> 01:05:31,960 >> [MIAUWEN] 448 01:05:31,960 --> 01:05:34,750 >> En als ik beweeg het weg, niet aaien van de kat niet meer. 449 01:05:34,750 --> 01:05:38,090 Dus sommige voorwaardelijke logica genest binnen een lus. 450 01:05:38,090 --> 01:05:43,070 Hoe zit het met dit voorbeeld, bewust riep niet Huisdier de kat? 451 01:05:43,070 --> 01:05:45,253 Wat dit gaat doen? 452 01:05:45,253 --> 01:05:47,880 >> [MIAUWEN] 453 01:05:47,880 --> 01:05:50,215 >> Waarom zou je niet de kat huisdier? 454 01:05:50,215 --> 01:05:59,440 >> [MIAUWEN] 455 01:05:59,440 --> 01:06:00,699 >> OK. 456 01:06:00,699 --> 01:06:03,880 Dit is dus een voorbeeld van een if anders. 457 01:06:03,880 --> 01:06:06,482 Het is een beslissing punt en want het zit in de lus, 458 01:06:06,482 --> 01:06:07,690 ze zijn allebei krijgen gecontroleerd. 459 01:06:07,690 --> 01:06:08,280 Is dit waar? 460 01:06:08,280 --> 01:06:08,760 Is dit waar? 461 01:06:08,760 --> 01:06:09,250 Is dit waar? 462 01:06:09,250 --> 01:06:09,791 Is dit waar? 463 01:06:09,791 --> 01:06:11,880 En eventueel, één van die gaat gelden 464 01:06:11,880 --> 01:06:16,480 en dus moet je ofwel de meow of horen het gebrul van de leeuw in dat geval. 465 01:06:16,480 --> 01:06:21,400 >> Nou, laten we een iets meer luxe één dat ik van tevoren too-- discussies. 466 01:06:21,400 --> 01:06:25,210 Dus een thread is slechts één wat een computer kan doen. 467 01:06:25,210 --> 01:06:29,349 Dus een multi-threaded programma is een programma die kunnen meerdere dingen tegelijk te doen. 468 01:06:29,349 --> 01:06:31,140 En al deze voorbeelden tot nu toe had 469 01:06:31,140 --> 01:06:35,980 slechts een script, om zo te speak-- een programma als dit hier. 470 01:06:35,980 --> 01:06:38,810 Maar let op dit programma heeft twee sprites, twee karakters. 471 01:06:38,810 --> 01:06:40,020 Een daarvan is een vogel. 472 01:06:40,020 --> 01:06:40,870 Een daarvan is een kat. 473 01:06:40,870 --> 01:06:45,080 >> En opvalt als ik de volgende neer klik links, ze elk hun eigen scripts 474 01:06:45,080 --> 01:06:47,120 of programma's met hen verbonden. 475 01:06:47,120 --> 01:06:49,420 En deze beide programma's, bericht, start 476 01:06:49,420 --> 01:06:52,600 met als groene vlag clicked-- laten we eens kijken naar de cat-- 477 01:06:52,600 --> 01:06:54,030 wanneer groene vlag geklikt. 478 01:06:54,030 --> 01:06:58,220 En zo ja, toen ik raakte het spel nu, twee dingen gaan gebeuren in een keer. 479 01:06:58,220 --> 01:07:01,750 De kat en de vogel zijn allebei gaan gelijktijdig in bedrijf 480 01:07:01,750 --> 01:07:03,815 dit effect. 481 01:07:03,815 --> 01:07:05,440 En je zou denken wat er gebeurt. 482 01:07:05,440 --> 01:07:08,340 Er is een lus en de vogel en de kat worden opeenvolgend. 483 01:07:08,340 --> 01:07:11,270 De vogel is gewoon stuiterend als Ik was vroeger toen ik zei ouch. 484 01:07:11,270 --> 01:07:13,040 Maar de kat heeft duidelijk een voordeel. 485 01:07:13,040 --> 01:07:16,040 Er is nog een detectieblok die verwijst de kat doelbewust 486 01:07:16,040 --> 01:07:19,836 de vogel in dit geval. 487 01:07:19,836 --> 01:07:22,960 Dus we konden plagen elkaar, door te kijken door middel van die blokken, wat er gebeurt. 488 01:07:22,960 --> 01:07:25,460 Maar het belangrijkste ingrediënt is hier één. 489 01:07:25,460 --> 01:07:28,520 De vogel, dus dat dit spel is niet volledig boring-- of dit animation-- 490 01:07:28,520 --> 01:07:30,060 vanaf een willekeurige richting. 491 01:07:30,060 --> 01:07:32,890 En de computer is het oppakken een getal tussen 90 en 180 492 01:07:32,890 --> 01:07:36,110 wezen, zodat het een enigszins verschillende animatie elke keer. 493 01:07:36,110 --> 01:07:39,480 >> En dan zie hier, als de kat is het aanraken van de vogel, dan 494 01:07:39,480 --> 01:07:42,030 spelen de leeuw vier sound-- het gebrul. 495 01:07:42,030 --> 01:07:46,330 Maar ondertussen de vogel palet, hebben we dit. 496 01:07:46,330 --> 01:07:49,229 Voor altijd, als de kat niet aan te raken, gewoon blijven bewegen drie stappen. 497 01:07:49,229 --> 01:07:50,770 En dan is hier een ander stukje van de puzzel. 498 01:07:50,770 --> 01:07:52,030 Als je op de rand, stuiteren. 499 01:07:52,030 --> 01:07:54,840 Dus de vogel is gewoon een soort van opvang zijn eigen bedrijf, 500 01:07:54,840 --> 01:07:57,330 gewoon vliegen in het rond en stuiteren, en het is echt 501 01:07:57,330 --> 01:08:01,780 de kat die het conditionele logica had om te bepalen of zij de vogel had gevangen. 502 01:08:01,780 --> 01:08:02,280 Okee. 503 01:08:02,280 --> 01:08:08,800 Dus laten we een ander hier, dit wordt Hi heet Hi Hi. 504 01:08:08,800 --> 01:08:15,100 En deze hier gewoon doet dit in een voor altijd lus. 505 01:08:15,100 --> 01:08:18,925 Maar notice-- hoe kunnen we stoppen dit erg vervelend programma? 506 01:08:18,925 --> 01:08:21,600 507 01:08:21,600 --> 01:08:22,640 Raak de spatiebalk. 508 01:08:22,640 --> 01:08:27,990 Want als ik dat doe, de linkerhand program-- 509 01:08:27,990 --> 01:08:31,550 merken dat het steeds listening-- is de sleutel ruimte pers. 510 01:08:31,550 --> 01:08:34,090 Als de spatiebalk ingedrukt, en zo ja, wat doet het? 511 01:08:34,090 --> 01:08:35,980 Het doet een veel voorkomende techniek. 512 01:08:35,980 --> 01:08:38,590 Het stelt een variabele gelijk is aan een bepaalde waarde. 513 01:08:38,590 --> 01:08:39,741 Maar schakelt die waarde. 514 01:08:39,741 --> 01:08:41,490 [? Dus verschijnen?] gebaseerd op de shape-- I 515 01:08:41,490 --> 01:08:43,160 een variabele die ik schreef op voorhand genaamd 516 01:08:43,160 --> 01:08:44,770 Gedempt, die net zegt ja of nee. 517 01:08:44,770 --> 01:08:45,880 Wordt het geluid gedempt of niet? 518 01:08:45,880 --> 01:08:46,990 Waar of niet waar? 519 01:08:46,990 --> 01:08:51,580 En let op, ik zeg dit-- als gedempt nul is, dan overstappen op een, 520 01:08:51,580 --> 01:08:53,840 anders ingesteld mute deze op nul. 521 01:08:53,840 --> 01:08:55,540 Dus gewoon flip de waarde van nul tot één. 522 01:08:55,540 --> 01:08:58,320 Ik zou kunnen hebben done-- veranderen van twee naar drie en 1:57 523 01:08:58,320 --> 01:09:00,162 of 4:56 of 5:56. 524 01:09:00,162 --> 01:09:01,870 Maar het maakt niet uit welke nummers ik gebruik, 525 01:09:01,870 --> 01:09:04,090 zolang ik blijf het veranderen van het tegenovergestelde. 526 01:09:04,090 --> 01:09:07,290 >> En de meeste elke programmeur zou gewoon kies nul en een-- valse en ware, 527 01:09:07,290 --> 01:09:09,510 off en on-- om dit te vertegenwoordigen. 528 01:09:09,510 --> 01:09:10,930 En dit is nog steeds actief. 529 01:09:10,930 --> 01:09:12,190 Als ik raakte de spatiebalk weer 530 01:09:12,190 --> 01:09:13,590 >> [SEAL SOUNDS] 531 01:09:13,590 --> 01:09:15,440 >> Het programma loopt nog. 532 01:09:15,440 --> 01:09:18,400 Omdat er dit andere script dat zegt, voor altijd het volgende doen. 533 01:09:18,400 --> 01:09:21,390 534 01:09:21,390 --> 01:09:24,770 Als de gedempte variabele gelijk zero-- dus als je niet gedempt 535 01:09:24,770 --> 01:09:29,609 is de logic-- als het vals of nee, speel dan het geluid, 536 01:09:29,609 --> 01:09:30,650 omdat je niet gedempt. 537 01:09:30,650 --> 01:09:33,358 Je moet het geluid af te spelen en dan denk hi hi hi twee seconden 538 01:09:33,358 --> 01:09:35,790 en dan wachten, en doe het opnieuw en opnieuw en opnieuw. 539 01:09:35,790 --> 01:09:40,760 >> En dus op deze manier hebben we een manier voor mensen to-- voor programma's om te interageren. 540 01:09:40,760 --> 01:09:43,120 En ze hoeven niet te worden zo gedateerd als anderen. 541 01:09:43,120 --> 01:09:46,280 In feite, porren around-- no pun intended-- 542 01:09:46,280 --> 01:09:49,250 iemand bracht een enorme hoeveelheid tijd op het internet uitvoering 543 01:09:49,250 --> 01:09:51,580 PokemonGo in Scratch. 544 01:09:51,580 --> 01:09:55,440 Het geolocates je zelfs in Cambridge of Allston hier. 545 01:09:55,440 --> 01:10:03,120 Dus als je wilt ook wat mensen zien kunnen doen is dit-- zeer chique menu. 546 01:10:03,120 --> 01:10:04,780 Klik hier op. 547 01:10:04,780 --> 01:10:07,430 >> Dit ben ik met mijn pijltjestoetsen nu. 548 01:10:07,430 --> 01:10:09,446 Ik ga om te gaan na dit. 549 01:10:09,446 --> 01:10:09,946 Klik. 550 01:10:09,946 --> 01:10:12,949 551 01:10:12,949 --> 01:10:14,240 En nu u op de pokéball. 552 01:10:14,240 --> 01:10:17,130 553 01:10:17,130 --> 01:10:20,260 Ik bedoel, ik denk dat je bent verondersteld om op de pokéball. 554 01:10:20,260 --> 01:10:20,760 Okee. 555 01:10:20,760 --> 01:10:22,680 Dus deed ik dat. 556 01:10:22,680 --> 01:10:23,950 Ik kan hier te gaan. 557 01:10:23,950 --> 01:10:27,790 En deze persoon geïmplementeerd wat meer Pokeballs dan hier-- drie Pokeballs. 558 01:10:27,790 --> 01:10:29,950 >> We zullen een link naar deze plaatsen online, zodat je kunt spelen. 559 01:10:29,950 --> 01:10:32,364 Maar let er is gewoon een aantal fundamentele bouwstenen. 560 01:10:32,364 --> 01:10:33,780 Het ziet er een stuk liefhebber, en het is. 561 01:10:33,780 --> 01:10:35,905 Dit is indrukwekkend en nog veel meer dan we zouden in het algemeen 562 01:10:35,905 --> 01:10:37,740 verwachten, zeker voor problemen stellen nul. 563 01:10:37,740 --> 01:10:40,809 Ik heb geen idee hoe lang deze persoon online doorgebracht. 564 01:10:40,809 --> 01:10:41,850 Maar het is allemaal gewoon een lus. 565 01:10:41,850 --> 01:10:43,180 Er is een geluid te spelen. 566 01:10:43,180 --> 01:10:44,850 Er is een soort van lus luisteren of ik ben 567 01:10:44,850 --> 01:10:47,558 het raken van de pijl omhoog of omlaag pijl of links en rechts, 568 01:10:47,558 --> 01:10:49,834 en dan als dat zo is, is het bewegen is bepaald aantal pixels. 569 01:10:49,834 --> 01:10:51,750 En dan, als ik klik op een andere sprite, er is 570 01:10:51,750 --> 01:10:53,390 een soort als de conditie daar. 571 01:10:53,390 --> 01:10:54,806 Ja, dit wordt te intens. 572 01:10:54,806 --> 01:10:56,100 We gaan om te stoppen. 573 01:10:56,100 --> 01:10:57,750 Het is al die bouwstenen. 574 01:10:57,750 --> 01:11:01,530 Er zijn geen andere ingrediënten dan degene die we hebben gekeken naar al. 575 01:11:01,530 --> 01:11:04,670 >> En toch, laat mij een laatste reeks voorbeelden 576 01:11:04,670 --> 01:11:06,960 dat schetst een beeld te van wat je hier kunt doen. 577 01:11:06,960 --> 01:11:10,481 Hier is een zeer eenvoudig programma dat doet gewoon dit-- hoest, hoesten, hoest. 578 01:11:10,481 --> 01:11:12,480 En alleen gebaseerd op wat we hebben gekeken naar tot nu toe, 579 01:11:12,480 --> 01:11:14,570 waar is de voor de hand liggende mogelijkheden voor verbetering. 580 01:11:14,570 --> 01:11:15,570 Dit programma is correct. 581 01:11:15,570 --> 01:11:17,980 Het hoesten driemaal, dat is wat ik bedoelde. 582 01:11:17,980 --> 01:11:19,650 Maar het is slecht geïmplementeerd. 583 01:11:19,650 --> 01:11:20,600 Het is slecht ontworpen. 584 01:11:20,600 --> 01:11:22,000 Waarom? 585 01:11:22,000 --> 01:11:22,500 Ja. 586 01:11:22,500 --> 01:11:23,230 Het is niet een lus. 587 01:11:23,230 --> 01:11:24,610 En het is niet zozeer dat het niet een lus, 588 01:11:24,610 --> 01:11:26,400 het is dat er een heleboel van redundantie. 589 01:11:26,400 --> 01:11:28,830 Er wordt gekopieerd en geplakt code, om zo te zeggen. 590 01:11:28,830 --> 01:11:31,830 En de oplossing waarschijnlijk inderdaad een lus. 591 01:11:31,830 --> 01:11:34,350 Dus laat me ga je gang en verbeteren dat. 592 01:11:34,350 --> 01:11:36,250 En ik ga deze slepen hier. 593 01:11:36,250 --> 01:11:39,986 Laat me ga je gang en krijg een herhaling block, verandert dit naar drie. 594 01:11:39,986 --> 01:11:41,860 Ik ga weg te gooien sommige van deze blokken. 595 01:11:41,860 --> 01:11:43,150 >> En je zult merken is het vrij intuïtief. 596 01:11:43,150 --> 01:11:45,691 U slepen en neerzetten en dingen verschijnen en verdwijnen uiteindelijk. 597 01:11:45,691 --> 01:11:49,170 En ik kan alleen deze te slepen in hier, en nu heb ik een schonere versie nog steeds. 598 01:11:49,170 --> 01:11:50,730 Maar weet je wat? 599 01:11:50,730 --> 01:11:52,940 Er is deze kans nu abstraction-- 600 01:11:52,940 --> 01:11:56,350 beginnen nieuwe vocabulaire definiëren dat MIT niet anticiperen. 601 01:11:56,350 --> 01:11:59,110 Er is wachten en herhaal en voor eeuwig en zo, 602 01:11:59,110 --> 01:12:02,590 maar wat als ik wil introduceren het woord hoest als een blok? 603 01:12:02,590 --> 01:12:06,230 Wat als ik wil een stukje van de puzzel waarvan het doel in het leven is te hoesten? 604 01:12:06,230 --> 01:12:10,720 >> Nou, laten we eens kijken naar deze versie hier, die ik gemaakt als volgt. 605 01:12:10,720 --> 01:12:13,579 Magisch, heb ik gemaakt Dit puzzelstukje hier, 606 01:12:13,579 --> 01:12:14,870 die Scratch kun je doen. 607 01:12:14,870 --> 01:12:16,787 En inderdaad C en Python en JavaScript zijn 608 01:12:16,787 --> 01:12:18,370 zal toestaan ​​om dit te doen ook. 609 01:12:18,370 --> 01:12:21,830 U kunt uw eigen aangepaste maken stukken die je bellen wat je wilt. 610 01:12:21,830 --> 01:12:24,890 In dit geval, hoest voelt als een redelijke definitie. 611 01:12:24,890 --> 01:12:27,880 En vervolgens met deze stukken naar beneden Hier kunt u bepalen wat het betekent. 612 01:12:27,880 --> 01:12:30,290 >> Ik gesleept uit dit palet hier-- meer 613 01:12:30,290 --> 01:12:33,500 blocks-- deze grote paarse blok, waar ik typte in hoest 614 01:12:33,500 --> 01:12:35,290 als de naam van mijn nieuwe puzzelstukje. 615 01:12:35,290 --> 01:12:39,920 En dan heb ik het zeg elke keer dat een gebruiker noemt deze nieuwe hoest puzzelstukje, 616 01:12:39,920 --> 01:12:41,770 do inspraak en een wachttijd. 617 01:12:41,770 --> 01:12:46,160 En dus hier in mijn herhalen blok, Ik kan gewoon hoest drie keer. 618 01:12:46,160 --> 01:12:49,972 >> En ik zou zeggen, in het bijzonder Als je nu verbergt dit detail. 619 01:12:49,972 --> 01:12:51,430 Who cares hoe hoest wordt uitgevoerd? 620 01:12:51,430 --> 01:12:54,390 Alles wat ik zorg over als een programmeur dat ik kan hoesten. 621 01:12:54,390 --> 01:12:56,280 Kan me niet schelen hoe zeggen is geïmplementeerd. 622 01:12:56,280 --> 01:12:58,620 Ik zorg gewoon dat de kat kan iets zeggen. 623 01:12:58,620 --> 01:13:02,720 Ik kan abstract weg dat detail en alleen richten op wat er op het scherm hier. 624 01:13:02,720 --> 01:13:04,400 Maar ik kan nog een stap verder te gaan. 625 01:13:04,400 --> 01:13:08,070 >> Merk op dat hier, ik heb geïmplementeerd lus driemaal. 626 01:13:08,070 --> 01:13:11,560 Maar wat als in plaats ik deze versie te grijpen? 627 01:13:11,560 --> 01:13:14,640 En wat als plaats in deze versie hier 628 01:13:14,640 --> 01:13:18,730 Ik verander gewoon mijn puzzelstukje te nemen een argument en input op zichzelf? 629 01:13:18,730 --> 01:13:21,100 En dat kan worden ingevoerd een nummer als drie. 630 01:13:21,100 --> 01:13:24,580 Dus nu, als ik het schrijven van een programma en ik wil dat de kat te hoesten, 631 01:13:24,580 --> 01:13:28,270 Ik kan eigenlijk vertellen de puzzel Stuk hoeveel keer te hoesten, 632 01:13:28,270 --> 01:13:31,990 omdat op de bodem hier, een liefhebber versie van deze aangepaste puzzelstukjes 633 01:13:31,990 --> 01:13:34,500 laat me aangeven dat hoest duurt eigenlijk 634 01:13:34,500 --> 01:13:36,951 een input-- neemt een argument als dit. 635 01:13:36,951 --> 01:13:37,700 En weet je wat? 636 01:13:37,700 --> 01:13:38,890 Misschien realiseer ik me, wacht eens even. 637 01:13:38,890 --> 01:13:40,680 Hoesten is de same-- het is fundamenteel 638 01:13:40,680 --> 01:13:42,120 hetzelfde idee als niezen. 639 01:13:42,120 --> 01:13:44,040 Het is gewoon een andere woord op het scherm. 640 01:13:44,040 --> 01:13:46,550 Ik kan abstract weg verder en implementeren 641 01:13:46,550 --> 01:13:48,750 Deze definitieve versie van een hoesten, die op het eerste gezicht 642 01:13:48,750 --> 01:13:50,660 is veel complexer kijken. 643 01:13:50,660 --> 01:13:52,140 Maar let op wat ik heb gedaan. 644 01:13:52,140 --> 01:13:55,930 Ik heb nu generalized-- genericized really-- dit puzzelstukje 645 01:13:55,930 --> 01:13:59,900 te noemen zeggen woord n ​​keer. 646 01:13:59,900 --> 01:14:04,410 >> En nu heb ik twee nieuwe puzzelstukjes hier beneden te definiëren hoest n keer. 647 01:14:04,410 --> 01:14:06,790 En wat doet de hoest-functie? 648 01:14:06,790 --> 01:14:08,420 Wat doet mijn aangepaste puzzelstukje doen? 649 01:14:08,420 --> 01:14:11,996 Het roept alleen voor het zeggen blok, passeren in het woord dat ik wil zeggen, 650 01:14:11,996 --> 01:14:13,870 passeren van het aantal keren dat ik wil zeggen. 651 01:14:13,870 --> 01:14:18,210 Want nu kan ik implementeren niezen door simpelweg te zeggen achoo, 652 01:14:18,210 --> 01:14:20,320 in dit geval bepaald aantal keren. 653 01:14:20,320 --> 01:14:22,360 >> En dus ik ben gelaagdheid en gelaagdheid. 654 01:14:22,360 --> 01:14:25,690 En nogmaals, de sleutel is hier niet hoe ik geïmplementeerd, maar het feit 655 01:14:25,690 --> 01:14:28,070 dat als ik gewoon letterlijk bewegen deze van het scherm af, 656 01:14:28,070 --> 01:14:31,280 kijk eens hoe eenvoudig als niet vrij mijn programma ziet er nu. 657 01:14:31,280 --> 01:14:33,930 Want het doet wat het zegt, ik heb geabstraheerd 658 01:14:33,930 --> 01:14:37,640 weg wat er in die black box. het gebeurt hier een paarse doos, 659 01:14:37,640 --> 01:14:41,430 maar ik heb weg geblokkeerd wat erin zit omdat ik niet schelen hoe het werkt. 660 01:14:41,430 --> 01:14:43,650 Ik geef nu net dat het werkt. 661 01:14:43,650 --> 01:14:46,375 >> En inderdaad, in probleem nulstellen dit precies 662 01:14:46,375 --> 01:14:49,250 de aard van de gelaagdheid van ideeën die je zult hebben de mogelijkheid om te verkennen. 663 01:14:49,250 --> 01:14:53,510 Het is precies de kans om probleemoplossende technieken toe te passen, 664 01:14:53,510 --> 01:14:55,550 wat is waarschijnlijk een onbekende omgeving. 665 01:14:55,550 --> 01:14:57,890 En of je hebt niet geprogrammeerd voor of eerder geprogrammeerde, 666 01:14:57,890 --> 01:14:59,500 je zult zien dat er een beetje iets 667 01:14:59,500 --> 01:15:00,874 in deze omgeving voor iedereen. 668 01:15:00,874 --> 01:15:02,770 En met een probleem te stellen een in een week tijd, 669 01:15:02,770 --> 01:15:06,630 we zullen worden overgebracht naar focussen op een hoger niveau taal genaamd 670 01:15:06,630 --> 01:15:09,290 C-- of liever een lager level taal genaamd 671 01:15:09,290 --> 01:15:11,347 C-- dat is nog meer krachtige, hoewel het 672 01:15:11,347 --> 01:15:12,930 een beetje meer cryptisch op het eerste gezicht. 673 01:15:12,930 --> 01:15:16,740 >> En zul je beseffen per vandaag TL: DR, dat dit probleem ligt een kortere 674 01:15:16,740 --> 01:15:19,880 venster van de tijd dan de toekomstige, gewoon omdat je het vrij zou moeten vinden 675 01:15:19,880 --> 01:15:20,420 beschikbaar. 676 01:15:20,420 --> 01:15:22,211 En geen zorgen te maken als voegt u de klas laat. 677 01:15:22,211 --> 01:15:23,920 We pakken dat duurde niet lang. 678 01:15:23,920 --> 01:15:28,480 En voordat we verdagen voor cake, laten we eindigen met slechts twee minuten blik 679 01:15:28,480 --> 01:15:30,500 naar wat je te wachten staat hier in CS50. 680 01:15:30,500 --> 01:15:40,950 681 01:15:40,950 --> 01:17:20,803 [Muziek] 682 01:17:20,803 --> 01:17:21,302 Okee. 683 01:17:21,302 --> 01:17:22,690 Dat is het voor CS50. 684 01:17:22,690 --> 01:17:23,650 We zullen je gauw zien. 685 01:17:23,650 --> 01:17:25,526 Cake wordt nu bediend. 686 01:17:25,526 --> 01:17:28,998 687 01:17:28,998 --> 01:18:14,267 [Muziek] 688 01:18:14,267 --> 01:18:16,350 SPEAKER 17: Heb je gehoord van een sabbatical, Chief? 689 01:18:16,350 --> 01:18:29,490 690 01:18:29,490 --> 01:18:31,920 SPEAKER 18: Misschien is er meer onder de motorkap. 691 01:18:31,920 --> 01:18:38,279