1 00:00:00,000 --> 00:00:03,440 >> [Musikk spilles] 2 00:00:03,440 --> 00:01:57,217 3 00:01:57,217 --> 00:02:00,710 >> [APPLAUSE] 4 00:02:00,710 --> 00:02:05,700 5 00:02:05,700 --> 00:02:09,669 >> DAVID J. MALAN: Dette er CS50, Harvard University innledning 6 00:02:09,669 --> 00:02:12,370 til den intellektuelle foretak av informatikk 7 00:02:12,370 --> 00:02:14,180 og kunsten programmering. 8 00:02:14,180 --> 00:02:17,530 Nå hvis du er blant dem som hvert år sitter her 9 00:02:17,530 --> 00:02:21,450 med litt nerver i tankene dine, slik at du ikke tror du hører hjemme her, 10 00:02:21,450 --> 00:02:24,270 du tror at de fleste noen sitter rundt deg 11 00:02:24,270 --> 00:02:27,730 vet langt mer enn deg, er faktisk mer komfortable enn deg ved datamaskinen 12 00:02:27,730 --> 00:02:30,430 vitenskap eller datamaskiner mer generelt, skjønner 13 00:02:30,430 --> 00:02:36,140 at 78% av studentene som nå ta CS50 har ingen tidligere erfaring. 14 00:02:36,140 --> 00:02:39,570 >> Faktisk er det 100 punkter der på displayet, 78 hvorav 15 00:02:39,570 --> 00:02:43,540 er solide grønt, som betyr at du, Hvis du er blant den demografiske, 16 00:02:43,540 --> 00:02:46,420 er i veldig godt selskap her på ut. 17 00:02:46,420 --> 00:02:50,320 Og hvis du er i stedet blant 22% av CS50 studenter som gjør faktisk 18 00:02:50,320 --> 00:02:53,920 har tidligere erfaring, enten i videregående skole eller et annet program, 19 00:02:53,920 --> 00:02:56,430 innser at du også vil bli utfordret i kurset. 20 00:02:56,430 --> 00:02:59,930 >> Ikke bare har vi forskjellige spor for studenter mindre komfortable og mer 21 00:02:59,930 --> 00:03:03,789 komfortabel både i seksjoner, vi også har såkalte hacker-utgaver 22 00:03:03,789 --> 00:03:06,080 av de fleste oppgavesett som vil utfordre de studentene 23 00:03:06,080 --> 00:03:09,650 med at ytterligere erfaring å utforske lignende materiale 24 00:03:09,650 --> 00:03:12,140 men fra en mer sofistikert perspektiv. 25 00:03:12,140 --> 00:03:13,900 >> Men hva er informatikk? 26 00:03:13,900 --> 00:03:17,750 Vel, til slutt, hva kommer til å Uansett når du utforsker dette feltet er ikke 27 00:03:17,750 --> 00:03:20,500 så mye hvor du ender opp forhold til klassekameratene dine, 28 00:03:20,500 --> 00:03:25,350 men hvor du selv ende opp i uke 12 versus hvor du begynne her 29 00:03:25,350 --> 00:03:26,720 i uke null. 30 00:03:26,720 --> 00:03:31,850 Nå datamaskin science-- vel, la oss kaller det vitenskapen om computation-- 31 00:03:31,850 --> 00:03:35,910 hvor beregningen er egentlig bare en fancy måte å si, tar noen innspill, 32 00:03:35,910 --> 00:03:39,460 produsere noen utgang, og gjøre det ved å kjøre algoritmer, 33 00:03:39,460 --> 00:03:43,700 sett med instruksjoner for å løse noen problem på disse innganger 34 00:03:43,700 --> 00:03:48,460 for å produsere en utgang eller løsning der du er interessert. 35 00:03:48,460 --> 00:03:51,310 >> Så vi har nylig hatt anledning til å reise ut 36 00:03:51,310 --> 00:03:53,170 til California for å møte med en alumna. 37 00:03:53,170 --> 00:03:54,650 Hennes navn er Susan Wojcicki. 38 00:03:54,650 --> 00:03:57,190 Og hun vil gjerne snakke til deg her på video 39 00:03:57,190 --> 00:04:01,690 å vitne til hvor aktuelt med bare en smak av datamaskin 40 00:04:01,690 --> 00:04:03,770 vitenskap ved innføringsnivå kan være. 41 00:04:03,770 --> 00:04:06,870 Selv om du ikke går på å forfølge informatikk som et felt, 42 00:04:06,870 --> 00:04:09,330 eller til og med engineering, STEM eller mer generelt, 43 00:04:09,330 --> 00:04:12,360 du vil se, faktisk, hvordan en bestemt Selvfølgelig så påvirket hennes liv. 44 00:04:12,360 --> 00:04:16,630 Og hun bare tok det når hun var en senior her ved Harvard College. 45 00:04:16,630 --> 00:04:19,482 >> Hvis vi kunne dempe lysene for Susan. 46 00:04:19,482 --> 00:04:20,690 SUSAN Wójcicki: Hei, verden. 47 00:04:20,690 --> 00:04:22,100 Jeg er Susan Wojcicki. 48 00:04:22,100 --> 00:04:24,110 Jeg er administrerende direktør i YouTube. 49 00:04:24,110 --> 00:04:29,150 Og jeg tok CS50 da jeg var senior på Harvard i 1990. 50 00:04:29,150 --> 00:04:31,220 Jeg var faktisk en historie og litteratur major. 51 00:04:31,220 --> 00:04:36,760 >> Og min junior sommer, Jeg innså at jeg kanskje 52 00:04:36,760 --> 00:04:39,060 ønsket å lære noe om datamaskiner. 53 00:04:39,060 --> 00:04:40,930 Og så kom jeg tilbake. 54 00:04:40,930 --> 00:04:42,500 Jeg tok CS50. 55 00:04:42,500 --> 00:04:46,940 Det var vanskelig, men det var mest fantastiske klassen jeg tok. 56 00:04:46,940 --> 00:04:49,630 >> Det forandret hvordan jeg tenker på alt. 57 00:04:49,630 --> 00:04:55,810 Og da jeg ble uteksaminert fra Harvard i 1990, gikk jeg til Silicon Valley. 58 00:04:55,810 --> 00:04:57,140 Og jeg fikk en jobb. 59 00:04:57,140 --> 00:05:00,150 Og jeg har jobbet i tech siden den gang. 60 00:05:00,150 --> 00:05:02,650 DAVID J. MALAN: Nå hva Susan ikke nevner i denne videoen, 61 00:05:02,650 --> 00:05:05,340 at det var faktisk i hennes garasje som Google selv var 62 00:05:05,340 --> 00:05:07,420 grunnlagt av Larry og Sergey. 63 00:05:07,420 --> 00:05:11,169 >> Nå også vi nådde ut til våre venner på code.org, en organisasjon som 64 00:05:11,169 --> 00:05:13,460 løpet av det siste året har vært å få folk spesielt 65 00:05:13,460 --> 00:05:16,520 begeistret informatikk og programmering, spesielt. 66 00:05:16,520 --> 00:05:20,590 Men det er verdt å merke seg at programmering er ikke informatikk per se. 67 00:05:20,590 --> 00:05:22,090 Informatikk er ikke programmering. 68 00:05:22,090 --> 00:05:24,560 Snarere programmering er bare en tool-- som dere alle 69 00:05:24,560 --> 00:05:27,510 vil være alt for godt kjent av semesters end-- 70 00:05:27,510 --> 00:05:30,650 slik at du kan bruke ikke bare til fremtidige kurs i CS 71 00:05:30,650 --> 00:05:33,670 men til uansett felt hvorfra du kommer, i humaniora, 72 00:05:33,670 --> 00:05:36,090 samfunnsfag, naturlig vitenskap, eller lignende. 73 00:05:36,090 --> 00:05:39,740 >> Faktisk, la noen andre alumni og deres kolleger 74 00:05:39,740 --> 00:05:43,400 å snakke med anvendbarhet av feltet som venter. 75 00:05:43,400 --> 00:05:52,340 76 00:05:52,340 --> 00:05:57,350 >> Bill Gates: Jeg var 13 da jeg først fikk tilgang til en datamaskin. 77 00:05:57,350 --> 00:06:00,485 >> JACK DORSEY: Mine foreldre kjøpte meg en Macintosh i 1984 78 00:06:00,485 --> 00:06:01,640 da jeg var åtte år gammel. 79 00:06:01,640 --> 00:06:02,990 >> Mark Zuckerberg: Jeg var i sjette klasse. 80 00:06:02,990 --> 00:06:04,670 >> SPEAKER 1: Jeg lærte å kode i college. 81 00:06:04,670 --> 00:06:09,080 >> Ruchi Sanghvi: Freshman år, først semester, Intro til Computer Science. 82 00:06:09,080 --> 00:06:11,850 >> Bill Gates: Jeg skrev et program som spilte tic-tac-toe. 83 00:06:11,850 --> 00:06:14,100 >> DREW HOUSTON: Jeg tror det var ganske beskjeden begynnelse. 84 00:06:14,100 --> 00:06:16,370 Jeg tror det første programmet Jeg skrev spurte ting som, 85 00:06:16,370 --> 00:06:17,820 hva er din favoritt farge? 86 00:06:17,820 --> 00:06:18,696 Eller hvor gammel er du? 87 00:06:18,696 --> 00:06:21,070 ELENA SILENOK: jeg først lærte hvordan å lage en grønn sirkel 88 00:06:21,070 --> 00:06:23,670 og en rød firkant på skjermen. 89 00:06:23,670 --> 00:06:25,420 Gabe NEWELL: Den første gang jeg faktisk hadde 90 00:06:25,420 --> 00:06:27,360 noe komme opp og si hei, verden. 91 00:06:27,360 --> 00:06:29,710 Og jeg gjorde en datamaskin gjør det. 92 00:06:29,710 --> 00:06:30,850 Det var bare utrolig. 93 00:06:30,850 --> 00:06:33,224 >> Mark Zuckerberg: Lære til programmet starter ikke 94 00:06:33,224 --> 00:06:35,450 som ønsker å lære alle informatikk 95 00:06:35,450 --> 00:06:38,630 eller prøver å mestre dette disiplin eller noe sånt. 96 00:06:38,630 --> 00:06:41,591 Det startet bare av fordi jeg ønsket å gjøre dette en enkel ting. 97 00:06:41,591 --> 00:06:44,340 Jeg ønsket å gjøre noe som var moro for meg selv og mine søstre. 98 00:06:44,340 --> 00:06:46,399 >> Og jeg skrev dette lille programmet. 99 00:06:46,399 --> 00:06:48,440 Og så i utgangspunktet bare lagt til litt til det. 100 00:06:48,440 --> 00:06:49,930 Og så når jeg trengte å lære noe nytt, 101 00:06:49,930 --> 00:06:52,210 Jeg kikket opp, enten i en bok eller på internett, 102 00:06:52,210 --> 00:06:53,240 og deretter lagt litt til det. 103 00:06:53,240 --> 00:06:56,300 >> DREW HOUSTON: Det er egentlig ikke ulikt spille et instrument eller noe 104 00:06:56,300 --> 00:07:00,007 eller spille en sport. 105 00:07:00,007 --> 00:07:01,090 DAVID J. MALAN: All right. 106 00:07:01,090 --> 00:07:04,120 Så la oss nå faktisk dykke i litt dypere. 107 00:07:04,120 --> 00:07:07,430 Hva er disse innganger og utganger at vi snakker om her? 108 00:07:07,430 --> 00:07:09,110 >> Så hva med noe enkelt? 109 00:07:09,110 --> 00:07:12,120 Du sikkert vet, selv om du har ingen kjennskap til informatikk 110 00:07:12,120 --> 00:07:16,570 overhodet, at datamaskiner eller annen måte bruke og forstår bare nuller og enere. 111 00:07:16,570 --> 00:07:20,500 Men hvordan kan det muligens bli gitt hvordan mye dagens stasjonære og bærbare datamaskiner alike 112 00:07:20,500 --> 00:07:21,280 kan gjøre? 113 00:07:21,280 --> 00:07:24,310 >> DNA av dagen, den eneste alfabetet at de forstår 114 00:07:24,310 --> 00:07:26,410 er en null eller en. 115 00:07:26,410 --> 00:07:27,470 Vel, tenk på dette. 116 00:07:27,470 --> 00:07:30,840 Vi, mennesker, har en tendens til å bruke desimalsystemet. "Desember" som betyr ti. 117 00:07:30,840 --> 00:07:33,970 Og det er 10 fordi vi har 10 sifre, 0 til ni. 118 00:07:33,970 --> 00:07:36,180 >> Nå datamaskiner, derimot, pleier å bruke binær. 119 00:07:36,180 --> 00:07:37,270 "Bi", som betyr to. 120 00:07:37,270 --> 00:07:39,560 Så de har en tendens til å bruke bare null og én. 121 00:07:39,560 --> 00:07:42,680 Men det viser seg at selv bare med nuller og enere, at 122 00:07:42,680 --> 00:07:45,900 er en tilstrekkelig stor alfabetet som å representere mest 123 00:07:45,900 --> 00:07:48,490 alt av data du vil, enten det er et tall, 124 00:07:48,490 --> 00:07:52,100 enten det er et brev, enten det er en grafisk eller video på skjermen. 125 00:07:52,100 --> 00:07:57,140 >> Tenk, for eksempel, hvordan vi mennesker vanligvis tolke dette nummeret her. 126 00:07:57,140 --> 00:08:00,010 Dette er bare tre sifre, en, to, tre. 127 00:08:00,010 --> 00:08:04,570 Men vi vet dette nummeret medfødt nå som 123. 128 00:08:04,570 --> 00:08:05,510 Men hvorfor er det? 129 00:08:05,510 --> 00:08:07,570 >> Vel, hvis du tenker tilbake å kanskje klasse på skolen, 130 00:08:07,570 --> 00:08:11,700 du sannsynligvis ble lært opp til å tenke på disse tallene som å være i kolonner, 131 00:08:11,700 --> 00:08:14,700 hvor den ene er i hundrevis sted, de to er i tiere sted, 132 00:08:14,700 --> 00:08:16,360 og tre er i seg sted. 133 00:08:16,360 --> 00:08:17,790 Hvorfor er det faktisk nyttig? 134 00:08:17,790 --> 00:08:19,665 Vel, tenk om super enkel aritmetikk 135 00:08:19,665 --> 00:08:22,219 at vi alle har vært gjort i mange år nå. 136 00:08:22,219 --> 00:08:24,510 Effektivt, hvis du har en en i hundrevis sted, 137 00:08:24,510 --> 00:08:29,610 du gjør den rask matematikk 100 ganger en pluss 10 ganger 2-- 138 00:08:29,610 --> 00:08:33,059 fordi to er i titalls sted-- pluss 1 ganger 3-- 139 00:08:33,059 --> 00:08:34,830 fordi tre er i seg sted. 140 00:08:34,830 --> 00:08:37,039 Så, selvfølgelig, hvis vi faktisk multiplisere dette ut, 141 00:08:37,039 --> 00:08:39,600 hva vi egentlig representerer med denne pattern-- ett 142 00:08:39,600 --> 00:08:46,150 to three-- er 100 pluss 20 pluss 3, noe som selvfølgelig er 123. 143 00:08:46,150 --> 00:08:51,130 >> Nå binære, og datamaskiner virkelig, fundamentalt snakker samme språk 144 00:08:51,130 --> 00:08:51,680 at vi gjør. 145 00:08:51,680 --> 00:08:53,400 De har bare en mindre alfabetet. 146 00:08:53,400 --> 00:08:57,100 Så datamaskiner har bare nuller og de på sin disposisjon. 147 00:08:57,100 --> 00:09:02,500 Så mens vi mennesker har i hovedsak potenser av 10 i hver av disse places-- 148 00:09:02,500 --> 00:09:06,810 10 til null, 10 til en, ten til de to, noe som gir deg 110 og 100 149 00:09:06,810 --> 00:09:07,700 respektivt. 150 00:09:07,700 --> 00:09:12,140 >> Fordi datamaskiner bare ha to verdier de kan forstå, null og én, 151 00:09:12,140 --> 00:09:16,600 de må bruke forskjellige verdier i disse kolonnene, en, to, fire. 152 00:09:16,600 --> 00:09:20,480 Og hvis vi holdt det gående, åtte, 16, 32, 64, og så videre. 153 00:09:20,480 --> 00:09:24,220 Men mønsteret og den mentalitet er nøyaktig den samme. 154 00:09:24,220 --> 00:09:27,340 >> Så ved denne logikken, noen, hvordan ville Jeg går om representerer tallet 155 00:09:27,340 --> 00:09:28,530 en i binær? 156 00:09:28,530 --> 00:09:33,080 Hvis du har aldri engang tenkt på dette før, hva er din gut si? 157 00:09:33,080 --> 00:09:33,777 >> PUBLIKUM: One. 158 00:09:33,777 --> 00:09:34,610 DAVID J. MALAN: One. 159 00:09:34,610 --> 00:09:35,660 Nettopp. 160 00:09:35,660 --> 00:09:38,100 Vi trenger bare en en i de plass fordi nuller 161 00:09:38,100 --> 00:09:40,610 nok til å gi oss verken en fire eller to. 162 00:09:40,610 --> 00:09:42,440 Så en ganger en lik en. 163 00:09:42,440 --> 00:09:43,940 Nå ting blir litt interessant. 164 00:09:43,940 --> 00:09:46,830 Hvis jeg ønsker å representere i binære antall to-- men, 165 00:09:46,830 --> 00:09:49,790 igjen, selv om du aldri har snakket dette språket før, 166 00:09:49,790 --> 00:09:54,680 hvordan gjør vi representerer i binær Verdien vi mennesker kjenner som to? 167 00:09:54,680 --> 00:09:55,570 Zero en null. 168 00:09:55,570 --> 00:09:57,620 Bare sette den i kolonne som du vil ha det. 169 00:09:57,620 --> 00:09:59,560 >> Nå blir det ganske lett nok nå. 170 00:09:59,560 --> 00:10:02,950 Så hvis jeg ønsker å representere three-- det ikke finnes noen tre-kolonne. 171 00:10:02,950 --> 00:10:06,770 Så, igjen, jeg kan nå legge disse verdiene sammen ved å sette en en her. 172 00:10:06,770 --> 00:10:10,320 Så 2 ganger 1 pluss 1 Tiden 1 er, selvfølgelig, 3. 173 00:10:10,320 --> 00:10:13,480 >> Nå ting blir litt moro i at de nå blitt nuller. 174 00:10:13,480 --> 00:10:15,480 Og for å representere fire, får jeg denne. 175 00:10:15,480 --> 00:10:19,310 Og hvis vi øke sakte her-- som ville være fem. 176 00:10:19,310 --> 00:10:20,700 Dette ville være seks. 177 00:10:20,700 --> 00:10:22,100 Dette ville være syv. 178 00:10:22,100 --> 00:10:25,310 >> Men nå synes jeg å ha kjører inn i et problem. 179 00:10:25,310 --> 00:10:30,520 Hvordan kan jeg gå om å representere eight-- ville være den neste verdien. 180 00:10:30,520 --> 00:10:31,900 Ja, så vi trenger en ny bit. 181 00:10:31,900 --> 00:10:33,899 Og, ja, hvis du har hørt dette uttrykket før, 182 00:10:33,899 --> 00:10:37,380 biter, det er bare en forkortelse for binære siffer, null eller én. 183 00:10:37,380 --> 00:10:41,520 >> Og så jeg tilfeldigvis skal representere bare tre slike biter her. 184 00:10:41,520 --> 00:10:44,900 Men hvis jeg hadde en måte å lagre ikke tre forskjellige biter, men fire, 185 00:10:44,900 --> 00:10:47,250 sikkert jeg kunne representere åtte, og deretter ni, og deretter 186 00:10:47,250 --> 00:10:49,400 10, og enda høyere og høyere. 187 00:10:49,400 --> 00:10:52,140 >> Men det så kaller inn spørsmålet hvordan vi kan 188 00:10:52,140 --> 00:10:54,540 gå om å representere disse ting i første omgang. 189 00:10:54,540 --> 00:10:56,950 Det er én ting å trekke dem opp her på et lysbilde, 190 00:10:56,950 --> 00:11:00,660 men hvordan representerer du dem hvis du er en mekanisk innretning? 191 00:11:00,660 --> 00:11:04,390 Hva er en datamaskin gjør for å representerer de innganger og utganger som 192 00:11:04,390 --> 00:11:09,020 fundamentalt definere beregning på slutten av dagen? 193 00:11:09,020 --> 00:11:12,090 >> Vel, hva om noe super enkelt som dette? 194 00:11:12,090 --> 00:11:13,200 Det er bare en lyspære. 195 00:11:13,200 --> 00:11:15,460 Og jeg kan utløse dette lyspære å gå på 196 00:11:15,460 --> 00:11:17,920 ved å slå noen elektrisitet på og som gjør at elektroner 197 00:11:17,920 --> 00:11:22,585 å strømme gjennom, som endrer dens stat eller dens verdi, så å si. 198 00:11:22,585 --> 00:11:24,460 For eksempel er denne en gammel skole bordlampe 199 00:11:24,460 --> 00:11:27,250 her med et slikt lyspæren inne i den. 200 00:11:27,250 --> 00:11:29,940 Og akkurat nå er det ikke virkelig gjør noe nyttig. 201 00:11:29,940 --> 00:11:32,680 Men så snart jeg kobler den inn i en stikkontakt 202 00:11:32,680 --> 00:11:36,390 og deretter bruke denne switch-- eller Vi kan også kalle det en transistor 203 00:11:36,390 --> 00:11:39,970 eller tenke på det som such-- Jeg kan nå representere enten 204 00:11:39,970 --> 00:11:44,120 denne verdien, hvor lyspæren er åpenbart av, eller denne verdien. 205 00:11:44,120 --> 00:11:46,060 Denne verdien eller denne verdien. 206 00:11:46,060 --> 00:11:47,520 Denne verdi og så videre. 207 00:11:47,520 --> 00:11:51,220 >> Så innsiden av en datamaskin, formodentlig er mye mindre biter av maskinvare, 208 00:11:51,220 --> 00:11:52,970 men at på slutten av dagen rett og slett har 209 00:11:52,970 --> 00:11:55,360 å bruke electricity-- kanskje fange det-- 210 00:11:55,360 --> 00:11:59,730 og deretter enten holde noe på eller holde noe av. 211 00:11:59,730 --> 00:12:02,021 Selvfølgelig, dette er ikke spesielt interessant å gjøre 212 00:12:02,021 --> 00:12:03,270 med bare en enkelt lyspære. 213 00:12:03,270 --> 00:12:06,726 >> Faktisk, hvor høyt kan jeg telle på binær med denne bordlampe her? 214 00:12:06,726 --> 00:12:07,420 >> PUBLIKUM: One. 215 00:12:07,420 --> 00:12:08,545 >> DAVID J. MALAN: One, ikke sant? 216 00:12:08,545 --> 00:12:11,020 Jeg trenger mer skrivebord lamper hvis jeg faktisk ønsker å telle høyere. 217 00:12:11,020 --> 00:12:12,210 Men vi kan gjøre det bedre enn det. 218 00:12:12,210 --> 00:12:14,460 Fordi lyspærer som vi har satt i disse tingene 219 00:12:14,460 --> 00:12:17,730 er faktisk mer avansert lyspærer enn fjoråret ville tillate. 220 00:12:17,730 --> 00:12:20,310 Og de er faktisk nettverks lyspærer. 221 00:12:20,310 --> 00:12:23,160 Og bunter av selskaper gjøre disse tingene i disse dager. 222 00:12:23,160 --> 00:12:25,190 >> Men det viser seg at dette spesielt 223 00:12:25,190 --> 00:12:27,680 kommer med en funksjon der du kan endre sine farger. 224 00:12:27,680 --> 00:12:30,810 Så for eksempel, hvis du prydet din hybel 225 00:12:30,810 --> 00:12:33,200 med noen av disse lys pærer, avhengig av humøret, 226 00:12:33,200 --> 00:12:35,366 avhengig av hvem som kommer inn, avhengig av været, 227 00:12:35,366 --> 00:12:37,360 avhengig av tidspunktet av dagen, kan du faktisk 228 00:12:37,360 --> 00:12:40,300 endre fargene på pærene på rommet ditt. 229 00:12:40,300 --> 00:12:43,740 Og det er fordi disse lys pærer og andre liker det har hva som er 230 00:12:43,740 --> 00:12:48,010 kalt en API, et program programmeringsgrensesnitt, som 231 00:12:48,010 --> 00:12:50,920 er et tema som du vil være godt kjent med ved semester slutt. 232 00:12:50,920 --> 00:12:53,710 >> Og dette er bare en fancy, kryptiske måte å si: 233 00:12:53,710 --> 00:12:57,570 du kan programmere disse lys pærer å gjøre din budgivning. 234 00:12:57,570 --> 00:13:00,360 Du kan sende dem meldinger akkurat som deg, et menneske, 235 00:13:00,360 --> 00:13:03,640 kan sende en melding til en webserver sier, gi meg dagens nyheter 236 00:13:03,640 --> 00:13:05,110 eller gi meg e-posten min. 237 00:13:05,110 --> 00:13:08,010 >> Du kan sende mer uforståelige meldinger til disse lyspærene 238 00:13:08,010 --> 00:13:09,700 å si, slå på og slå av. 239 00:13:09,700 --> 00:13:11,370 Men det er ikke alle som interessant. 240 00:13:11,370 --> 00:13:14,280 Du kan si, slå på rødt, slå på grønt, slå på blå, 241 00:13:14,280 --> 00:13:15,990 alle med samme lyspære. 242 00:13:15,990 --> 00:13:20,990 Og du kan selv, med litt mer savvy, sier, slå deg til blå 243 00:13:20,990 --> 00:13:24,710 når det er en dyster dag utsiden, for eksempel. 244 00:13:24,710 --> 00:13:27,910 Det kan faktisk lappe inn en vær API og finne ut 245 00:13:27,910 --> 00:13:32,260 hva været er, eller den tiden av dagen, eller andre slike triggere. 246 00:13:32,260 --> 00:13:35,550 >> Så, faktisk, to av CS50 egne ansatte, 247 00:13:35,550 --> 00:13:38,827 Dan Bradley og Ansel Duff her, ber vi anskaffet 248 00:13:38,827 --> 00:13:40,410 oss en hel haug av disse lyspærene. 249 00:13:40,410 --> 00:13:42,910 Og de bygget CS50 er første gang binære pærer, 250 00:13:42,910 --> 00:13:46,850 hvor vi har representert her-- med disse leken liten magnets-- 251 00:13:46,850 --> 00:13:49,780 de ulike plassholdere vi hentydet til bare litt siden. 252 00:13:49,780 --> 00:13:52,572 >> Så måte over her er den de sted, to, fire. 253 00:13:52,572 --> 00:13:54,030 Og vi fikk ikke se høyere enn det. 254 00:13:54,030 --> 00:13:55,613 Men, selvfølgelig, de er krefter to. 255 00:13:55,613 --> 00:13:59,490 Åtte, 16, 32, 64, og 128. 256 00:13:59,490 --> 00:14:03,320 Så hvis jeg nå ønsker å være litt mer avansert enn å bruke denne gamle skolen bryter, 257 00:14:03,320 --> 00:14:07,310 Jeg har her på denne iPad en super enkelt grensesnitt 258 00:14:07,310 --> 00:14:10,440 at Dan Bradley, en tidligere student og underviser nå stipendiat, 259 00:14:10,440 --> 00:14:13,510 programmerte ved hjelp av noen HTML og Javascript, som 260 00:14:13,510 --> 00:14:15,685 er markup og programmering språk hhv. 261 00:14:15,685 --> 00:14:17,560 Og du kan sikkert see-- selv i back-- 262 00:14:17,560 --> 00:14:21,670 det er et stort pluss og et stort minus, pluss en knapp for hver av disse pærene. 263 00:14:21,670 --> 00:14:25,740 Og hva dette kommer til å tillate meg å gjør er, for eksempel, klikker du på pluss 264 00:14:25,740 --> 00:14:28,250 og nå representerer, av Selvfølgelig, hvilket nummer? 265 00:14:28,250 --> 00:14:28,750 One. 266 00:14:28,750 --> 00:14:30,220 Og jeg kan treffe den igjen. 267 00:14:30,220 --> 00:14:31,480 To. 268 00:14:31,480 --> 00:14:32,800 Tre. 269 00:14:32,800 --> 00:14:33,950 Fire. 270 00:14:33,950 --> 00:14:35,200 Five. 271 00:14:35,200 --> 00:14:36,360 Seks. 272 00:14:36,360 --> 00:14:36,880 Seven. 273 00:14:36,880 --> 00:14:40,740 >> Og her nå får vi at rollover, men vi har en fjerde bit denne periode 274 00:14:40,740 --> 00:14:42,180 så nå har vi åtte. 275 00:14:42,180 --> 00:14:44,000 Slik at vi kunne gjøre dette for en stund. 276 00:14:44,000 --> 00:14:46,530 Faktisk, som en side, hvor høyt kan vi telle? 277 00:14:46,530 --> 00:14:48,318 Anyone? 278 00:14:48,318 --> 00:14:49,270 >> PUBLIKUM: 255. 279 00:14:49,270 --> 00:14:51,420 >> DAVID J. MALAN: 255, ikke sant? 280 00:14:51,420 --> 00:14:54,900 Ikke bekymre deg for mye om matematikk for nå, men det er en ganske anstendig antall. 281 00:14:54,900 --> 00:14:59,140 Men det er faktisk ikke bundet bare hvor mange biter av informasjon, 282 00:14:59,140 --> 00:15:01,760 som et brev, eller en grafisk at vi kunne representere. 283 00:15:01,760 --> 00:15:02,697 >> Men uansett for nå. 284 00:15:02,697 --> 00:15:04,530 Jeg kommer til å gå videre og slå dem av. 285 00:15:04,530 --> 00:15:09,670 Og hvis jeg kunne, ville jeg gjerne be om en frivillig, vår første volunteer-- 286 00:15:09,670 --> 00:15:11,342 oh, hello-- på scenen. 287 00:15:11,342 --> 00:15:14,050 Fangsten er at du må være komfortabel vises, som du tydelig 288 00:15:14,050 --> 00:15:17,421 er foran alle dine klassekamerater, så vel som på internett. 289 00:15:17,421 --> 00:15:20,420 Og la meg se litt utover the-- hva med her i hvit skjorte? 290 00:15:20,420 --> 00:15:20,920 Og hånden opp. 291 00:15:20,920 --> 00:15:22,071 Kom opp. 292 00:15:22,071 --> 00:15:22,820 Hva er ditt navn? 293 00:15:22,820 --> 00:15:23,760 >> PUBLIKUM: Jackie. 294 00:15:23,760 --> 00:15:24,718 >> DAVID J. MALAN: Jackie. 295 00:15:24,718 --> 00:15:25,820 Jackie, kom opp. 296 00:15:25,820 --> 00:15:29,820 Så hva det er også på denne iPad er en knapp som heter Game Mode. 297 00:15:29,820 --> 00:15:32,570 Og denne spillmodus er kommer til å tillate meg å legge inn 298 00:15:32,570 --> 00:15:35,780 på forhånd en bestemt desimal tall, tallene vi mennesker er 299 00:15:35,780 --> 00:15:36,760 kjent med. 300 00:15:36,760 --> 00:15:39,820 Og da vil du bli utfordret her for å bruke knappene 301 00:15:39,820 --> 00:15:42,140 på en for top-- hver av disse bulbs-- 302 00:15:42,140 --> 00:15:45,050 å faktisk finne ut mønsteret av lyspærer 303 00:15:45,050 --> 00:15:46,970 som representerer tallet i spørsmålet. 304 00:15:46,970 --> 00:15:47,790 >> Og jeg beklager, hva var navnet ditt igjen? 305 00:15:47,790 --> 00:15:48,250 >> PUBLIKUM: Jackie. 306 00:15:48,250 --> 00:15:48,620 >> DAVID J. MALAN: Jackie. 307 00:15:48,620 --> 00:15:48,920 Greit. 308 00:15:48,920 --> 00:15:49,740 Godt å møte deg. 309 00:15:49,740 --> 00:15:54,580 >> Så la meg gå videre og programmet i for verden å se nummer 15. 310 00:15:54,580 --> 00:15:56,360 Vi vil holde det lite på først her. 311 00:15:56,360 --> 00:15:58,240 Og jeg kommer til å gå inn i spillmodus. 312 00:15:58,240 --> 00:16:01,160 Og jeg kommer til å spesifisere, gi oss nummer 15. 313 00:16:01,160 --> 00:16:01,900 >> OK. 314 00:16:01,900 --> 00:16:05,510 Og nå med alle watching-- hvis du vil kanskje stå på denne måten, 315 00:16:05,510 --> 00:16:09,970 fordi det vil stille opp-- gå videre og veksle de åtte knappene langs toppen 316 00:16:09,970 --> 00:16:12,530 å slå pærene på eller av som det passer deg. 317 00:16:12,530 --> 00:16:13,530 >> PUBLIKUM: OK. 318 00:16:13,530 --> 00:16:17,720 >> DAVID J. MALAN: Og ingen juks ved å trykke pluss 15 ganger. 319 00:16:17,720 --> 00:16:19,275 Oh, vi kommer til å gjøre det. 320 00:16:19,275 --> 00:16:20,069 >> PUBLIKUM: Å, vent. 321 00:16:20,069 --> 00:16:20,610 Jeg er så lei meg. 322 00:16:20,610 --> 00:16:22,660 >> DAVID J. MALAN: Du kan også slå lyspærer på individuelt 323 00:16:22,660 --> 00:16:24,076 med hver av disse knappene på toppen. 324 00:16:24,076 --> 00:16:24,844 PUBLIKUM: Å, OK. 325 00:16:24,844 --> 00:16:27,429 Så det ville være like-- 326 00:16:27,429 --> 00:16:28,220 DAVID J. MALAN: OK. 327 00:16:28,220 --> 00:16:29,100 Så nå har vi åtte. 328 00:16:29,100 --> 00:16:31,280 Så la oss stoppe for publikum til å engasjere seg her. 329 00:16:31,280 --> 00:16:34,300 Hvilket nummer er Jackie tiden representerer? 330 00:16:34,300 --> 00:16:34,800 11. 331 00:16:34,800 --> 00:16:35,730 Så vi er nesten der. 332 00:16:35,730 --> 00:16:38,360 333 00:16:38,360 --> 00:16:39,630 Og utmerket. 334 00:16:39,630 --> 00:16:41,487 Så vi har vår første vinner. 335 00:16:41,487 --> 00:16:42,445 Gratulerer. 336 00:16:42,445 --> 00:16:48,200 >> Og vi trodde vi ville ha noen fantastiske giveaways. 337 00:16:48,200 --> 00:16:50,860 Hvis du ønsker å være en slik dorm rom her på campus, 338 00:16:50,860 --> 00:16:56,126 du kan selv ha et avsluttende prosjekt bruker nå denne API, takket være Jackie. 339 00:16:56,126 --> 00:16:57,050 Så now-- 340 00:16:57,050 --> 00:16:58,902 >> [APPLAUSE] 341 00:16:58,902 --> 00:17:01,690 342 00:17:01,690 --> 00:17:04,839 >> --Hvis vi kunne, ett mer for eksempel rundt av denne. 343 00:17:04,839 --> 00:17:07,690 Åh, nå alle ønsker noen lyspærer. 344 00:17:07,690 --> 00:17:11,790 For den såkalte hacker utgave, vi kommer til å trappe den opp en-- oh, 345 00:17:11,790 --> 00:17:12,770 yeah, uforpliktende. 346 00:17:12,770 --> 00:17:16,010 Jeg tror du kommer opp nå Hvis hånden din kommer ned. 347 00:17:16,010 --> 00:17:16,800 Hva er ditt navn? 348 00:17:16,800 --> 00:17:17,424 >> PUBLIKUM: Alex. 349 00:17:17,424 --> 00:17:19,440 DAVID J. MALAN: Alex, kom over her. 350 00:17:19,440 --> 00:17:26,190 Så for Alex, skal vi program i en litt større antall. 351 00:17:26,190 --> 00:17:27,790 Kanskje i orden. 352 00:17:27,790 --> 00:17:29,110 Tallet 50. 353 00:17:29,110 --> 00:17:29,744 >> PUBLIKUM: OK. 354 00:17:29,744 --> 00:17:31,660 DAVID J. MALAN: Men, som Jeg sa-- og du kan 355 00:17:31,660 --> 00:17:33,580 ønsker å stå her så at knappene linje opp 356 00:17:33,580 --> 00:17:37,115 som du forventer-- men jeg gjorde kaller dette hacker utgaven. 357 00:17:37,115 --> 00:17:47,125 So-- lykke til! 358 00:17:47,125 --> 00:17:48,416 >> [Latter] 359 00:17:48,416 --> 00:17:58,570 360 00:17:58,570 --> 00:18:02,050 >> Du vil være i stand til å snu dem av hvis du-- OK. 361 00:18:02,050 --> 00:18:02,880 Utmerket. 362 00:18:02,880 --> 00:18:03,675 Fantastisk. 363 00:18:03,675 --> 00:18:04,341 Gratulerer. 364 00:18:04,341 --> 00:18:08,730 >> [APPLAUSE] 365 00:18:08,730 --> 00:18:10,355 Jeg antar at jeg skal betale opp. 366 00:18:10,355 --> 00:18:11,830 Gratulerer til Alex også. 367 00:18:11,830 --> 00:18:12,330 OK. 368 00:18:12,330 --> 00:18:15,550 >> Så den ultimate takeaway her er forhåpentligvis, ærlig, 369 00:18:15,550 --> 00:18:18,109 den simplicity-- den enkelhet som 370 00:18:18,109 --> 00:18:20,650 du kan få noen fine lys pærer, tilsynelatende i [uhørbart]. 371 00:18:20,650 --> 00:18:23,000 Men de representerer, slutt, den samme ideene 372 00:18:23,000 --> 00:18:26,310 som vi mennesker er allerede altfor kjent. 373 00:18:26,310 --> 00:18:28,660 Så hva kanskje neste steg være i progresjon 374 00:18:28,660 --> 00:18:30,920 for å prøve å gjøre noe interessant med data 375 00:18:30,920 --> 00:18:34,950 og som representerer innganger som ikke bare tallene, men er kanskje bokstaver eller mer? 376 00:18:34,950 --> 00:18:37,820 >> Vel, det viser seg at datamaskinen verden, i mange år, 377 00:18:37,820 --> 00:18:43,300 bare vedtatt en vilkårlig, men en konsekvent standard som kart tall 378 00:18:43,300 --> 00:18:44,610 til bokstavene i alfabetet. 379 00:18:44,610 --> 00:18:47,120 For eksempel er her en utdrag fra denne kartleggingen. 380 00:18:47,120 --> 00:18:48,350 Det kalles Ascii. 381 00:18:48,350 --> 00:18:53,220 A-S-C-I-I. Og det er rett og slett en tabell som kart store bokstaver letters-- 382 00:18:53,220 --> 00:18:56,600 i dette case-- til desimaltall. 383 00:18:56,600 --> 00:18:57,890 >> Men hva er implikasjonen? 384 00:18:57,890 --> 00:19:01,090 Vel, hvis du faktisk ønsker å representere noe sånt som en e-post eller noe tekst 385 00:19:01,090 --> 00:19:03,310 på en nettside, du åpenbart ønsker å vise 386 00:19:03,310 --> 00:19:06,100 de humane bokstavene i alfabetet, ikke tall. 387 00:19:06,100 --> 00:19:09,140 Så, avhengig sammenheng med program 388 00:19:09,140 --> 00:19:12,600 at en bruker ved hjelp av, hvis det er en nettleser eller e-postklient, 389 00:19:12,600 --> 00:19:16,090 tallene kan sikkert være tolkes som bokstaver. 390 00:19:16,090 --> 00:19:20,290 Det vil si, mønstre kan lett bli tolket som bokstaver. 391 00:19:20,290 --> 00:19:24,700 >> Og så hva vi kan ha er bokstaven A vesen 392 00:19:24,700 --> 00:19:28,410 representert som 65, B blir representert som 66. 393 00:19:28,410 --> 00:19:30,900 Så hvis vi har en super kort ord, som hi, 394 00:19:30,900 --> 00:19:35,740 hva en datamaskin ville til slutt butikk i desimal, men virkelig i binær, 395 00:19:35,740 --> 00:19:40,070 ved hjelp av noen sekvens av biter, utnytte en bit av strøm på noen måte, 396 00:19:40,070 --> 00:19:44,010 ville være de to tallene 72 og 73. 397 00:19:44,010 --> 00:19:46,780 >> Men mønsteret av biter som representerer disse verdiene. 398 00:19:46,780 --> 00:19:49,820 Så disse da er hvordan vi kan representere våre innganger og utganger. 399 00:19:49,820 --> 00:19:52,630 Og det er nok å si, vi kan gjøre mer komplekse representasjoner 400 00:19:52,630 --> 00:19:56,450 slutt med ting som grafikk, videoer, musikk og mer 401 00:19:56,450 --> 00:19:58,190 som vi skal se senere dette begrepet. 402 00:19:58,190 --> 00:20:00,630 >> Slik at bare forlater deretter algoritmer, disse settene 403 00:20:00,630 --> 00:20:03,490 av instruksjoner som vi løse aktuelle problemer. 404 00:20:03,490 --> 00:20:05,820 Vi passerer i innganger til algoritmer. 405 00:20:05,820 --> 00:20:09,630 Og disse algoritmene produserer utganger, forhåpentligvis korrekte utganger 406 00:20:09,630 --> 00:20:14,160 og forhåpentligvis også, effektivt samlet utganger. 407 00:20:14,160 --> 00:20:16,890 Med andre ord, det er en ting å gjennomføre noe riktig. 408 00:20:16,890 --> 00:20:20,790 Det er en annen ting å implementere noe godt eller effektivt. 409 00:20:20,790 --> 00:20:23,690 >> For eksempel, en demonstrasjon at vi er glad i på kurset 410 00:20:23,690 --> 00:20:24,460 er dette en. 411 00:20:24,460 --> 00:20:26,345 Men disse tingene blir stadig vanskeligere å finne. 412 00:20:26,345 --> 00:20:28,930 Men dette er faktisk en gammel skole telefonboken, innsiden av som 413 00:20:28,930 --> 00:20:32,580 er 1000 pluss sider navn og telefonnummer. 414 00:20:32,580 --> 00:20:34,830 Og hvis jeg ønsket å slå opp noen i denne telefonboken, 415 00:20:34,830 --> 00:20:38,640 Jeg kunne rett og slett gjøre en veldig naiv algoritme. 416 00:20:38,640 --> 00:20:42,150 Jeg kunne åpne opp for den første siden, og Jeg kunne begynne å se etter, si, noen 417 00:20:42,150 --> 00:20:43,130 heter Mike Smith. 418 00:20:43,130 --> 00:20:46,160 Og hvis han ikke er på den første side, I videre til den andre, 419 00:20:46,160 --> 00:20:49,120 og deretter til den tredje, og deretter til det fjerde, og så videre, 420 00:20:49,120 --> 00:20:51,430 før jeg endelig finne Mike Smith. 421 00:20:51,430 --> 00:20:53,010 >> Nå er at algoritmen riktig? 422 00:20:53,010 --> 00:20:53,896 >> PUBLIKUM: Ja. 423 00:20:53,896 --> 00:20:54,248 >> DAVID J. MALAN: Yeah. 424 00:20:54,248 --> 00:20:56,039 Hvis han er der, vil jeg slutt finne ham. 425 00:20:56,039 --> 00:20:58,820 Men det er kanskje ikke så veldig effektiv, absolutt ikke fort, 426 00:20:58,820 --> 00:21:01,200 fordi, min Gud, hvorfor er jeg kaste bort tiden min flipping 427 00:21:01,200 --> 00:21:04,500 gjennom alle disse sidene når jeg kunne absolutt gjøre dette fysisk raskere? 428 00:21:04,500 --> 00:21:08,210 >> Vel, en liten optimalisering, så å snakke, kanskje ikke en side om gangen, 429 00:21:08,210 --> 00:21:11,610 men to, fire, seks, åtte, ti. 430 00:21:11,610 --> 00:21:12,725 Fortsatt er riktig? 431 00:21:12,725 --> 00:21:14,030 >> PUBLIKUM: Nei 432 00:21:14,030 --> 00:21:17,040 >> DAVID J. MALAN: Så nei hvis jeg for eksempel hopp over Mike Smith. 433 00:21:17,040 --> 00:21:20,530 Men så lenge jeg tilbake pedal én side, hvis jeg skyter over ham, 434 00:21:20,530 --> 00:21:25,240 kanskje vi kunne rette opp det kan ellers være en fikser. 435 00:21:25,240 --> 00:21:26,020 >> Men er det bedre? 436 00:21:26,020 --> 00:21:27,469 Er det raskere? 437 00:21:27,469 --> 00:21:28,010 Jeg mener, ja. 438 00:21:28,010 --> 00:21:30,950 Det er bokstavelig talt dobbelt så fort hvis jeg gjør to sider om gangen. 439 00:21:30,950 --> 00:21:35,720 Så hvis jeg hadde opprinnelig 1.000 sider, nå er jeg bare nødt til å snu 500 ganger, 440 00:21:35,720 --> 00:21:39,429 ikke fullt 1000 sider for å få potensielt i verste fall 441 00:21:39,429 --> 00:21:41,220 til enden av telefonen bok, der noen 442 00:21:41,220 --> 00:21:44,380 som Mike Smith eller noen med et senere navn kan faktisk være. 443 00:21:44,380 --> 00:21:46,540 >> Men selvfølgelig, vi mennesker absolutt ikke 444 00:21:46,540 --> 00:21:49,250 kommer til å gjøre det, sikkert ikke på dette punkt i våre liv. 445 00:21:49,250 --> 00:21:51,454 Hva er en rimelig menneskelig sannsynlig kommer til å gjøre? 446 00:21:51,454 --> 00:21:52,870 PUBLIKUM: Gå rett til The9 S-er. 447 00:21:52,870 --> 00:21:53,860 DAVID J. MALAN: Gå rett til S-er? 448 00:21:53,860 --> 00:21:55,563 Hvordan går jeg rett til S-er? 449 00:21:55,563 --> 00:21:57,342 >> PUBLIKUM: Rip den i to. 450 00:21:57,342 --> 00:21:59,050 DAVID J. MALAN: Vel, det er ingen merking. 451 00:21:59,050 --> 00:22:02,116 Så, ja, hvis det var faktisk en etikett eller en klebrig fane for S, 452 00:22:02,116 --> 00:22:03,240 vi skal hoppe rett i det. 453 00:22:03,240 --> 00:22:05,420 Men det er ganske ufarlige. 454 00:22:05,420 --> 00:22:08,480 Så det beste jeg kan gjøre er grovt til S delen eller kanskje grovt 455 00:22:08,480 --> 00:22:09,650 inn i midten. 456 00:22:09,650 --> 00:22:12,110 Men nøkkelen takeaway now-- og intuisjon 457 00:22:12,110 --> 00:22:14,430 at du har tatt for gis for årene probably-- 458 00:22:14,430 --> 00:22:17,103 er at hva gjør du nå vet om dette problemet? 459 00:22:17,103 --> 00:22:19,320 >> PUBLIKUM: [uhørbart] 460 00:22:19,320 --> 00:22:22,290 >> DAVID J. MALAN: Mike Smith er sikkert ikke i dette halvparten av problemet 461 00:22:22,290 --> 00:22:25,600 fordi Smith kommer etter midten som er omtrent det M-delen, 462 00:22:25,600 --> 00:22:26,510 det synes å være. 463 00:22:26,510 --> 00:22:30,340 Så som du kanskje har sett på Visitas, kan vi nå bokstavelig talt 464 00:22:30,340 --> 00:22:31,737 rive dette problemet i to. 465 00:22:31,737 --> 00:22:32,320 PUBLIKUM: Woo! 466 00:22:32,320 --> 00:22:33,690 DAVID J. MALAN: Det er blir lettere og lettere. 467 00:22:33,690 --> 00:22:34,666 [APPLAUSE] 468 00:22:34,666 --> 00:22:36,618 Der du går. 469 00:22:36,618 --> 00:22:39,060 [Latter] 470 00:22:39,060 --> 00:22:41,870 Og nå er jeg fundamentalt har det samme problem, 471 00:22:41,870 --> 00:22:43,866 men det er bokstavelig talt halvparten så stor. 472 00:22:43,866 --> 00:22:45,240 Jeg er fortsatt ute etter Mike Smith. 473 00:22:45,240 --> 00:22:47,950 Og jeg påstår at jeg kan fortsatt let for ham på samme måte, 474 00:22:47,950 --> 00:22:51,200 splitte problem i halv igjen, rive problemet på nytt 475 00:22:51,200 --> 00:22:54,140 i to, som nå etterlater meg med et problem en fjerdedel av størrelsen 476 00:22:54,140 --> 00:22:58,710 dramatisk kaste at halvparten borte, og gjenta denne prosessen igjen og igjen 477 00:22:58,710 --> 00:23:01,150 og igjen, skotter ned ved hvert punkt til å vise 478 00:23:01,150 --> 00:23:03,400 hvis Mike Smith er på den aktuelle siden. 479 00:23:03,400 --> 00:23:06,190 >> Nå hvis jeg gjør dette riktig, til slutt vil jeg finne meg selv 480 00:23:06,190 --> 00:23:11,085 med bare én side på som Mike Smith er om han er faktisk i telefonboken. 481 00:23:11,085 --> 00:23:13,510 Selvfølgelig, jeg kunne aldri ringe Mike igjen. 482 00:23:13,510 --> 00:23:18,800 Men poenget her er at hvis vi begynte med 1000 sider, min første algoritmen, 483 00:23:18,800 --> 00:23:21,620 snu siden, kanskje 1000 times-- definitivt mindre fordi det er 484 00:23:21,620 --> 00:23:26,430 S navn og ikke en Z navn, men som mange som 1000 sider potensielt. 485 00:23:26,430 --> 00:23:27,590 >> Second algoritme, bedre. 486 00:23:27,590 --> 00:23:28,480 500 sider. 487 00:23:28,480 --> 00:23:31,230 For det tredje algoritme, skjønt, hvor mange skritt ville det 488 00:23:31,230 --> 00:23:35,520 ta å dele opp en 1000 side telefonboken i halvparten sånn? 489 00:23:35,520 --> 00:23:37,000 10, gi eller ta. 490 00:23:37,000 --> 00:23:40,770 Så bare ved å bla gjennom den telefonboken, dykking og erobre, 491 00:23:40,770 --> 00:23:46,130 så å si 10 ganger, vil jeg gjøre min vei ned til bare én enkelt side. 492 00:23:46,130 --> 00:23:48,880 >> Og slik at vi kan fange opp denne intuisjon nå litt grafisk 493 00:23:48,880 --> 00:23:51,320 hvis du bare vurdere denne super enkel graf. 494 00:23:51,320 --> 00:23:55,470 Vi er på x-aksen, eller horisontal aksen, er størrelsen på problemet, 495 00:23:55,470 --> 00:23:57,100 antall sider i telefonboken. 496 00:23:57,100 --> 00:23:59,040 Og dataforskere generelt liker å kalle 497 00:23:59,040 --> 00:24:02,180 på størrelse av et problem n, der n er bare noen variabel som 498 00:24:02,180 --> 00:24:04,310 represents-- i dette case-- antall sider. 499 00:24:04,310 --> 00:24:07,412 >> Den vertikale, eller y-aksen, her er kommer til å være den tid til å løse, 500 00:24:07,412 --> 00:24:09,870 kanskje antall side svinger, kanskje antall sekunder 501 00:24:09,870 --> 00:24:11,960 eller minutter, uansett målenhet er. 502 00:24:11,960 --> 00:24:14,337 Og så denne røde linjen representerer den første algoritme, 503 00:24:14,337 --> 00:24:16,670 fordi det er en 12:59 Forholdet mellom antall 504 00:24:16,670 --> 00:24:18,880 sider og hvor lang tid det tar. 505 00:24:18,880 --> 00:24:22,240 >> Hvis Verizon dobler antall sidene i telefonboken neste år, 506 00:24:22,240 --> 00:24:24,590 min kjører tid-- den tiden som kreves for å utføre 507 00:24:24,590 --> 00:24:27,610 at første algorithm-- dobler i verste fall. 508 00:24:27,610 --> 00:24:30,690 Men den andre algoritme, hvor jeg sitter og blar med to, 509 00:24:30,690 --> 00:24:33,650 krever mindre tid til en gitt størrelse problem. 510 00:24:33,650 --> 00:24:36,090 Så hvis jeg har dette mange sider her-- varsel 511 00:24:36,090 --> 00:24:38,870 at den gule linjen antyder mindre tid til å løse. 512 00:24:38,870 --> 00:24:42,490 Og ja, den representerer, vi vil si, n over to. 513 00:24:42,490 --> 00:24:47,717 >> Men hva er formen på den tredje og endelig kurven kommer til å se ut? 514 00:24:47,717 --> 00:24:50,800 Ja, det er faktisk kommer til å look-- jeg vet ikke hva du skulle si. 515 00:24:50,800 --> 00:24:52,300 Men la oss se hva du skulle si. 516 00:24:52,300 --> 00:24:53,280 >> PUBLIKUM: Sånn. 517 00:24:53,280 --> 00:24:57,060 >> DAVID J. MALAN: Det kommer til å se ut dette, en logaritmisk slope-- exactly-- 518 00:24:57,060 --> 00:24:59,770 der du har denne merkelige skråningen. 519 00:24:59,770 --> 00:25:01,235 Det er ikke lenger en rett linje. 520 00:25:01,235 --> 00:25:05,000 Og hva er overbevisende om det er at selv om grafen er nå avskåret, 521 00:25:05,000 --> 00:25:07,790 du kan ekstrapolere i din oppmerksom på at det grønne linjen er ikke 522 00:25:07,790 --> 00:25:10,060 kommer til å øke i høyde så mye 523 00:25:10,060 --> 00:25:13,500 som du går videre ned den horisontale aksen. 524 00:25:13,500 --> 00:25:15,890 >> Faktisk, Verizon, for eksempel, kunne doble 525 00:25:15,890 --> 00:25:19,100 antall sider i telefonen bok fra i år til neste år 526 00:25:19,100 --> 00:25:22,140 fra 1000 til 2000 sider, men ingen big deal. 527 00:25:22,140 --> 00:25:24,960 Med denne tredje og siste, det er en intuitiv algoritme 528 00:25:24,960 --> 00:25:26,209 dele og erobre. 529 00:25:26,209 --> 00:25:29,000 Det kommer til å ta meg hvor mange flere trinn neste år å finne noen 530 00:25:29,000 --> 00:25:29,700 liker Mike Smith? 531 00:25:29,700 --> 00:25:30,560 >> PUBLIKUM: One. 532 00:25:30,560 --> 00:25:31,230 >> DAVID J. MALAN: Det er bare ett. 533 00:25:31,230 --> 00:25:34,430 Og de kan firedoble det, det er kommer til å ta meg bare to flere trinn 534 00:25:34,430 --> 00:25:35,210 og så videre. 535 00:25:35,210 --> 00:25:38,730 Og så dette er testament til bare hvordan noen forsiktig design 536 00:25:38,730 --> 00:25:42,437 og noen forståelse for hva dataen er kan gjøre enda bedre. 537 00:25:42,437 --> 00:25:44,270 Nå er vi utro en litt i betydningen 538 00:25:44,270 --> 00:25:46,350 at vi utnytte en antagelse. 539 00:25:46,350 --> 00:25:48,500 Hva er min antakelse om vår telefonboken 540 00:25:48,500 --> 00:25:52,720 som tillot meg å splitt og hersk i denne intuitive og fortsatt riktig måte? 541 00:25:52,720 --> 00:25:53,705 >> PUBLIKUM: [uhørbart] 542 00:25:53,705 --> 00:25:54,580 DAVID J. MALAN: Yeah. 543 00:25:54,580 --> 00:25:55,440 Så det ble bestilt. 544 00:25:55,440 --> 00:25:57,392 Det ble ordnet alfabetisk etter telefonboken selskapet. 545 00:25:57,392 --> 00:26:00,100 Hvis det var i tilfeldig rekkefølge, som ville være et helvete av en telefonboken, 546 00:26:00,100 --> 00:26:02,850 men det absolutt ikke ville egner seg til algoritmen 547 00:26:02,850 --> 00:26:05,950 Jeg brukte, fordi du ville aldri bare skje på tvers av Mike Smith 548 00:26:05,950 --> 00:26:09,210 Hvis du holdt å dele inn halvparten på den måten ved en tilfeldighet. 549 00:26:09,210 --> 00:26:12,060 >> Så la oss nå formalisere hva er klart intuitivt. 550 00:26:12,060 --> 00:26:13,950 Så noe som kalles pseudokode er hvor vi vil 551 00:26:13,950 --> 00:26:15,780 begynner noen av våre innledende problemer. 552 00:26:15,780 --> 00:26:20,410 Og dette er en generisk måte å beskrive en algoritme eller et datamaskinprogram, 553 00:26:20,410 --> 00:26:24,150 ikke bruker C eller C ++, eller Java, eller noen bestemt språk, 554 00:26:24,150 --> 00:26:27,430 men bare bruker engelsk, med som noe menneske kan bli kjent. 555 00:26:27,430 --> 00:26:31,220 >> Og vi kan skrive pseudo for dette problem på følgende måte. 556 00:26:31,220 --> 00:26:33,520 Trinn en, plukke opp telefonboken. 557 00:26:33,520 --> 00:26:35,840 Trinn to, åpen for midten av telefonboken. 558 00:26:35,840 --> 00:26:37,730 Trinn tre, se på navnene. 559 00:26:37,730 --> 00:26:40,630 Trinn fire, hvis Smith er blant names-- 560 00:26:40,630 --> 00:26:42,960 >> Og nå er dette en interessant konstruksjon. 561 00:26:42,960 --> 00:26:44,290 Det er et beslutningspunkt. 562 00:26:44,290 --> 00:26:47,920 Det er et veiskille, hvis du vil, en gren, så å si. 563 00:26:47,920 --> 00:26:50,810 Så jeg kommer til å rykke inn bare ved konvensjonen step-- 564 00:26:50,810 --> 00:26:53,950 ikke five-- som er å si, jeg skal ringe Mike. 565 00:26:53,950 --> 00:26:57,290 Så dette innrykk, helt vilkårlig menneskelig konvensjonen, er men det 566 00:26:57,290 --> 00:27:01,160 bare ment å formidle semantisk at hvis Smith er blant navnene, 567 00:27:01,160 --> 00:27:03,310 da skal jeg ringe Mike. 568 00:27:03,310 --> 00:27:06,630 >> I mellomtiden i trinn seks, varsel at innrykk er borte. 569 00:27:06,630 --> 00:27:10,980 Så annet er den andre gaffel i veien, den andre veien jeg kan reise. 570 00:27:10,980 --> 00:27:14,130 Så annet hvis Smith er tidligere i boken, hva er 571 00:27:14,130 --> 00:27:16,964 Mitt neste steg trolig kommer til å være her? 572 00:27:16,964 --> 00:27:18,380 PUBLIKUM: Du går til venstre side. 573 00:27:18,380 --> 00:27:21,004 DAVID J. MALAN: Ja, så gå til den venstre halvdelen av telefonboken. 574 00:27:21,004 --> 00:27:24,140 Kast høyre halvdel hvis Smith er tidligere i boken. 575 00:27:24,140 --> 00:27:27,140 Så åpent til midten av den venstre halvdelen av boken. 576 00:27:27,140 --> 00:27:30,240 >> Og så steg åtte, gå til linje tre. 577 00:27:30,240 --> 00:27:34,520 Og dette er en nysgjerrig sløyfe jeg er induserende, en rekursjon så å si. 578 00:27:34,520 --> 00:27:35,990 Men mer om det i fremtiden. 579 00:27:35,990 --> 00:27:39,590 >> Jeg bruker min samme algoritme, min samme pseudokode, 580 00:27:39,590 --> 00:27:43,020 å løse det samme problem igjen fordi det eneste som har forandret seg 581 00:27:43,020 --> 00:27:46,550 er størrelsen av problemet, ikke målet mitt, og ikke personen 582 00:27:46,550 --> 00:27:47,340 Jeg ser etter. 583 00:27:47,340 --> 00:27:51,610 Så jeg kan bruke algoritmen at jeg allerede har definert. 584 00:27:51,610 --> 00:27:53,580 >> Else if Smith er senere i book-- du kanskje 585 00:27:53,580 --> 00:27:56,200 guess-- åpent til midten av høyre halvdel av boken. 586 00:27:56,200 --> 00:27:58,350 Og igjen, gå til linje tre. 587 00:27:58,350 --> 00:28:01,480 Else-- hva som er den siste linjen i dette programmet kommer til å bli? 588 00:28:01,480 --> 00:28:03,580 Hvis han er ikke blant de navn på den siden jeg 589 00:28:03,580 --> 00:28:06,870 på, hvis han ikke er tidligere i boken, og han er ikke senere 590 00:28:06,870 --> 00:28:09,899 i boken, hva vet jeg er sant om Mike Smith nå? 591 00:28:09,899 --> 00:28:11,190 PUBLIKUM: Han er ikke i boken. 592 00:28:11,190 --> 00:28:12,731 DAVID J. MALAN: Han er ikke i boken. 593 00:28:12,731 --> 00:28:16,040 Så det beste jeg kan gjøre er bare gi opp og stoppe dette programmet. 594 00:28:16,040 --> 00:28:16,540 Greit. 595 00:28:16,540 --> 00:28:20,350 Så på dette punktet, la oss ta en rask gjennomgang av noen av hva som venter. 596 00:28:20,350 --> 00:28:23,620 Og faktisk, jeg sluttet her av et antall ansatte CS50. 597 00:28:23,620 --> 00:28:26,940 Hvis disse folkene kunne alle bli med meg her oppe på scenen. 598 00:28:26,940 --> 00:28:28,900 >> [APPLAUSE] 599 00:28:28,900 --> 00:28:35,280 600 00:28:35,280 --> 00:28:38,170 >> Mind du, dette er bare en undergruppe av CS50 personale 601 00:28:38,170 --> 00:28:42,380 siden hvert år vi har nesten 100 ansatte medlemmer i roller selvfølgelig assistenter, 602 00:28:42,380 --> 00:28:44,410 undervise stipendiater, og mer. 603 00:28:44,410 --> 00:28:45,700 Kom opp. 604 00:28:45,700 --> 00:28:48,820 Så de vil bli med oss ​​her klønete for bare et øyeblikk 605 00:28:48,820 --> 00:28:54,230 som vi gir en rask tur i hva du bør forvente her i kurset. 606 00:28:54,230 --> 00:28:59,640 >> Så først og fremst må vi SAT / UNS som gradering alternativet i kurset. 607 00:28:59,640 --> 00:29:03,180 Dette er ment bevisst å være et alternativ hvorved 608 00:29:03,180 --> 00:29:05,570 hvis du er litt urolig på å være i kurset, 609 00:29:05,570 --> 00:29:09,390 og du frykter failure-- selv om ærlig fiasko betyr sårer din GPA, 610 00:29:09,390 --> 00:29:13,180 å få en B og ikke en en-- som er nettopp det, i hvert fall for en gateway 611 00:29:13,180 --> 00:29:15,750 selvfølgelig liker CS50 og andre introduksjonskurs, 612 00:29:15,750 --> 00:29:17,540 denne gradering måte er ment å tillate. 613 00:29:17,540 --> 00:29:19,930 >> Jeg helhjertet oppmuntre students-- spesielt 614 00:29:19,930 --> 00:29:23,090 Hvis på fence-- å starte Kurset SAT / UNS, selv forbli SAT / UNS. 615 00:29:23,090 --> 00:29:27,310 Men du kan sikkert bytte til et brev karakteren med den femte mandag i begrepet. 616 00:29:27,310 --> 00:29:31,560 >> Oppriktig, tilbake når jeg var en førsteårsstudent i 1995, 617 00:29:31,560 --> 00:29:34,630 Jeg selv visste ikke engang ta CS50 fordi jeg ikke får opp nerve 618 00:29:34,630 --> 00:29:36,540 å faktisk gå foten i klasserommet. 619 00:29:36,540 --> 00:29:40,020 Det virket en domene altfor ukjent for meg og egentlig bare 620 00:29:40,020 --> 00:29:43,080 for de venner av meg, ærlig, som hadde vært programmering 621 00:29:43,080 --> 00:29:45,570 siden de var seks eller kanskje 10 år gammel. 622 00:29:45,570 --> 00:29:48,640 Og det var bare fordi jeg var stand til å ta CS50 i min tid 623 00:29:48,640 --> 00:29:52,720 i tilsvarende versjon av SAT / UNS-- bestått / ikke bestått tilbake i day-- 624 00:29:52,720 --> 00:29:53,850 at selv jeg tok 50. 625 00:29:53,850 --> 00:29:57,440 Og en eller annen måte, er jeg her igjen med deg i dag. 626 00:29:57,440 --> 00:30:00,690 >> Nå i mellomtiden hva annet du bør huske på om lag 50 627 00:30:00,690 --> 00:30:01,910 er samtidig påmelding. 628 00:30:01,910 --> 00:30:03,785 I motsetning til ryktene om at du kanskje har hørt, 629 00:30:03,785 --> 00:30:07,650 du kan, faktisk, samtidig melde deg på CS50 og en annen klasse som 630 00:30:07,650 --> 00:30:12,150 møter ved samme eller noe overlapp tid som CS50 foredrag her. 631 00:30:12,150 --> 00:30:16,420 Se pensum for opplysningene for gjennomføring derav. 632 00:30:16,420 --> 00:30:19,540 >> Forelesninger, i mellomtiden, i motsetning til hva som er offisielt i katalogen, 633 00:30:19,540 --> 00:30:22,060 vil vanligvis bare møtes for bare en time. 634 00:30:22,060 --> 00:30:24,240 Av og til kan vi kjøre litt lang. 635 00:30:24,240 --> 00:30:26,800 Men husk at mål i CS50 foredrag 636 00:30:26,800 --> 00:30:28,980 er å gi deg en konseptuell oversikt, 637 00:30:28,980 --> 00:30:31,830 forhåpentligvis noen demonstrasjoner, kanskje også noen giveaways, 638 00:30:31,830 --> 00:30:34,390 av hva som venter for uken som følger. 639 00:30:34,390 --> 00:30:37,730 >> Og så i forelesninger, vil vi utforske disse emnene og eksempler sammen, 640 00:30:37,730 --> 00:30:41,420 bringe elevene opp på scenen, og bemanne opp på scenen så ofte som vi kan, 641 00:30:41,420 --> 00:30:43,740 for bare et par timer hver uke. 642 00:30:43,740 --> 00:30:47,435 Seksjoner, i mellomtiden, vil være tilbys av disse folkene her-- mange 643 00:30:47,435 --> 00:30:50,060 av dem undervise stipendiater, noen av dem selvfølgelig assistants-- vilje 644 00:30:50,060 --> 00:30:51,160 skje ukentlig. 645 00:30:51,160 --> 00:30:52,940 >> Og hva er nøkkelen til å holde i bakhodet er at vi 646 00:30:52,940 --> 00:30:55,920 trenger have-- ikke ulikt First Netter, musikken class-- 647 00:30:55,920 --> 00:30:59,220 ulike spor av seksjoner for studenter mindre komfortable, mer 648 00:30:59,220 --> 00:31:01,150 komfortable, og et sted i mellom. 649 00:31:01,150 --> 00:31:03,559 Og ærlig talt, vet du om du er mindre komfortabel. 650 00:31:03,559 --> 00:31:05,600 Og du sikkert vet om du er mer komfortabel. 651 00:31:05,600 --> 00:31:09,920 Og hvis du ikke er helt sikker, er du per definisjon et sted i mellom. 652 00:31:09,920 --> 00:31:12,850 Så når det gjelder tid til seksjon i en uke eller så, per pensum, 653 00:31:12,850 --> 00:31:14,070 vi vil be deg om det spørsmålet. 654 00:31:14,070 --> 00:31:16,890 Og du kan selv velge basert på din egen komfort nivå 655 00:31:16,890 --> 00:31:22,220 og være med students-- være med grønn dots-- lik i komfortnivå til deg. 656 00:31:22,220 --> 00:31:25,710 >> I mellomtiden har vi problem setter, som til slutt vil 657 00:31:25,710 --> 00:31:28,310 definere din erfaring i dette kurset. 658 00:31:28,310 --> 00:31:30,370 De blir tilbudt typisk i flere utgaver. 659 00:31:30,370 --> 00:31:34,150 En standard utgave som vi forventer mest hver elev i kurset for å takle 660 00:31:34,150 --> 00:31:37,900 men også en såkalt hacker utgave som tilbyr ingen form for ekstra kreditt 661 00:31:37,900 --> 00:31:41,980 outright Men egentlig skryte å si at du har prøvd og taklet 662 00:31:41,980 --> 00:31:45,250 kursets hacker utgaver som nærmer lignende materiale 663 00:31:45,250 --> 00:31:47,370 men fra en mer sofistikert vinkel. 664 00:31:47,370 --> 00:31:49,480 >> Hva vi tilbyr for standard utgave, for, 665 00:31:49,480 --> 00:31:51,420 igjen, en super flertall av studenter, er ikke 666 00:31:51,420 --> 00:31:54,060 bare walk-throughs, som er videoer ledet av kursets ansatte 667 00:31:54,060 --> 00:31:57,840 som virkelig gå deg gjennom kursets problemer og mulig utforming 668 00:31:57,840 --> 00:31:58,910 implementeringer. 669 00:31:58,910 --> 00:32:01,434 Og vi har også, etter Faktisk, tilbyr postmortems, 670 00:32:01,434 --> 00:32:03,350 der hvis du lurer på hvordan du kunne ha 671 00:32:03,350 --> 00:32:05,930 eller burde ha løst noen problem, lærerstaben 672 00:32:05,930 --> 00:32:08,640 vil lede deg gjennom de på video i tillegg. 673 00:32:08,640 --> 00:32:14,350 >> I mellomtiden, hva som venter også er fem dager sene og det faktum 674 00:32:14,350 --> 00:32:16,680 at vi vil slippe laveste problem satt poengsum. 675 00:32:16,680 --> 00:32:20,370 Vi absolutt setter pris på at i bytte for den belastning som 50 forventer 676 00:32:20,370 --> 00:32:24,020 av dere, blir livet i veien noen ganger, om ikke fem ganger. 677 00:32:24,020 --> 00:32:26,150 Og så dette vil tilby deg litt av fleksibilitet, 678 00:32:26,150 --> 00:32:29,400 forlenge fristen fra, sier en Torsdag midt på dagen til fredag ​​midt på dagen. 679 00:32:29,400 --> 00:32:33,150 Se pensum for gjennomføring detaljer om dette. 680 00:32:33,150 --> 00:32:34,702 >> Nå hva nå venter? 681 00:32:34,702 --> 00:32:36,660 Og det er bare fore for meg nå akkurat hvor lenge 682 00:32:36,660 --> 00:32:38,333 Jeg har dere stå her på scenen. 683 00:32:38,333 --> 00:32:39,060 >> [Latter] 684 00:32:39,060 --> 00:32:41,867 >> DAVID J. MALAN: Men vi får til klimaks ferdig før lenge. 685 00:32:41,867 --> 00:32:43,700 Så hva venter i form av oppgavesett? 686 00:32:43,700 --> 00:32:47,099 Vel, kanskje en teaser av hva vi alle gjorde i fjor med dine forgjengere. 687 00:32:47,099 --> 00:32:49,140 I det første problemet sett fjor introduserte vi 688 00:32:49,140 --> 00:32:51,630 Scratch, en grafisk programmeringsspråk som 689 00:32:51,630 --> 00:32:54,570 lar deg programmere bokstavelig talt av dra og slippe brikkene, 690 00:32:54,570 --> 00:32:57,220 som disse, som er minner om de konstruerer 691 00:32:57,220 --> 00:32:59,260 vil se bare én uke Derfor, når vi bytter 692 00:32:59,260 --> 00:33:01,870 til en mer tradisjonell språk, kjent som C. 693 00:33:01,870 --> 00:33:03,930 >> I fjor vi gikk videre på dette problemet sett, 694 00:33:03,930 --> 00:33:06,720 involverer for kryptografi, den scrambling av informasjonen 695 00:33:06,720 --> 00:33:10,410 å holde det fra statlig eller venner ' øyne som du ikke ønsker å se det. 696 00:33:10,410 --> 00:33:12,540 Kodet i her er en melding som snart du 697 00:33:12,540 --> 00:33:15,740 vil være i stand til å dekryptere eller de-krafse. 698 00:33:15,740 --> 00:33:17,960 >> Breakout var et problem satt i fjor, hvor 699 00:33:17,960 --> 00:33:21,530 du bruker disse nye funnet programmering ferdigheter til å faktisk gjennomføre 700 00:33:21,530 --> 00:33:24,840 et spill wherein-- som du kanskje husker fra childhood-- 701 00:33:24,840 --> 00:33:28,040 Målet var å bash klosser som er på toppen av skjermen 702 00:33:28,040 --> 00:33:30,190 her, samler en scorer underveis, 703 00:33:30,190 --> 00:33:35,460 og implementere dine egne algoritmer som denne løsningen til slutt 704 00:33:35,460 --> 00:33:37,357 lar deg spille spillet. 705 00:33:37,357 --> 00:33:39,440 I mellomtiden senere i semester, vil vi gi deg 706 00:33:39,440 --> 00:33:43,470 en ordbok med 143 091 engelske ord. 707 00:33:43,470 --> 00:33:46,300 Og du vil bli utfordret å skrive et program som 708 00:33:46,300 --> 00:33:50,260 stavekontroll, dokumenter, ved lasting at mange ord inn i minnet 709 00:33:50,260 --> 00:33:52,300 så effektivt som mulig. 710 00:33:52,300 --> 00:33:54,240 Vanligvis setter deg opp mot dine klassekamerater 711 00:33:54,240 --> 00:33:56,610 hvis du velger inn i en bit av en utfordring i ledertavlen 712 00:33:56,610 --> 00:34:00,090 for å se hvem som kan bruke færrest sekunder driftstid, 713 00:34:00,090 --> 00:34:03,550 og færrest av megabyte minne, 714 00:34:03,550 --> 00:34:08,659 og faktisk fin-tuning programmene dine å være utrolig ressurseffektiv ikke 715 00:34:08,659 --> 00:34:09,820 bare tid. 716 00:34:09,820 --> 00:34:13,239 >> I fjor også, så vi på slutten av semesteret på web-programmering. 717 00:34:13,239 --> 00:34:16,230 Og ja, vi vil gjøre det igjen dette år med flere oppgavesett, 718 00:34:16,230 --> 00:34:20,290 introdusere deg til teknikker og tankegangen som du kan bruke 719 00:34:20,290 --> 00:34:23,489 disse programmeringsferdigheter til nettsteder, dynamiske websider, 720 00:34:23,489 --> 00:34:26,639 nettsteder som faktisk løse problemer og oppføre seg annerledes 721 00:34:26,639 --> 00:34:30,620 og er ikke bare statisk nettsteder med statisk informasjon. 722 00:34:30,620 --> 00:34:32,854 >> Det siste prosjektet til slutt vil definere, skjønt, 723 00:34:32,854 --> 00:34:34,770 klimaks av kurset for studenter, der 724 00:34:34,770 --> 00:34:37,228 vil du bli utfordret til å gjennomføre de fleste noe av interesse 725 00:34:37,228 --> 00:34:40,590 til deg, så lenge det liksom trekker på kursets leksjoner. 726 00:34:40,590 --> 00:34:42,930 >> Og som du så i video i starten, 727 00:34:42,930 --> 00:34:47,340 vi vil avslutte semesteret med CS50 Hackathon, som hvis, ukjente, 728 00:34:47,340 --> 00:34:51,420 vil begynne kl 07:00 en natt og ende på 7:00 neste morgen. 729 00:34:51,420 --> 00:34:53,614 Rundt 09:00, vil vi For i første middag. 730 00:34:53,614 --> 00:34:55,489 Rundt 01:00, vil vi For i andre middag. 731 00:34:55,489 --> 00:34:57,490 Og hvis du fortsatt stående på 05:00, vi 732 00:34:57,490 --> 00:35:00,320 vil shuttle buss du til IHOP for frokost. 733 00:35:00,320 --> 00:35:04,980 >> Den CS50 Fair, i mellomtiden, er en hendelse som 2000 pluss lærere, studenter, 734 00:35:04,980 --> 00:35:07,850 og ansatte fra hele campus vil kommer til å se dine prestasjoner 735 00:35:07,850 --> 00:35:10,150 i kurset og den endelige prosjekter og kreasjoner 736 00:35:10,150 --> 00:35:14,960 som du lager på din bærbare PC, stasjonære, eller kanskje til og med lyspærer. 737 00:35:14,960 --> 00:35:17,340 >> I mellomtiden kontortid og støttestrukturen. 738 00:35:17,340 --> 00:35:20,480 Og nå ville det har vært en bedre tid til å bringe deg helt opp. 739 00:35:20,480 --> 00:35:24,310 >> Arbeidstid vil finne sted fire netter en uke for flere timer hver natt 740 00:35:24,310 --> 00:35:27,710 med generelt 20 til 30 av de Kursets ansatte på vakt på en gang 741 00:35:27,710 --> 00:35:31,240 å gi deg intime en-mot-én muligheter for støtte 742 00:35:31,240 --> 00:35:33,790 med kursets oppgavesett. 743 00:35:33,790 --> 00:35:36,120 Veiledning vil også være tilgjengelig, særlig 744 00:35:36,120 --> 00:35:39,630 for studenter mindre komfortabel-- eller tør si minst komfortabel-- for hvem 745 00:35:39,630 --> 00:35:41,869 kontortid er ikke den mest givende miljø 746 00:35:41,869 --> 00:35:43,660 og er absolutt ikke den mest stress-fri. 747 00:35:43,660 --> 00:35:47,430 Spesielt når tidsfrister pressing, vi vil proaktivt koble deg selv 748 00:35:47,430 --> 00:35:51,440 med et medlem av de ansatte til å jobbe med på noen regelmessig etter hvert som behovene 749 00:35:51,440 --> 00:35:53,850 og timeplanen deres tillater. 750 00:35:53,850 --> 00:35:55,260 >> Og ansatte. 751 00:35:55,260 --> 00:36:01,020 Tillat meg å presentere Davon, Rob, og Gabriel, årets hoder. 752 00:36:01,020 --> 00:36:02,370 Hvis du ønsker hver liker å si-- 753 00:36:02,370 --> 00:36:03,349 >> [APPLAUSE] 754 00:36:03,349 --> 00:36:03,849 voldtektsofre ord. 755 00:36:03,849 --> 00:36:05,328 [APPLAUSE] 756 00:36:05,328 --> 00:36:10,270 757 00:36:10,270 --> 00:36:13,220 Davon over her er den Kursets manager, som 758 00:36:13,220 --> 00:36:15,730 betyr i sin fulltids rolle han hjelper med gjennomføringen 759 00:36:15,730 --> 00:36:18,424 og logistikk av CS50. 760 00:36:18,424 --> 00:36:19,340 Davon: Ja, hei, folkens. 761 00:36:19,340 --> 00:36:20,965 Du vil se mye til meg i kontortiden. 762 00:36:20,965 --> 00:36:22,110 Jeg skal være lærer seksjoner. 763 00:36:22,110 --> 00:36:25,150 Og hvis du skyter e-post i forkant, Jeg vil trolig være å svare. 764 00:36:25,150 --> 00:36:27,670 Så jeg får se mange av dere hele semesteret. 765 00:36:27,670 --> 00:36:29,890 Og velkommen til CS50. 766 00:36:29,890 --> 00:36:38,330 >> DAVID J. MALAN: Og nå Gabriel, som selv var bare en førsteårsstudent i fjor, 767 00:36:38,330 --> 00:36:41,820 men for de siste par årene har vært i drift sin egen versjon av CS50 768 00:36:41,820 --> 00:36:44,660 i Brasil, hvor han lastet ned alle kursets content-- 769 00:36:44,660 --> 00:36:46,890 som er helt klart å være filmet og plassert online-- 770 00:36:46,890 --> 00:36:51,480 slik at han kunne oversette det til Portugisisk og deretter lære mer enn 100 771 00:36:51,480 --> 00:36:54,610 av hans klassekamerater over løpet av et par år, 772 00:36:54,610 --> 00:36:57,650 undervisning i sitt morsmål kursets pensum. 773 00:36:57,650 --> 00:36:58,964 >> GABRIEL: Hei. 774 00:36:58,964 --> 00:37:00,912 >> [APPLAUSE] 775 00:37:00,912 --> 00:37:06,669 776 00:37:06,669 --> 00:37:07,710 GABRIEL: Hei, jeg er Gabriel. 777 00:37:07,710 --> 00:37:09,340 Jeg er leder TF av kurset. 778 00:37:09,340 --> 00:37:10,780 Og jeg håper du vil elske CS50. 779 00:37:10,780 --> 00:37:12,830 Dette er CS50. 780 00:37:12,830 --> 00:37:14,697 >> DAVID J. MALAN: Nå for Rob. 781 00:37:14,697 --> 00:37:15,780 Åh, du vil innføring? 782 00:37:15,780 --> 00:37:16,696 >> ROB: Nei, jeg vet ikke. 783 00:37:16,696 --> 00:37:18,225 [Latter] 784 00:37:18,225 --> 00:37:19,475 DAVID J. MALAN: Og Rob Boden. 785 00:37:19,475 --> 00:37:22,300 [Latter] 786 00:37:22,300 --> 00:37:23,800 ROB: Hei, jeg er Rob. 787 00:37:23,800 --> 00:37:27,220 Dette er mitt femte år involvert med kurset. 788 00:37:27,220 --> 00:37:29,220 Hvert år, det er bare en bedre og bedre klasse 789 00:37:29,220 --> 00:37:31,550 så dere er klart kommer til å bli kjempebra. 790 00:37:31,550 --> 00:37:33,181 Jeg håper dere alle har det gøy med det. 791 00:37:33,181 --> 00:37:34,430 Jeg kommer til å ha det gøy med det. 792 00:37:34,430 --> 00:37:36,670 Så se deg rundt. 793 00:37:36,670 --> 00:37:38,445 >> DAVID J. MALAN: Og tid vil ikke tillate oss-- 794 00:37:38,445 --> 00:37:39,670 >> [APPLAUSE] 795 00:37:39,670 --> 00:37:41,661 >> Tiden vil ikke tillate oss å introdusere alle 796 00:37:41,661 --> 00:37:44,660 på scenen og alle deres kolleger som er shopping klasser i dag. 797 00:37:44,660 --> 00:37:47,390 Men la meg få presentere Belinda og CS50 Puzzle 798 00:37:47,390 --> 00:37:49,550 Dag, som venter dette kommer lørdag, som 799 00:37:49,550 --> 00:37:51,800 er den første av de kursets store arrangementer. 800 00:37:51,800 --> 00:37:54,300 >> Dette spesielt ment å hamre inn poenget 801 00:37:54,300 --> 00:37:57,580 at informatikk er slutt ikke om programmering, men heller 802 00:37:57,580 --> 00:37:59,280 om problemløsning mer generelt. 803 00:37:59,280 --> 00:38:01,450 Og Puzzle Day, som du vil se, vil bringe deg 804 00:38:01,450 --> 00:38:04,207 og dine klassekamerater together-- håper vi denne lørdagen. 805 00:38:04,207 --> 00:38:04,961 >> BELINDA: OK. 806 00:38:04,961 --> 00:38:05,750 Hei, folkens. 807 00:38:05,750 --> 00:38:06,740 Så takk. 808 00:38:06,740 --> 00:38:10,120 Så som vår strålende kaptein sa, jeg heter Belinda. 809 00:38:10,120 --> 00:38:12,100 Jeg er en sophomore på Quincy House. 810 00:38:12,100 --> 00:38:15,730 >> Jeg, akkurat som dere, tok CS50 fjor, virkelig elsket det. 811 00:38:15,730 --> 00:38:17,960 Jeg har en soft spot for dere i den tredje rad. 812 00:38:17,960 --> 00:38:21,384 Og jeg er stolt over å si, jeg er nå i et forpliktende samarbeid 813 00:38:21,384 --> 00:38:22,300 med CS50 [uhørbart]. 814 00:38:22,300 --> 00:38:22,799 OK. 815 00:38:22,799 --> 00:38:26,140 Det var min halt versjon av en vits. 816 00:38:26,140 --> 00:38:28,320 >> Uansett, så går videre, bare ønsket å invitere 817 00:38:28,320 --> 00:38:31,439 dere alle til I-lab, eller HBS elveblest. 818 00:38:31,439 --> 00:38:33,730 Vi kommer til å være å ha Puzzle Day 12:00-03:00. 819 00:38:33,730 --> 00:38:37,680 Og det er en flott mulighet for deg gutta å møte de andre CS venner, 820 00:38:37,680 --> 00:38:42,780 løse noen ikke-CS puslespill, som kaptein nevnt, og også spise litt gratis mat, 821 00:38:42,780 --> 00:38:46,910 tjene noen fantastiske premier, som gavekort, $ 75 per person, 822 00:38:46,910 --> 00:38:48,400 og also-- hva var det? 823 00:38:48,400 --> 00:38:49,540 Wii U eller noe? 824 00:38:49,540 --> 00:38:50,333 Wii U? 825 00:38:50,333 --> 00:38:51,040 Ja. 826 00:38:51,040 --> 00:38:52,330 For vår tombola. 827 00:38:52,330 --> 00:38:52,830 Awesome. 828 00:38:52,830 --> 00:38:54,310 Så jeg vil holde rundt etter klasse. 829 00:38:54,310 --> 00:38:56,770 Og hvis dere har noen spørsmål, gi meg beskjed. 830 00:38:56,770 --> 00:38:59,980 >> DAVID J. MALAN: Og du vil se, utover dette er det ingenting å gjøre i dag. 831 00:38:59,980 --> 00:39:01,920 Det første problemet satt vil gå ut fredag. 832 00:39:01,920 --> 00:39:05,420 Men for å bringe oss hjem i dag, vil jeg gjerne introdusere deg til spesielt én mer 833 00:39:05,420 --> 00:39:09,080 medlem av staben, Colton Ogden her, hvis hender er nå 834 00:39:09,080 --> 00:39:12,250 beskyttet over deg med dette MIDI controller 835 00:39:12,250 --> 00:39:15,170 å hamre inn poenget ytterligere som informatikk, også, 836 00:39:15,170 --> 00:39:19,130 har anvendelse langt utover ingeniør og STEM og informatikk selv, 837 00:39:19,130 --> 00:39:22,890 strekker seg selv til slike domener som musikk. 838 00:39:22,890 --> 00:39:30,590 >> Colton har vennlig offered-- jeg trodde en av dem skulle fikse fokus. 839 00:39:30,590 --> 00:39:34,400 Andrew, hvis vi kunne tilkalle fokus over her for bare et øyeblikk. 840 00:39:34,400 --> 00:39:36,780 >> Hva Colton har gjort på forhånd er program 841 00:39:36,780 --> 00:39:40,345 denne enheten, dette pad knapper som du ser avbildet her oppe, 842 00:39:40,345 --> 00:39:42,470 som en MIDI-kontroller, hvorved hver av disse knapper 843 00:39:42,470 --> 00:39:47,080 er kablet til en bestemt musikknote eller en lyd, mer generelt et opptak, 844 00:39:47,080 --> 00:39:50,445 slik at ved å spille mønstre av disse knapper, mye som punktmønstre, 845 00:39:50,445 --> 00:39:52,620 kan representere andre høyere nivå konsepter. 846 00:39:52,620 --> 00:39:56,750 Vil han være i stand til slutt å ta oss hjem her i dag? 847 00:39:56,750 --> 00:39:59,540 Uten videre, hvis vi kunne dempe lysene, 848 00:39:59,540 --> 00:40:03,145 og slå på skjermen bak Colton. 849 00:40:03,145 --> 00:40:03,865 >> PUBLIKUM: Woo! 850 00:40:03,865 --> 00:40:06,090 >> DAVID J. MALAN: Dette er CS50. 851 00:40:06,090 --> 00:40:10,518 >> [Musikk spilles] 852 00:40:10,518 --> 00:42:46,018 853 00:42:46,018 --> 00:42:49,420 >> [APPLAUSE] 854 00:42:49,420 --> 00:42:54,766 855 00:42:54,766 --> 00:42:56,450 >> Det er det for CS50. 856 00:42:56,450 --> 00:42:57,950 Vi vil se deg fredag. 857 00:42:57,950 --> 00:42:59,890 Noen kake venter på deg i tverrskipet. 858 00:42:59,890 --> 00:43:04,046 859 00:43:04,046 --> 00:43:08,850 >> [Musikk spilles] 860 00:43:08,850 --> 00:45:49,227