[Speel van musiek] [MUSIEK - Rossini, "RANZ DES VACHES "van William Tell] [MUSIEK - DIE ENGELSE klop, "opmars VAN DIE SWIVEL koppe "] [Applous en die gejuig] David Malan: So dit is CS50. My naam is David Malan. En 73% van julle het geen vorige ervaring met 'n rekenaar wetenskap, In teenstelling met wat jy dalk dink. So vandag het ons gedink ons ​​sou chip weg aan dat die gebrek aan kennis nie, maar ook gee jou 'n gevoel van, vir dié van julle met meer gemak, wat aanwysings jy kan gaan hierdie semester. So laat ons begin met hierdie. Ek het werklik geen idee wat binne in 'n rekenaar, selfs al is, soos jy, het ek gebruik dit elke dag. Maar dit is 'n soort van boks, en daar is nie baie insette in dit. Minimaal, daar is, wat? Waarskynlik 'n krag koord. En inderdaad met hierdie een bestanddeel, elektrisiteit, lyk ons ​​in staat wees om doen nogal 'n bietjie van hierdie dae. Maar aan die einde van die dag, het ons het die dinge te verteenwoordig dat ons omgee. Ons het inligting voor te stel in een of ander vorm. En jy is waarskynlik ten minste vaagweg vertroud is met die idee van binêre of stukkies op die een of ander, rekenaars verminder tot nulle en ene. Maar kan ons aanvaar dat en ten minste sit 'n bietjie van die lig daarvan? So ek het hierdie klein lessenaar lampe hier. Ek het 'n kragpunt hier. En ek gaan dit binne-in te stel van my rekenaar is ten minste een van die hierdie dinge, iets in staat om aan-en afgeskakel. In hierdie geval, dit is inderdaad 'n lessenaar lamp, maar op die onderste vlak, dit is iets bekend as 'n transistor. Maar in ons wêreld, is dit 'n lessenaar lamp, so Ek gaan om voort te gaan en dit sluit in my elektrisiteit hier. En ek beweer dat die gebruik van hierdie eenvoudige, eenvoudige toestel, hierdie eenvoudige skakelaar, ek kan stel inligting. Byvoorbeeld, nou is ek wat niks nie, reg? Ek verteenwoordig wat ek sal noem 0 of vals is, die teenoorgestelde van iets eintlik teenwoordig is. Maar as ek net weer die skakelaar, nou het ek verteenwoordig 'n 1. Sodat die gebruik van hierdie baie eenvoudige stuk geheue, as jy wil, kan ek verteenwoordig inligting. Nou ongelukkig, my rekenaar nie kan doen nie alles wat veel. Dit kan net verteenwoordig twee waardes in die hele wêreld - 0 of 1. Maar wat is 'n duidelike oplossing, nou, As ons wil hê dat ons rekenaar uit te brei geheue en verteenwoordig meer as net 0 en 1? Wel, laat gryp nog so 'n bietjie. Kom ons gryp 'n ander skakelaar, 'n ander transistor, maar jy wil daaroor dink. Laat my gaan voort en prop dit in my rekenaar as well. En ek gaan om te eis, nou, wat deur met behulp van 'n bietjie meer elektrisiteit en draai meer van hierdie skakel aan en af, kan ek verteenwoordig meer sulke inligting. So nou, dit is 1. As ek nou wil stel 2, kon ek dit doen. Maar tipies, konvensie, soos ons sal uiteindelik sien, sal my dit doen. So dit is 0, dit is 1. Dit sou wees 2. En nie verrassend nie, sou dit wees 3. So op hierdie manier, nog steeds, kan ons tel selfs verder? As ek 'n derde bietjie, 'n derde skakelaar, wat is die grootste getal kan ek nou tel tot by 0? So 7 As ek begin by 0, reg? Want as ek draai die lig op en eintlik prop die derde en finale lig in my elektriese aansluiting hier, dan het ek die vermoë te verteenwoordig enige van twee waardes hier twee waardes hier, twee waardes hier - en so ek kan verteenwoordig 2 keer 2 keer 2, of agt moontlike waardes. En as ek begin rekeningkunde by 0, so dit is 0, 1, 2, 3, 4, 5, 6, 7. So hierdie program nie. Dit is regtig so eenvoudig soos dit. En Ek wil argumenteer dat dit eintlik ' redelik vertroud met die meeste Almal in die kamer. Laat my gaan voort en maak 'n min teks editor hier. En jy kan onthou van graad skool dat ons dinge soos die honderde plek, die tien plek, en die een plek. En onthou dat as jy 'n paar desimale nommer, soos iets wat lukraak soos 123, jy sou in wese skryf dit uit in die vorm van hierdie drie kolomme. En hoekom is 1, 2, 3 wat ons weet as 123? Wel, in die linker kolom, het ons ' 'n 100 plus twee 10s, so dit is 120, plus drie 1s, so dit is 123. Nou hierdie wêreld dat ons net verlig is presies dieselfde as jy is vertroud met vir die jaar, Behalwe nou, ons kolomme is nie magte van 10. Hulle is net magte van 2. So, terwyl dit is die mense wat plaasvind, is hierdie gaan die twee-twee plek wees, is dit gaan na die viere plek wees. En omdat ek slegs met behulp van die eenvoudigste van die meganismes dinge om te draai op en af ​​- elektrisiteit vloei of elektrisiteit vloei nie - Ek het nie heeltemal nie dieselfde uitdrukkingsvolle reeks as 0 tot nege. Ons gaan om te hou dit super eenvoudige in hierdie wêreld van rekenaars. Ek het net 0 of 1 - af of op, vals of waar. En wat ek nou verteenwoordig is 1, 1, 1, want elkeen van hierdie ligte is verlig. Wel, dit gee my 'n 4 plus een 2, so dit is 6, plus een 1, en dit is 7. En ergo doen hierdie volgorde van drie stukkies verteenwoordig die aantal 7. So al hierdie tyd, binne-in jou rekenaar, is 'n aantal transistors, enige aantal stukkies. Maar aan die einde van die dag, het ons kan stel inligting so eenvoudig soos dit. Nou ongelukkig, ons het net getel tot 7 in CS50 tot dusver, maar hopelik kan ons doen 'n bietjie beter as dit. En inderdaad ons kan. Veronderstel dat ons as mense net arbitrêr besluit dat ons gaan getalle te assosieer soos 1 en 2, 3, 4, 5, 6, 7, met spesifieke letters van die alfabet. En vir historiese redes, gaan ek begin ietwat arbitrêr, maar ek is gaan om te sê, die mens, gaan ons besluit om as 'n standaard, wêreldwyd, wat die 65 verteenwoordig die aantal die letter A. 66 sal verteenwoordig B. Dot, dot, dot. 90 sal verteenwoordig die letter Z. En laat ons dink nie, as ons regtig 'n plaas gedink het in dit, kan ons kom met nommers vir uitroep punte en kleinletters, en inderdaad, ander mense gedoen het wat vir ons. So nou het ons stukkies met wat ons kan getalle, getalle waarmee ons kan verteenwoordig briewe, en met letters kan ons nou begin met die saamstel e-pos en druk karakters op die skerm. So laat my nooi, as ek kon, agt dapper vrywilligers - wat nie omgee verskyn nie net op kamera, maar op die internet - om te kom hier en verteenwoordig agt sulke stukkies, eerder as om hierdie drie. So hoe oor een, twee? Hoe omtrent drie? Hoe oor die vier in die lig blou, vyf aan die einde? Oor iemand hier? Ses voor sewe in die voorkant, en agt in die voorkant, as well. So ek het net so gebeur het om voorbereid te kom met 'n hele klomp van die strokies papier. En op hierdie stukkies papier is getalle wat stel watter kolomme julle gaan verteenwoordig. So sal jy wees - wat is jou naam? STUDENT: Anna Lea. David Malan: Anna Lea, het jy sal die 128s kolom wees. Jy is? STUDENT: Chris. David Malan: Chris sal die 64s kolom. Jy is? STUDENT: Dan. David Malan: Dan sal die 32s kolom. STUDENT: Pramit. David Malan: Pramit sal die 16s kolom. STUDENT: Lillian. David Malan: Lillian sal die 8's wees. STUDENT: Jill. David Malan: Jill sal die 4s kolom. STUDENT: Mary. David Malan: Mary sal wees om die 2's, en? STUDENT: David. David Malan: Dawid sal wees om die 1'e kolom. So as jy ouens kon stap 'n bietjie vorentoe, sodat almal dit kan sien. Wat julle sien nie, is dat die terug van die strokies papier is 'n bietjie oneerlik vel wat oor te opdrag hierdie agt stukkies om óf verhoog hul hand of nie verhoog hul hand. As hulle hand gaan op, hulle is verteenwoordig 'n 1. As hulle hand bly af, hulle is wat 'n 0. Intussen het ons die publiek moet wees in staat om uit te vind, wat gebaseer is op hierdie kartering, wat drie-letter woord hierdie mense is omtrent om uit te spel. So in 'n oomblik, jy gaan te lees die eerste reël uit die agterkant van jou oneerlik vel, en jy is óf gaan om te verhoog of nie verhoog jou hand. As jy 'n 1 en jy maak, as jy is 'n 0, staan ​​jy daar ongemaklik, net soos dit. Gaan. Watter getal in die eerste plek, hierdie ouens wat? 66. 66, reg? Ons het 'n 1 in die 64s kolom 'n 1 in die 2s kolom. Dit gee my 66, so wat verskyn te verteenwoordig B. So julle ouens gespel het - OK, dis genoeg. B. So laat ons nou beweeg op ons tweede brief. Gaan. Wie is die vinnigste in wiskunde hier? So 79. Weereens, as ons al die kolomme waarin daar is 'n 1, tans, net soos ons gedoen het voordat met die eenvoudigste voorbeelde van 7, het ons nou kry die nommer 79. Wat volgens ons kartering is die brief O. So ons is amper daar. B, O. En laastens, gaan. Wat is dit wat nou? Minder konsensus. Dit is net 'n absolute bruis. Ja, dit is in werklikheid 87. Goed. So as ons nou kaart wat terug tot - laat begin bel ons ASCII grafiek, American Standard Code vir Inligting wisselaar. Dit gee ons die brief - nie "bo" nie, maar "boog." En dit is 'n perfekte wit vir julle 'n boog te neem en kop op die rug. Baie dankie. [Applous] David Malan: Jy kan hou nie. Alhoewel eintlik, sou iemand soos 'n lessenaar lamp, ook? [Toet UIT GEHOOR] David Malan: Balie lamp? [Gelag] David Malan: Regtig? Lessenaar lampe vir almal? Alle regte. So begin met die heel eenvoudigste beginsels, ons het nou nie net getel uit 0 al die pad tot 7, het ons aanvaar dat net deur die gooi meer stukkies of meer ligte of meer transistors na hierdie probleem, kan ons verteenwoordig groter en groter getalle, en ergo, groter en groter wissel van alfabet, soos Engels. En net laat neem oor geloof vir vandag wat insgelyks kan ons begin om te stel beelde en video en enige aantal ander media waarmee ons vertroud vandag. So dit is CS50, en in hierdie klas saam met van julle is, weer, baie klasmaats wat so min ervaar as jy. En Ek noem dit net omdat baie dikwels, insluitend so onlangs as een van die groentjie adviseer gebeure en by verlede jaar se stage te adviseer gebeurtenis, hoor ons dikwels studente ontken toe kom die CS tafel, goed, Ek het gedink oor die neem van hierdie intro klas nie, maar ek is nie regtig 'n rekenaar persoon. Of nie, maar almal sekerlik weet meer as ek. En ek het dit in die grootste font moontlik is, oor te dra hierdie boodskap wat dit is in werklikheid nie die geval nie. En as jy wonder, moet Ek, in werklikheid, hier te wees? Besef dat nie net is hierdie kursus se titel Inleiding tot Rekenaar Wetenskap, dit is Inleiding tot Rekenaar Wetenskap I. So is daar inderdaad 'n tweede so 'n inleiding. So jy is nie, in werklikheid, in die verkeerde plek. En onder die doelwitte wat ek vir vandag te sus enige sodanige bekommernisse mag hê nie, maar ook om te verf 'n prentjie van wat in die winkel vir studente minder en meer gemaklik gelyk in hierdie kursus. Maar eers 'n woord op een van die aalmoese jy het vandag, waaronder is 'n aantal van vrae. Dit was 'n visie van ons vir 'n geruime tyd nou 'n nuwe gradering te stel opsie in hierdie kursus - naamlik, Saterdag / UNSAT. Filosofies vir my, dit is baie, baie, baie meer belangrik dat die studente in die klas betrokke te raak met die materiaal, uitgedaag word deur die materiaal, en veel bekommerd wees nie, veel minder oor die meganika van werklike tellings en 'n brief grade by semester se einde nie, maar werklik omhels die natuurlik en sy materiaal. En regtig dit voel, meer in die algemeen, vir wat is interessant om hulle te voel uitgedaag en beloon word, maar sonder vrees vir mislukking. En inderdaad, dit is te 'n herhalende tema in hierdie en ander inleidende kursusse in ander gebiede, dat jy hierdie angs wanneer dit kom by om 'n mens se tone in onbekende waters. Ek myself, terug in 1995, was 'n groentjie. Ek was baie gefokus op wat 'n regering concentrator hier. En tog het ek altyd grootgeword met 'n bietjie van 'n belang in Rekenaarwetenskap. Ek was nog altyd nuuskierig. Maar terug dan, selfs, ek het hierdie vrees om selfs voet in CS50, soveel sodat ek het nie eens shop dit eerstejaars jaar. En die enigste rede waarom ek 'n voet in die deur stage jaar was omdat ek is toegelaat om te neem dit slaag / druip. Maar selfs slaag / druip vereis dat ek die senuwee om 'n afspraak te maak met Professor Kernehan by die tyd, bring hierdie groot vel papier, en vra hom vir sy handtekening en sy toestemming te verken hierdie onbekende waters. En dit het nie gehelp nie in die afgelope jaar dat wanneer om dit te doen in CS50, wanneer ons gebruik word om te wees slaag / druip, insgelyks sou dekades of honderde van jou klasmaats het om te kom, God verbied, by die voor Sanders met hierdie vorm, wat in sommige mense verteenwoordig 'n onvermoë, Durf ek sê, uit te voer is jou maats se vlak. Dit is belaglik, maar ek dink daar is dat die mentaliteit. En daar was nog nooit in hierdie kultuur van SAT / UNSAT, of slaag / druip meer in die algemeen, in hierdie kursus, of eintlik op hierdie kampus. So hierdie jaar het ons verander nie. Ek sou in ekstase helfte van wees hierdie klas of meer geëindig up neem CS50 SAT / UNSAT. In 'n jaar se tyd, sou dit wonderlik wees As amper almal is. Daarna miskien sal ons werk op brief grade by Harvard Kollege meer algemeen. Maar vir nou, sal ons dit doen binne ons eie gebied, en ek sou harte aanmoedig om die vrae te hersien en vra vrae soos jy goeddink, sodat Hopelik sal jy, in teenstelling met my, sal nie heeltemal het dieselfde vrees faktor wanneer verken wat waarskynlik 'n onbekende plek. So, wat is CS50? Dit is 'n inleiding tot die intellektuele ondernemings van die rekenaar wetenskap en die kuns van die ontwikkeling. Maar wat beteken dit werklik? Wel, tot dusver, het ons gepraat baie kortliks oor wat inligting. Maar veronderstel dat ons eintlik wil hê om iets te doen met dit. Ons moet die idee van in te voer wat ons noem 'n algoritme. 'N Algoritme is 'n proses, 'n proses, 'n stel instruksies vir om iets te doen. En 'n algoritme kan iets wees super eenvoudig. Byvoorbeeld, 'n voorbeeld van wat 'n paar van julle dalk bekend wees, is hierdie ding hier. Daarom is hierdie boek hier is toenemend gedateer nie, maar eens op 'n tyd, is dit bevat 'n hele klomp van die name en telefoonnommers. En inderdaad, as ek wou om uit te vind iemand in die telefoon boek - sê, iemand met die naam Mike Smith - Ek kon vind Mike Smith in 'n aantal van redelik eenvoudige maniere. Ek kon begin by die begin en beweeg na bladsy 1, nie daar nie. Page 2, nie daar nie. Page 3. Is dat algoritme, is dat proses, korrek? So dit korrek is, reg? Ek is soort van 'n idioot vir die doen dit in daardie manier, maar uiteindelik het ek sal vind die van S, en hopelik Mike is in daardie artikel, en ek sal gedoen met my algoritme. Maar seker dit is nie intuïtief. Die meeste elke redelike mens in hierdie kamer sou nie gedoen het nie. Wat sou jy gedoen het? Jy wil reguit gegaan tot in die middel, reg? Sowat tot in die middel. En jy besef, o, dit is die me So Mike Smith, laaste naam om Smith, is nie duidelik, dan in die linker helfte van die boek. Hy moet na die S is in die regterkant. En op hierdie punt, maar die meeste van ons doen dit nie in werklikheid, kan ons letterlik skeur hierdie probleem in die helfte. [Juig en applous] David Malan: Dankie. [Juig en applous] David Malan: Jy kan letterlik skeur hierdie probleem in die helfte, laat my met, letterlik, 'n probleem helfte so groot. So as hierdie telefoon boek was - en dit waarskynlik was - sowat 1000 bladsye, nou dit is net 500. As ek dit weer doen en ek besef, o, Damn, ek het te ver gegaan, ek is in die Ts artikel, ek kan op soortgelyke wyse - figuurlik of letterlik - rip die telefoon boek - dit was eintlik baie makliker daardie tydstip. Ek kan letterlik rip die telefoon boek in die helfte, laat my nou met nie 1000, nie 500 - 250 bladsye. En ek kan 125 gaan, en die ander helfte van daardie, en helfte van daardie, en die helfte van daardie, totdat ek sal gelaat word met slegs 'n enkele bladsy. [Gelag] David Malan: Dit is die deel ek nie op. Een enkele bladsy waarop Mike is hopelik. Nou die verskillende algoritmes kan wees soort van 'n vasgestelde of geëvalueer in verskillende maniere. Die eerste een was baie lineêre, reg? Draai bladsy, kyk vir Mike. Draai bladsy, kyk vir Mike. Dit is baie lineêre. As daar een meer bladsy in die telefoon boek, dit is waarskynlik gaan om my te neem nog 'n tweede, nog een eenheid van tyd, Maar ons is die berekening van die tyd. Sodat ek kan leer soos hierdie hierdie lyn hier waar as die grootte van die probleem toe van links na regs - telefoon boek word kleiner na groter - en die tyd gaan te verhoog die vertikale as, die groter die telefoon boek is. So n is net 'n algemene veranderlike wat rekenaar wetenskaplikes gebruik te verteenwoordig 'n bietjie waarde, 'n paar nommer. So n gaan lineêr toeneem. Dubbel die grootte van die telefoon boek, is dit gaan my twee keer soveel neem tyd, waarskynlik, om uit te vind Mike. Nou ek kon gewees het slim oor hierdie, reg? Ek was verveeld vinnig. Kan dit gedoen word deur twee-twee. So twee bladsye, dan vier, toe ses, dan agt. En ek kon begin vlieg deur dit 'n bietjie vinniger, al is dit teen geringe risiko van oordoen Mike, maar dat kurwe is nie gaan wees al wat verskil. Dit is nog steeds gaan 'n reguit lyn, maar effens vinniger. Maar wat het ek gedoen? Ek het eintlik het iets fundamenteel beter. Ek het bereik wat ons bel logaritmiese tyd, log van n, waardeur hierdie groen lyn het 'n baie, baie, baie minder reguit rand om dit te. En eerder, dit stel, as dit sorteer na oneindig ooit so geleidelik, dat ek kan eintlik 'n 1000-bladsy telefoon boek, dubbel sy grootte volgende jaar - omdat veronderstel 'n baie meer mense beweeg in die dorp. So nou is ek het 2000 bladsye, maar hoe baie meer stappe is dat slimmer algoritme gaan neem? Net een. Ek bedoel, dit is 'n kragtige ding. As ons na 4000 bladsye volgende jaar, wat gaan om my te neem nog net twee stappe. So jy kan gooi groter en groter probleme by my, nie in teenstelling met die web is gooi groter en groter probleme elke dag op Googles en Facebooks van die wêreld, en dit is nie so 'n groot deal. Omdat ek meer gedink en sorg in my algoritme waarmee op te los probleme doeltreffend. En inderdaad, dit sal wees een van die doelwitte van hierdie kursus. Jy sal, langs die pad, leer hoe om te program. Jy sal leer hoe om die program in 'n aantal tale. Maar aan die einde van die dag, die kursus is oor die probleme op te los en om beter op die oplossing van probleme - en, soos in gevalle soos hierdie, probleme op te los meer doeltreffend. Nou tot dusver, het ons nou gedoen redelik intuïtief. Kom ons stel om iets redelik generiese genoem pseudokode. So sal ons uiteindelik kry, in hierdie kursus te verskeie programmeertale. Maar vandag sal ons doen dit in Engels-agtige sintaksis, waar jy net 'n soort van sê wat jy bedoel, maar jy ooit so bondige en jy moenie bekommerd wees oor grammatika en volledige sinne. Jy moet net jouself uitdruk as saaklik as moontlik. So pseudokode is Engels-agtige sintaksis wat verteenwoordig 'n programmeertaal. En in die rigting van die einde, laat my stel voor dat Ons het nou 'n model van die proses het ons net beskryf van die tel van iets 'n bietjie anders, hierdie keer om 'n kyk na hierdie vyf-minute video wat deur ons vriende by die TED wat definieer wat pseudokode is, definieer wat algoritmiese denke is, en selfs al die voorbeeld wat jy oor om te sien is, in sigself, super eenvoudige, dit is gaan om te begin om te gee ons die geestelike model, die woordeskat, waarmee doen baie, baie meer kompleks algoritmes redelik vinnig. [Begin video afspeel] [Speel van musiek] NARRATOR: Wat is 'n algoritme? In rekenaarwetenskap, 'n algoritme is 'n stel instruksies vir die oplos van sommige probleem stap vir stap. Tipies, is algoritmes uitgevoer deur rekenaars, maar ons mense het algoritmes, as well. Byvoorbeeld, hoe sal jy gaan oor die tel van die aantal van mense in 'n kamer? Wel, as jy soos ek is, sal jy waarskynlik punt by elke persoon, een op 'n tyd, en tel van 0. 1, 2, 3, 4, en so meer. Wel, dit is 'n algoritme. In werklikheid, laat ons probeer om dit uit te druk 'n bietjie meer formeel in pseudokode - Engels-agtige sintaksis wat lyk soos 'n programmeertaal. Laat N gelyke 0. Vir elke persoon in die kamer, stel N gelyk aan N plus 1. Hoe om hierdie pseudokode te interpreteer? Wel, lyn een verklaar, om so te praat, 'n veranderlike genoem en N initialisatie die waarde na 0. Dit beteken net dat aan die begin van ons algoritme, die ding waarmee ons is toe 'n waarde van 0. Na alles, voordat ons begin tel, ons het nie getel nog niks. Noem hierdie veranderlike N is net 'n konvensie. Ek kon genoem het dit die nodigste het nie. Nou word twee demarks die begin van 'n lus, 'n reeks stappe wat herhaal n paar paar keer. So in ons voorbeeld, die stap ons neem is toe mense in die kamer. Onder lyn twee is lyn drie, wat beskryf presies hoe ons gaan oor te tel. Die inkeping impliseer dat dit lyn drie wat sal herhaal. So, wat die pseudokode sê, is dat na begin by 0, vir elke persoon in die kamer, sal ons verhoog deur N 1. Nou is hierdie algoritme korrek? Wel, laat ons bang op dit 'n bietjie. Werk dit as daar twee mense in die kamer? Kom ons kyk. In lyn een, ons inisialiseer N 0. Vir elk van hierdie twee mense, Ons het toe inkrementeer N deur 1. So op die eerste reis deur die lus, ons werk N 0-1. Op die tweede reis deur dieselfde lus, ons werk N Van 1 tot 2. En so deur hierdie algoritme se einde, n is 2, wat ooreenstem inderdaad die aantal mense in die kamer. So ver, so goed. Hoe om 'n hoek geval, al is? Veronderstel daar is 0 mense in die kamer - buiten My wat doen die tel. In lyn een, ons inisialiseer N 0. Hierdie tyd, al is, reël drie nie uitgevoer te word nie, want daar is nie 'n persoon in die kamer. En so bly N 0, wat ooreenstem met die aantal mense in die kamer. Eenvoudig, reg? Maar toe mense een op 'n tyd is redelik ondoeltreffend, ook nie? Nee, ons beter kan doen. Hoekom nie tel twee mense op 'n tyd? In plaas van die tel van 1, 2, 3, 4, 5, 6, 7, 8, en so meer, waarom nie tel, 2, 4, 6, 8, en so aan? Dit klink selfs vinniger, en dit is seker. Kom ons druk hierdie optimalisering in pseudokode. Laat N gelyke 0. Vir elke paar van die mense in die kamer, stel N gelyk aan N plus 2. Pretty eenvoudige verandering, reg? Eerder as om telling mense een op 'n tyd, het ons in plaas tel hulle twee op 'n tyd. Hierdie algoritme is dus twee keer so vinnig as die laaste. Maar is dit korrek? Kom ons kyk. Werk dit as daar twee mense in die kamer? In lyn een, ons inisialiseer N 0. Vir dat 'n paar van die mense, Ons het toe inkrementeer N deur twee. En so deur hierdie algoritme se einde, N is 2, wat ooreenstem inderdaad die aantal mense in die kamer. Veronderstel volgende dat daar 0 mense in die kamer. In lyn een, ons inisialiseer N 0. Soos voorheen, nie in lyn drie nie uitvoer Glad nie, want daar is nie enige pare van die mense in die kamer. En so bly N 0, wat inderdaad ooreenstem met die aantal mense in die kamer. Maar wat as daar drie mense in die kamer? Hoe werk hierdie algoritme tarief? Kom ons kyk. In lyn een, ons inisialiseer N 0. Vir 'n paar van die mense, Ons het toe inkrementeer N deur 2. Maar wat dan? Daar is nie 'n ander vol paar mense in die kamer, so word twee geen meer van toepassing nie. En so deur hierdie algoritme se einde, N is nog steeds 2, wat nie korrek is nie. Inderdaad, is hierdie algoritme gesê word karretjie, want dit het 'n fout gemaak het. Kom ons stel met 'n paar nuwe pseudokode. Laat n gelyke 0 vir elke paar van die mense in die kamer. Stel N gelyk aan N plus 2. As een persoon bly ongepaarde, stel N gelyk aan N plus 1. Hierdie spesifieke probleem op te los, het ons bekendgestel, in lyn vier, 'n toestand, andersins bekend as 'n tak wat voer slegs indien daar is een persoon wat ons nie kan paar met mekaar. En so nou is, of daar is een of drie of enige onewe aantal mense in die kamer, die algoritme sal nou hulle tel. Kan ons dit doen selfs beter? Wel, ons kan tel in 3'e of 4s of selfs 5'e en 10'e, maar as dit nie, is dit gaan 'n bietjie te kry moeilik om te punt. Aan die einde van die dag, of uitgevoer deur rekenaars of die mens, algoritmes is net 'n stel instruksies met wat probleme op te los. Dit was net drie. Watter probleem sou jy op te los met 'n algoritme? [Einde video-vertoning] David Malan: Dit is die enigste keer Ek verskyn in strokiesprent vorm. Maar waar dat die storie blare af, nou, is hoe kan ons beter doen? Drieë en viere, eis ons, ons kan tel mense baie vinniger, maar kan ons doen fundamenteel beter as dit? En ek verbintenis wat ons kan. As ons 'n bietjie van ons eie pseudokode hier, ek gaan voor te stel dat ons kan bereik 'n lyn soos hierdie. Ons gaan nie mense om te tel een, twee, drie, vier. Ons is nie van plan om twee te gaan, vier, ses, agt. Ons gaan om te doen nie fundamenteel beter deur rethinking die probleem, en in hierdie geval is, gebruik te maak van 'n andersins onderbenut hulpbron. In net 'n oomblik, ek hoop jy sal vergewe en humor ons by te staan ​​in plek, op watter punt ons gaan vra elkeen van julle te neem in jou verstand om die nommer 1. Jy is dan gaan toenemend ongemaklik, soos die tyd verby, vind iemand anders wat staan, kombineer jou getalle bymekaar deur toe te voeg tot. Een van julle is dan gaan wedloop te sit eers sit en die ander persoon gaan herhaal. So in ander woorde, deur loting al jy met die getal 1, en dan kombinasie van die 1'e in 2's en diegene 2s in 4s, met almal toenemend sit, moet ons aan die einde van hierdie algoritme, het net een lening siel wat gaan sit nie vinnig genoeg, maar wat die hele gehore telling het in sy of haar verstand. So as jy wil, laat ons gaan voort en - stap een - staan ​​in die plek. En uit te voer. [SKARE Verset] David Malan: Weet jy waar Lauren is? 729? [SKARE Verset] David Malan: Alle reg? [SKARE Verset] David Malan: Alle reg, ons moet word nader aan die einde. Ons sien een man wat hier staan ​​steeds. Wie moet anders om te kom saam? As jy ouens wil saam gaan. Iemand het bo-op. Hoekom kan ek nie leen 'n hand hier. Vir die baie min mense wat nog staan, wat getalle doen jy het in jou gedagtes? STUDENT: 78. David Malan: 78 plus - wie staan ​​hier? STUDENT: 39. David Malan: Plus 39. Plus wat anders is nog steeds staan? 81? OK, wie anders? Nog 'n 81? Sjoe. En dan wat is in die rug? STUDENT: 49. David Malan: 49, plus? STUDENT: 98. David Malan: 98 plus? Is dat iemand anders? 12? Goeie werk. [Gelag] David Malan: Ag, 112 - O. Goeie werk! [Gelag] [Applous] David Malan: Iemand anders nog staan? Jammer? STUDENT: 99. David Malan: 99. Enigiemand anders nog staan? En die totale aantal studente hier is eintlik, volgens - het jy 'n getal? O ja, die werklike aantal mense in die kamer, volgens die rekening wat die onderrig metgeselle besig was op almal se manier, was 729. So uit 'n volle kamer van Harvard studente wat hulself getel, het die antwoord is 637. [Gelag] David Malan: So naby. Maar nog steeds. OK, so dit is 'n onderrig oomblik, reg? Dit is nou wat ons beskryf as 'n fout. Iewers langs die pad, ons het 'n paar rekenkundige verkeerd is, of iemand gaan sit het, of verlaat, of iets verkeerd geloop het. Maar dit is goed. Want selfs nog steeds, ons het redelik naby. En Ek wil argumenteer dat ons aan die verkeerde antwoord op 'n baie vinniger as wat ek wil hê gebruik my meer lineêre benadering. So laat ons veronderstel ons het in werklikheid kry wat korrek, maar dink nou oor wat gebeur elke keer, teenoor my eie naïef wys algoritme. Een, twee, drie. As daar wel 729 of 637 mense hier, sou dit my geneem het letterlik 637 of 729 pointings van die vinger en verhoog van my totale telling. En ek kon 'n bietjie beter te doen deur gaan twee, vier, ses, agt, en dubbel wat spoed, miskien selfs driedubbele of quadruple, afhangende van hoe goed ek kan doen wat tel in my kop. Maar hierdie benadering dat jy ouens het was fundamenteel anders. Want aan die begin, almal van julle het opgestaan. So al 729. En dan letterlik half van julle gaan sit. En daarna 'n ander die helfte van julle gaan sit. En daarna 'n ander die helfte van julle gaan sit. En die totale aantal kere wat jy ouens kon gesit het af is ongeveer agt of nege of tien totale keer, afhangende van wat ons totale telling is. En ons kan sorteer doen hierdie die ander kant. As ons het 1024 mense in die kamer, die totale aantal kere wat jy kan halveer 1024 mense is 10. Nou dink oor dit in die ander rigting. Veronderstel, belaglik, wat ons gehad het, sê 4000000000 mense in hierdie kamer, of 'n effens groter kamer. Hoeveel keer sou ons gegaan het deur middel van hierdie algoritme, so dat die helfte van daardie klas sit? Dit gaan slegs 32 sulke te neem bedrywighede, selfs in 'n klas van grootte 4000000000. Hoekom? Omdat 4000000000 gaan na twee miljard, gaan aan een miljoen, gaan aan 500000000, gaan na 250 miljoen, dot, dot, dot. Ek kan dit net doen afdeling sowat 32 keer, op watter punt, almal behalwe een persoon sal gelaat word staan. En dit is ook 'n soort van 'n kragtige idee dat hoe meer sal ons probeer om hefboom in hierdie kursus, en in ontwikkeling en rekenaarwetenskap meer in die algemeen, hierdie kieme van 'n idee met wat kan ons dan probleme op te los baie, veel meer kragtig. So het ons begin eenvoudig met daardie pseudokode en 'n man in 'n kamer, maar nou met 'n hele kamer vol mense het ons gedoen fundamenteel beter. Wel, laat ons nou die oorgang van pseudokode tot 'n werklike kode. Hierdie taal wat jy oor om te sien gebeur genoem te word nie JavaScript, en Ons sal terugkeer na hierdie rigting semester se einde. Dit is 'n programmeertaal wat jy gebruik om webtuistes en ander so te maak sagteware hierdie dae. En ons het dit gebruik het, te danke aan 'n vriend van ons by Stanford, te enkodeer 'n paar verborge inligting hier. Dit is die kuns van steganografie, om so te praat, waar jy kan wegsteek inligting in wat andersins blyk te 'n geraas of 'n heeltemal ander beeld geheel en al. Maar is ingesluit in hierdie spesifieke beeld is inderdaad 'n geheime boodskap van spesies. So laat my gaan voort en trek dieselfde beeld hier, hierdie keer in 'n webblaaier. En ek gaan my hand te beweeg na 'n paar van die besonderhede vir vandag, veral Vir dié van julle wat dit lyk soos nie net JavaScript maar Grieks, as 'n heeltemal onbekende taal. Maar dit is 'n voorbeeld van 'n programmeertaal. En vir nou, neem op die geloof wat die eerste reël van die kode - en deur die kode, het ek net beteken teks. Teks wat ek letterlik kon getik het in Microsoft Word, as ek die regte sagteware om dan iets te doen met dit. Programmering bron kode, ontwikkeling kode, is eintlik net die teks, en dit lyk anders wat gebaseer is op die taal wat jy gebruik, nie in teenstelling met Engels en Spaans en Russies almal anders lyk wanneer jy tik op jou sleutelbord. So die eerste lyn, want nou neem geloof, maak net 'n grafiese uit die internet, wat lawaaierige grafiese Ons het nou net gesien het. Hierdie volgende reël hier is 'n voorbeeld van 'n lus, en ons eintlik sien dat dieselfde jargon in die TED video. 'N lus is iets wat weer gebeur en weer, en selfs al is dit absoluut lyk kripties, met die navraag vir, en 'n paar hakies, en sommige kommapunte. Ons kom terug na wat voor lank, maar dat lus daar is in wese vertel van die program, Itereer oor die hele van daardie lawaaierige kolle, van links na regs, bo na onder. Want aan die einde van die dag, 'n beeld soos hierdie - en jy kan eintlik soort van sien dit op hierdie projektor - is eintlik net 'n rooster van punte. So ons kan identifiseer elk van die punte deur 'n koördinaatstelsel, x, y, en met hierdie program, kan ons nou begin om te om iets te doen aan diegene kolle. So wat ek gaan om voort te gaan hier en nie, is ek gaan 'n paar veranderinge aan te bring. Eerste Ek gaan om voort te gaan en ontslae te raak van al wat groen en blou geraas, en ek gaan om voort te gaan en tik die volgende weliswaar kriptiese sintaksis. im vir die beeld. stel blou op plek x, komma, plek y, na 0. Met ander woorde, ek wil net draai af al die blou punte in die foto. Ek gaan om voort te gaan nou en klik hierdie Run / Save-knoppie, en jy sal kennisgewing aan die regterkant, die gevolglike beeld verskyn. Nou is sy super groen, maar dit is nie verbasend nie, want ek het letterlik af, deur die maak van 'n 1 'n 0, al die blou in die foto. Wel, nou kom ons doen dit 'n bietjie meer. im vir die beeld, dot setGreen, x, y. En dit beteken dat net iteraat van links na regs en dan bo tot onder. Draai dit af met 'n waarde van 0, as well. Red. En op die projektor, kan jy nie eintlik regtig iets sien nie. Op my laptop skerm, as ek loer in net op die regte manier, kan ek sien 'n bietjie van 'n beeld, want hulle is nog steeds 'n paar rooi in daar. As jy al ooit gehoor van die afkorting RGB - rooi, groen, blou - dit verwys na die samestelling van 'n beeld met behulp van net die drie kleure. En nou het ons weggegooi al die groen, al die blou, maar daar is nie veel rooi. So laat my crank op die rooi. Hoe kan ek dit doen? Wel, die eerste, ek gaan om te vra hierdie program 'n vraag. Ek gaan om voort te gaan en laat ons noem dit 'n veranderlike, net soos in algebra. Jy kan x of y of z. Ek gaan 'n veranderlike te verklaar en sê, sit in hierdie veranderlike, tydelik, die waarde van die beelde getRed waarde by x, y. En weer, sal ons terug te kom na al van hierdie detail in die toekoms. Maar vir nou, net om op die geloof wat hierdie lyn is vra die program, wat is die rooi waarde op x, y? Op daardie spesifieke dot? Dan gaan ek om iets te doen om dit te. Dan gaan ek beeld dot stel rooi te doen by x, y, y, maar hierdie keer gaan ek versterk dit deur dit te doen rooi tye, kom ons sê, 10. So verhoog dit met 'n faktor van 10. Laat my uitzoem nou en kliek kon loop / Save. En siedaar, wat daar was die hele tyd, selfs al is ons menslike oë kon nie heeltemal sien. So weereens, dit is nou die werklike kode, 'n voorbeeld van 'n taal wat ons sal kom terug na voor lank. Maar besef, veral dié van julle met geen sodanige ondervinding, is dit baie gou dat ons onsself sal wees kode skryf soos dit daar. In werklikheid, 'n instrument waarmee jy al ietwat vertroud is, miskien, is CS50 se eie koers-shopping instrument, wat eintlik weer begin hierdie somer deur sommige van CS50 se eie oud-studente, nou draai TFS. So gebeur dit na 'n webwerf gebou word in 'n taal, die sogenaamde PHP. Dit maak gebruik van 'n databasis genaamd MySQL, dinge waarmee ons ons hande vuil later in die semester. Maar glo dit of nie, selfs iets soos dit verminder uiteindelik tot die eenvoudigste van lusse en voorwaardes en takke, soos dié wat ons gesien het net 'n oomblik gelede in die TED video. Wat ek gedink ek wil doen, is nou deel nie net iets wat ons die personeel het vir die kampus nie, maar eerder iets 'n voormalige student - drie studente, in werklikheid - het die afgelope jaar, Sierra, Daniël en Sam, die laaste van hulle het geen vorige programing ervaring toe hy CS50. En vir hul finale projek, het hulle uitgestal word, by die CS50 Fair, 'n aansoek genoem wrdly, wat 'n web-gebaseerde program waarvoor hulle gemaak hierdie video wat ek gedink ek wil deel te gee jou 'n gevoel van net wat moontlik deur die term se einde. [Speel van musiek] David Malan: Dit is van Week Zero om Week 12 die afgelope jaar. [Applous] David Malan: As 'n teaser, ook werklik aan te wakker om jou eetlus is na wat moontlik is, kan jy reeds gesien het, of dalk binnekort sien, market.cs50.net, 'n Nuwe instrument dat die kursus se span het is besig om op, hierdie keer in samewerking met Harvard Student Agentskappe, soos dat die begin van die jaar en voortgesette hopelik in hierdie komende somer sal jy het 'n standaard geleentheid om op kampus te koop en verkoop dinge van belang is vir jou. En met die vennootskap deur HSA, sal jy ook in staat wees om items af te laai in een van HSA se fisiese winkels op 'n sekere punt in die toekoms, so as te volmag dinge, veral as jy gradueer en nie noodwendig wil gooi dinge, maar eintlik betaal om dit stuur na mense wat kan volg hier op die kampus. So meer oor dit te kom. Maar 'n bietjie meer konkrete, 'n instrument wat kom uit CS50 in onlangse jaar, met wat sommige van julle kan wees bekende en ander van julle kan wees googlen nou, op CS50.net/2x, sal jy 'n skakel na 'n Chrome uitbreiding wat demonstratiewe van hoe jy kan gebruik JavaScript, wat dieselfde taal wat ons gebruik word met die Eiffel-toring 'n oomblik gelede 2x afspeel spoed te implementeer vir alle Harvard iSites videos. Dit is iets wat gebou in CS50 se eie video-speler. Maar dit is ook aan as jy begin grawe in die bron-kode, wat ons gelukkig beskikbaar te maak, sal jy sien hoe jy kan selfs probleme op te los soos dit, versnel widgets in webwerwe met wat jy reeds goed vertroud is. So 'n woord nou op die baan en verwagtinge en wat nog voorlê. In die algemeen, ons sal wel hier bymekaar op Maandae en Woensdae - al hierdie Vrydag, sal ons bymekaar omdat van Shopping Week - 1:00-14:00, alhoewel soms tot 02:30. Gegee dat jy dus kan of wil het 'n paar klas te neem om 02:00 af, of selfs voor, besef nie die Natuurlik is ondersteunend van wat genoem gelyktydige registrasie, waardeur ons sal ondersteuning van 'n petisie aan die Ad Raad en jou inwoner dekane namens u indien jy het 'n konflik iewers in hierdie 1:00-02:30 reeks. Kop aan dat URL aanlyn verdere besonderhede. Maar in terme van die ondersteuning struktuur wat kenmerkend CS50, vir studente meer en minder gemaklik gelyk, ons bied duidelike spore van artikels. En dit is 'n paar weke af, maar kort voor lank, sal jy gevra word om te jou comfort vlak. Is jy onder diegene wat minder gemaklik, meer gemaklik, of iewers tussen in? En ons sal drie afsonderlike spore wat voorsiening maak vir juis daardie gehore. So op geen punt in die kwartaal moet jy selfs voel soos jy meeding teen enige student met meer min of agtergrond as jy. Inderdaad, is die kursus bedoel om te wees baie meer samewerking en veel meer oop as dit. In terme van die probleem stelle, sal jy vind ook dat bykomend tot die standaard uitgawe van elke week se probleem stel, daar is dikwels 'n "hacker uitgawe "wat bedoel is om te word geteiken op die 5% tot 10% of so van die demografiese wie is inderdaad onder dié meer gemaklik en wil graag meer van 'n uitdaging as die standaard uitgawe van die pset verwag. Meer besonderhede oor dié wat vir gevind in die leerplan. Maar ook daar gevind kan word besonderhede oor die kursusse laat dae. Tipies probleem sit is die gevolg op Donderdae. Jy kan egter verleng baie van jou deadlines hierdie val uit Donderdae om Vrydae net deur ons te ontmoet halfpad, om so te praat, beantwoord 'n paar warm-up vrae in 'n paar van die week se probleem stelle, wat outomaties dan gee jy 'n ekstra 24 uur. Ons sal ook daal jou laagste telling, soos per die leerplan. Om jou 'n gevoel van wat die probleem stelle is - want dit is inderdaad die kursus se probleem sit dat uiteindelik byna elke definieer student se ervaring, meer as lesings, meer as afdelings, meer so as die meeste ander aspek van die kursus. Verlede jaar, byvoorbeeld, het ons begin, soos Ons sal hierdie jaar begin, met krap. Veral hierdie Vrydag, sal ons gebruik, net een dag se tyd, 'n grafiese programmeertaal, waarmee ons sal begin ontwikkeling deur te sleep en val stukke van die legkaart dat slegs vergader fisies as dit sin maak om dit logies te doen. Volgende week, sal ons vinnig oorgang na C, 'n redelik oud, maar baie klein en eenvoudige taal wat jou sal toelaat om ons te werklik gaan 0-60 oor die verloop van net 'n paar weke, en dan parlay diegene wat dieselfde vaardighede en kennis van om basiese konstrukte in hoër-vlak tale soos PHP, JavaScript, en nog ander nog steeds. Verlede jaar, die derde pset in die loop was dié van kriptografie, 'n domein-spesifieke aansoek waardeur ons studente uitgedaag om enige te implementeer aantal karakters, programme waarmee te klouter of ontleden inligting, om dit te enkripteer. Vir die hacker uitgawe, daarenteen, ons het die hacker studente 'n lêer van 'n standaard Unix rekenaar met gebruikers name en wagwoorde, die laaste wat was geïnkripteer, en ons uitgedaag om die hacker studente te decrypt, as die beste wat hulle kon, diegene wagwoorde, nog steeds op daardie dieselfde domein. Geskarrel, 'n spel met 'n paar wat van julle is dalk bekend. 'N forensiese stuk, waar ons vra studente data wat was om te herstel andersins verwyder uit my eie digitale kamera se kompakte flits kaart, deur eintlik skryf sagteware om uit te vind, Waar was die nulle en ene in dat die digitale kamera wat voorheen saamgestel uit 'n JPEG prent? 'N uitdaging van die spesies verlede jaar met die skryf van die vinnigste speltoetser moontlik meeding teen vriende en klasmaats as hulle wil. Implementering van Huff 'n pofadder, 'n kompressie-program. En dan eindig die semester met CS50 Finansies, 'n web-gebaseerde program met wat jy 'n Etrade-agtige webwerf te koop en verkoop aandele, so te praat, deur eintlik trek byna real-time kwotasies Yahoo! Finansier. Wat ons nie gedoen het nie verlede jaar was een probleem stel wat oorbly nietemin 'n gunsteling. As jy nog nooit weg te shuttle.cs50.net, sien jy 'n gebruiker koppeling tussen 'n bietjie soos hierdie. Maar twee jaar gelede, het die klas geïmplementeer word, met behulp van Google Maps en die Google Earth plug-in en 'n bietjie van vaardig met die ry om die kampus, sodat die doel van die spel was, as jy kan sien 'n paar van die gesigte, is om te ry om die kampus op soek na personeel, onderrig maats en geoktrooieerde rekenmeesters, en wanneer jy dit doen, om hulle op jou shuttle bus. Nie een van hulle eintlik lyk om hier te wees, so ons gaan 'n oneerlik kode in te voer. [Gelag] David Malan: Daar gaan ons. Alle regte. En hier is nou die personeel gedraai soos oral op kampus. En soos jy kan sien, op die regterkant kant van die skerm, die bus het leë sitplekke. En die doel was om die te skryf kode waarmee dit na te boots ry en optel en laat val af van die passasiers. Dat 'n mens ook, met behulp van 'n taal genoem JavaScript. So besef dat programme soos wat wees op ons dieselfde trajek hierdie jaar, as well. In terme, nou, van bykomende ondersteuning, ons het kantoorure. As jy dalk gesien het in jou eie huis eetsaal of in Annenberg, sal ons in die huis eet sale vier nagte 'n week - Leverett, Pfoho, Eliot en Annenberg hierdie jaar, 20:00-23:00. En wat ons gedink het ons wil hierdie jaar te doen is iets wat 'n bietjie anders. As jy gehoor dreunings verlede jaar dat dit was 'n bietjie te spanningsvol, hierdie jaar se kantoorure, as ons sal beskryf volgende week, sal meer organiese, waardeur by aankoms, sal jy gestuur na 'n spesifieke tafel waar verskeie personeellede wag, en ons sal dit doen dinge baie meer organies. Geen meer ry nie, nie meer iPad, maar eerder meer intieme gesprekke rondom 'n tafel van net agt of so studente, sodat ons benader die gevoel van wat andersins sou 'n veel kleiner klas wees. Ons bied, asook, hierdie dinge is ons genoem ipv, video verfilm in bevorder deur een van die kursus se onderrig maats Zamyla, waarin sy stap vir stap deur die week se probleem stelle, bied wenke en truuks vir die uitdagings wat voorlê. En omgekeerd, na die probleem stelle is as gevolg van hierdie jaar, sal ons ook vry bietjie knipsels noem nadoodse ondersoeke wat eintlik loop jy deur verteenwoordiger oplossings, beide goed en sleg, via wat jy kan aflei hoe jy kan hê of behoort te hê geïmplementeer om jou eie oplossing. En wat ons sal bied vir die eerste keer hierdie jaar so goed, veral vir studente wat hulself maak van die kursus se ander hulpbronne, maar tog sukkel al te veel, die loop self sal paar diegene studente, soos hulpbronne dit toelaat, met tutors sodat jy het 'n baie meer intieme geleentheid as huis eetsale voorsiening te maak vir een-tot-een-hulp. Nou 'n finale blik op 'n sekere van die einde speletjies in sig nie. Jy mag dalk vertroud wees met die CS50 Hackathon. Wel, kom hierdie Desember, van 08:00 PM om 07:00, by die begin van Lees tydperk sal 'n geleentheid wees in te samel met klasmaats - dit sou wees om 21:00 - waartydens jy duik in jou finale projek se implementering saam klasmaats, vriende, en voedsel. Dit sou wees om 01:00, wanneer die eerste groep van voedsel aangekom het. En dit is omtrent 04:00 wat betrokke jaar by die CS50 Hackathon. Maar die ware hoogtepunt van die kursus is bedoel om die CS50 Fair, 'n kampuswye uitstalling van jou eie finale projekte, wat familie en vriende is almal genooi, as ons werwers en ons vriende uit die bedryf. Dit, byvoorbeeld, is 'n blik op die 2000-plus mense wat bygewoon het verlede jaar. Uitdrukkings soos hierdie is nie ongewoon nie, en net so doen jou klasmaats verlustig in dinge jy bereik het. En eintlik, in die rigting van die einde, ons het 'n begin-van-kwartaal geval, as well. As dinge soos hierdie 'n beroep op jou, of jy ten minste nuuskierig wat Jy moet dan weet dat 'n nuwe tradisie van die Natuurlik is genoem CS50 legkaart Day. En dit is 'n paar van die ingestel jaar terug om werklik sein na die kampus dat die rekenaar wetenskap is nie oor programmering, en dit is beslis nie oor die aanvaarding van slegs daardie studente oor vorige ervaring het. Dit is regtig oor die probleem op te los meer in die algemeen. En so legkaart Day, oor die afgelope paar jaar nou, het ontwikkel in 'n mooi vennootskap met ons vriende by Facebook, waardeur daar sal heerlik wees pryse en pizza oor die rivier by die i-laboratorium eerskomende Saterdag. Kop aan dat URL met twee of drie vriende as jy wil graag om deel te neem in hierdie nuwe tradisie. So ek wil graag vra dat jy een ding in gedagte, en ons het net 'n perfekte twee minute clip waarop te sluit vandag. 73% is die nommer om te onthou. Koek, sal ook wag jy buite hierdie dwars as ons verdaag in net 'n paar oomblikke, wat is 'n tradisie van die kursus, as well. Maar dit is die sleutel aanhaling uit die Natuurlik se leerplan in gedagte te hou. Wat belangrik is, uiteindelik in hierdie kursus is nie soseer waar jy beland relatief tot jou klasmaats maar waar jy, in Week 12, beland met betrekking tot jouself in Week 0. Maar die blik dat ons jou sal laat met vandag hier is die laaste een hier deur ons dieselfde Daniel, wat het die wrdly video net 'n oomblik gelede. Ek los jou met hierdie blik van wat voorlê. En as ons dit doen, as ons kon CS50 personeel van die voorkant van die kamer om te kom op tot op die stadium al te verf die meer van 'n visuele prentjie te wat vir jou wag vanjaar - kry ongemaklik. Ons sal afsluit met hierdie hier op die skerm. [Speel van musiek] David Malan: Dit is CS50. [MUSIEK - mat & Kim, "dit is in orde"] Spreker 1: Ek is mal CS50 meer as katte. Spreker 2: Whoaaaa! [Gelag] David Malan: Dit is dan, is CS50. Ons sal sien dat jy op Vrydag. [Applous en die gejuig] NARRATOR: By die volgende CS50, 'n verhoog demo gaan nie soos beplan. David Malan: Ons wil Mike te vind Smith in die telefoon boek. Wel, wat is jou instink? Ek kan rofweg spring tot in die middel van die telefoon boek, oë neer, sien dat Ek is by M, en ek weet nou dat Mike Smith is nie aan die linkerkant. Hy moet na die regterkant. En so op hierdie punt, ons kan letterlik skeur - Op hierdie punt, ons kan letterlik skeur - Op hierdie punt, ons kan figuurlik skeur die telefoon boek in die helfte. [Ukelele getokkel]