[Muziek] [MUZIEK - Rossini, "RANZ DES VACHES "VAN WILLIAM TELL] [MUZIEK - HET ENGELS BEAT, "MAART VAN DE kantelkoppen "] [Applaus en gejuich] DAVID Malan: Dus dit is CS50. Mijn naam is David Malan. En 73% van u nog geen ervaring met de informatica, in tegenstelling tot wat je zou denken. Dus vandaag hebben we dachten dat we zouden een chip weg op dat gebrek aan vertrouwdheid, maar ook geven je een gevoel van, voor degenen onder u met meer comfort, welke richtingen U kunt dit semester gaan. Dus laten we beginnen met deze. Ik heb echt geen idee wat er in een computer, ook al, net als u, ik gebruiken het elke dag. Maar het is een soort doos, en er is niet veel ingangen in. Minimaal, er is, wat? Waarschijnlijk een stroomkabel. En inderdaad met dit ene ingrediënt, elektriciteit, lijken we in staat te zijn het doen van heel wat deze dagen. Maar aan het eind van de dag, we hebben om de dingen te vertegenwoordigen dat we de zorg over. We moeten informatie vertegenwoordigen in een bepaalde vorm. En je bent waarschijnlijk op zijn minst vaag bekend met het idee van binaire of stukjes of andere manier, computers gereduceerd tot nullen en enen. Maar we kunnen omarmen dat en ten minste zet een beetje licht aan dat? Dus ik heb deze kleine bureaulampen hier. Ik heb hier een stopcontact. En ik ga dat in voorstellen mijn computer ten minste een deze dingen, wat staat worden in-of uitgeschakeld. In dit geval is het inderdaad een desk lamp, maar op het lagere niveau, het is iets genoemd transistor. Maar in onze wereld, het is een bureaulamp, dus Ik ga om te gaan en sluit deze in mijn elektriciteit hier. En ik beweer dat met behulp van deze eenvoudige, eenvoudig apparaat, deze eenvoudige schakelaar, I kan informatie vertegenwoordigen. Bijvoorbeeld, op dit moment, ben ik wat neerkomt op niets, toch? Ik vertegenwoordig wat ik bel 0 of vals, het tegenovergestelde van iets daadwerkelijk aanwezig zijn. Maar als ik draai gewoon deze schakelaar, nu heb ik voorgesteld een 1. Dus met behulp van deze zeer eenvoudig stuk geheugen, als je wil, kan ik vertegenwoordig gegevens. Nu helaas, mijn computer kan niet zo heel veel. Het kan slechts twee waarden vertegenwoordigen in de hele wereld - 0 of 1. Maar wat is een voor de hand liggende oplossing, nu, als we willen uitbreiden onze computer geheugen en vertegenwoordigen meer dan 0 en 1? Nou, laten we het pak nog zo'n beetje. Laten we pakken een andere schakelaar, een andere transistor, maar u wilt denk erover na. Laat me ga je gang en sluit deze in mijn computer ook. En ik ga conclusie, nu, dat door met behulp van een beetje meer elektriciteit en meer van deze schakelaars aan-en off, kan ik nog meer zulke vertegenwoordig gegevens. Dus nu, dit is 1. Als ik nu wil vertegenwoordigen 2, Ik zou dit kunnen doen. Maar meestal, conventie, zoals we zullen uiteindelijk zie, zal ik dit doen. Dus dit is 0, is 1. Dit zou 2. En niet verrassend, dit zou zijn 3. Dus op deze manier, nog, kan We tellen nog verder? Als ik een derde bit, een derde schakelaar, wat is het hoogste aantal dat kan ik nu tellen tot van 0? Dus 7 als ik ben beginnen bij 0, toch? Want als ik dit licht op en eigenlijk sluit deze derde en laatste licht in mijn stopcontact hier, dan heb ik de mogelijkheid om te vertegenwoordigen geven twee waarden hier twee waarden Hier, twee waarden hier - en zo kan ik 2 maal 2 maal vertegenwoordigen 2 of acht mogelijke waarden. En als ik begin boekhouding bij 0, dus dat is 0, 1, 2, 3, 4, 5, 6, 7. Dus dit binaire. Het is echt zo simpel als dat. En ik zou beweren dat dit eigenlijk heel vertrouwd voor de meeste iedereen in deze kamer. Laat me ga je gang en open een weinig tekst editor hier. En je zou kunnen herinneren van de lagere school dat we dingen als de honderden plaats, de tienen plaats, en degenen plek. En herinneren dat als je wat decimale gehad nummer, als iets willekeurig zoals 123, je zou wezen schrijven dat in de vorm van deze drie kolommen. En waarom is 1, 2, 3 wat wij kennen als 123? Nou, in de linkerkolom, hebben we een 100 plus twee 10s, dus dat is 120, plus drie 1s, dus dat is 123. Nu deze wereld die we gewoon verlicht is hetzelfde als u bekend met geweest voor jaren, behalve nu, onze columns zijn geen machten van 10. Ze zijn gewoon machten van 2. Dus terwijl dat zijn degenen plek, dit gaat het Tweeën plaats, dit is gaan naar de fours plaats. En omdat ik alleen met behulp van de eenvoudigste van mechanismen om dingen te draaien aan en uit - elektriciteit stroomt of elektriciteit stroomt niet - Ik ben het niet helemaal dezelfde expressieve bereik als 0 tot en met negen. We gaan het super simpel te houden in deze wereld van computers. Ik heb alleen 0 of 1 - aan of uit, valse of echte. En dus wat ik nu wat neerkomt is 1, 1, 1, omdat elk van deze verlichting wordt verlicht. Nou, dat geeft me een 4 plus een 2, dus dat is 6, plus een 1, en dat is 7. En ergo doet deze reeks van drie representeren het nummer 7. Dus al die tijd, de binnenkant van uw computer, hebben een aantal van zijn transistors, willekeurig aantal bits. Maar aan het eind van de dag, we kan informatie vertegenwoordigen zo eenvoudig als dat. Nu helaas hebben we alleen geteld tot 7 in CS50 tot nu toe, maar hopelijk kunnen we een beetje doen beter dan dat. En inderdaad kunnen we. Stel dat wij als mensen gewoon willekeurig besloten dat we gaan getallen associëren zoals 1 en 2, 3, 4, 5, 6, 7, specifieke brieven het alfabet. En om historische redenen, ga ik start enigszins arbitrair, maar ik ben gaan zeggen, de mens, gaan we beslissen als een standaard, wereldwijd, dat 65 staat voor het nummer van de letter A. 66 zal vertegenwoordigen B. Punt, punt, punt. 90 zal de letter Z. vertegenwoordigen En stel dat, als we echt zetten wat dacht in het, kunnen we komen met nummers voor uitroeptekens en kleine letters, en inderdaad, andere mensen hebben dat voor ons gedaan. Dus nu hadden we stukjes waarmee we kunnen vertegenwoordigen getallen, getallen waarmee we kunnen letters staan, en met brieven kunnen we nu beginnen met componeren e-mails en afdrukbare tekens op het scherm. Dus laat me uit te nodigen, als ik kon, acht dappere vrijwilligers - die het niet erg te zien zijn niet alleen on camera maar op het internet - om hier te komen en vertegenwoordigt acht dergelijke bits in plaats van deze drie. Dus hoe zit een, twee? Hoe zit het met drie? Hoe zit het met vier in het licht blauw, vijf op het einde? Over iemand hierheen? Zes vooraan, zeven vooraan, en acht tegen de voorkant ook. Dus ik gewoon zo toevallig bereide komen met een hele hoop van papiertjes. En op deze stukjes papier zijn nummers dat vertegenwoordigen wat columns jullie gaan vertegenwoordigen. Dus je zal zijn - wat is je naam? STUDENT: Anna Leah. DAVID Malan: Anna Leah, je de 128s kolom zijn. Je bent? STUDENT: Chris. DAVID Malan: Chris zal als 64s kolom. Je bent? STUDENT: Dan. DAVID Malan: Dan zal als 32s kolom. STUDENT: Pramit. DAVID Malan: Pramit zal als kolom 16s. STUDENT: Lillian. DAVID Malan: Lillian zal de 8s zijn. STUDENT: Jill. DAVID Malan: Jill zal als 4s kolom. STUDENT: Mary. DAVID Malan: Mary zal de 2s, en? STUDENT: David. DAVID Malan: David zal als 1s kolom. Dus als jullie een beetje kon stappen naar voren zodat iedereen kan zien. Wat jullie niet zien is dat op de achterkant van deze stukjes papier is een weinig spiekbriefje dat gaat instrueren deze acht bits of steken hun hand of niet steken hun hand op. Als hun hand omhoog gaat, zijn ze die een 1. Als hun hand blijft naar beneden, ze zijn wat neerkomt op een 0. Ondertussen hebben we dat het publiek in staat om erachter te komen, op basis van deze mapping, wat drie-letter woord van deze mensen staan ​​op het punt aan te geven. Dus in slechts een moment, je gaat lees de eerste regel van de achterkant van je spiekbriefje, en je bent ofwel gaat je hand op te steken of niet verhogen. Als je een 1, je verhogen, indien je bent een 0, daar sta je onhandig, net als dat. Gaan. Welk nummer, eerst en vooral, zijn deze jongens vertegenwoordigen? 66. 66, toch? We hebben een 1 in de 64s kolom, een 1 in de kolom 2s. Dat geeft mij 66, dus dat wordt weergegeven te vertegenwoordigen B. So jullie hebben gespeld - OK, dat is genoeg. B. Dus laten we nu verhuizen naar onze tweede brief. Gaan. Wie is snelste in wiskunde hier? So 79. Nogmaals, als we optellen alle kolommen waarbij er een 1, momenteel, net zoals we deden voordat met de eenvoudigste voorbeelden van 7, we nu krijgt het nummer 79. Die volgens onze mapping is de letter O. Dus we zijn er bijna. B, O. En tot slot, te gaan. Wat zijn ze nu vertegenwoordigen? Minder consensus. Dat is gewoon een absolute gemompel. Ja, het is in feite 87. Goed. Dus als we nu in kaart die terug tot - laten we beginnen te roepen en onze ASCII grafiek, American Standard Code for Information Interchange. Dat geeft ons de letter - niet "bo", maar "boog." En dat is een perfecte cue voor jullie om een ​​boog te nemen en hoofd op rug. Heel hartelijk bedankt. [Applaus] DAVID Malan: Je kunt ze houden. Hoewel eigenlijk, zou iedereen als een bureaulamp, ook? [HOOT VAN PUBLIEK] DAVID Malan: Desk lamp? [Lachen] DAVID Malan: Echt waar? Bureaulampen voor iedereen? Oke. Dus beginnen met het eenvoudigste principes, we hebben nu niet alleen geteld up van 0 helemaal tot 7, we hebben aangenomen dat alleen door het gooien van meer bit of meer lampen of meer transistoren naar dit probleem, kunnen we vertegenwoordigen groter en groter nummers, en ergo, groter en groter bereik van alfabetten, zoals het Engels. En gewoon laten we over geloof voor vandaag dat eveneens konden we beginnen aan afbeeldingen en video en alle vormen aantal andere media waarmee we vertrouwde vandaag. Dus dit is CS50, en in deze klasse naast je, nogmaals, heel veel klasgenoten die zo weinig ervaren als jij. En ik zeg dit alleen omdat heel Vaak, zoals recentelijk in een van de eerstejaars adviseren evenementen en bij tweedejaars afgelopen voorjaar is het adviseren evenement, horen we vaak studenten wijzen wanneer komen aan de CS tafel, goed, Ik heb nagedacht over het nemen van deze intro klasse, maar ik ben niet echt een computer persoon. Of, maar iedereen zeker weet meer dan ik. En ik zet dit in het grootste lettertype mogelijk, om deze boodschap over te brengen dat dat is in feite niet het geval. En als je je afvraagt, moet I, in feite, zijn hier? Beseffen dat niet alleen is het deze cursus titel Introduction to Computer Wetenschap, het is Introduction to Computer Wetenschap I. Er is dus inderdaad een tweede dergelijke introductie. Dus je bent niet, in feite, op de verkeerde plaats. En onder de doelen die ik heb voor vandaag zijn om dergelijke gerust te stellen u zou kunnen hebben, maar ook een verf beeld van wat in petto voor studenten minder en comfortabeler gelijk in deze cursus. Maar eerst, een woord op een van de handouts je hebt vandaag, waaronder zijn een aantal veelgestelde vragen. Het is al een visie van ons voor enige tijd nu een nieuwe indeling te introduceren optie in deze cursus - namelijk, SAT / unsat. Filosofisch voor mij, het is nog veel, veel belangrijker dat de studenten in deze klasse te gaan met de materiaal, worden aangevochten door de materiaal, en maken zich zorgen veel, veel minder over de mechanica van de werkelijke scores en brievenrangen bij semester end, maar echt omarmen de cursus en zijn materiaal. En echt dit voelt, meer in het algemeen, voor wat interessant is aan hen, aan voelen zich uitgedaagd en beloond, maar zonder angst om te falen. En inderdaad, ook dit is een terugkerend thema in deze en andere inleidende cursussen op andere gebieden, die je hebt Deze schroom als het gaat om zetten iemands tenen in onbekende wateren. Ikzelf, terug in 1995, was een eerstejaars. Ik was sterk gericht op het zijn een Gov concentrator hier. En toch zou ik altijd opgegroeid met een beetje van een belang in de informatica. Ik was altijd nieuwsgierig. Maar toen, zelfs, ik deze angst had zelfs een voet in CS50, zoveel zodat ik niet eens winkelen het eerste jaar. En de enige reden dat ik een voet in de deur tweede jaar was omdat ik mocht nemen pass / fail. Maar zelfs pass / fail nodig die ik krijg de moed om een ​​afspraak te maken met professor Kernehan op het moment, breng dit grote vel papier, en vraag hem voor zijn handtekening en zijn toestemming om te verkennen deze onbekende wateren. En het heeft niet geholpen in de afgelopen jaren dat wanneer je dit doet in CS50, wanneer we vroeger goed / fout, eveneens zou tientallen of honderden van je klasgenoten moeten komen, God verhoede, bij de voorzijde van Sanders met dit formulier, dat in sommige geesten vertegenwoordigt een onvermogen, Ik durf te zeggen, om te presteren zijn niveau van uw collega's '. Dat is belachelijk, maar ik denk er is die mentaliteit. En er is nog nooit in deze cultuur geweest van SAT / unsat, of pass / fail meer algemeen, in deze cursus, of echt op deze campus. Dus dit jaar hebben we dat veranderd. Ik zou extatisch helft van zijn deze klasse of meer afgesloten up nemen van CS50 SAT / unsat. In een jaar tijd, het zou prachtig zijn als bijna iedereen is. Daarna misschien gaan we werken op brievenrangen aan Harvard College meer in het algemeen. Maar voor nu, zullen we dit doen binnen onze eigen sfeer, en ik zou harte raden u aan deze veelgestelde vragen beoordelen en vragen stellen als het je past, zodat hopelijk heb je, in tegenstelling tot mij, zal niet helemaal hebben diezelfde angst factor bij verkennen wat is waarschijnlijk een onbekende plaats. Dus wat is CS50? Het is een inleiding tot de intellectuele ondernemingen van computer wetenschap en de kunst van het programmeren. Maar wat betekent dat eigenlijk? Nou, tot zover, we praatten heel kort over de representatie van informatie. Maar stel dat we eigenlijk willen om iets mee te doen. We moeten het begrip te introduceren wat we een algoritme zullen noemen. Een algoritme is een procedure, een proces, een reeks instructies voor iets te doen. En een algoritme kan iets super eenvoudig. Bijvoorbeeld, een voorbeeld dat sommige van u misschien bekend zijn, is dit ding hier. Dus dit boek is hier steeds gedateerd, maar Once upon a time, het een heleboel namen bevatte en telefoonnummers. En inderdaad, als ik wilde weten iemand in dit telefoonboek - zeggen, iemand met de naam Mike Smith - Ik kon Mike Smith vinden in een aantal van redelijk simpel manieren. Ik zou beginnen bij het begin en ga naar pagina 1, niet daar. Pagina 2, niet daar. Pagina 3. Is dat algoritme dat wordt proces, juist? Dus het is juist, toch? Ik ben een beetje een idioot om dat te doen in die manier, maar uiteindelijk zal ik vind de achternaam S, en hopelijk Mike is in die sectie, en ik zal worden gedaan met mijn algoritme. Maar zeker het is niet intuïtief. De meeste elke redelijke mens in deze kamer zou dat niet hebben gedaan. Wat zou jij gedaan hebben? Je zou rechtdoor zijn gegaan naar het midden, rechts? Ruwweg naar het midden. En realiseer je, oh, dit zijn de Ms Dus Mike Smith, achternaam zijnde Smith, is niet duidelijk, vandaar in de linker helft van het boek. Hij moet in de richting van de S is in de juiste. En op dit punt, hoewel de meesten van ons doe dit niet in de werkelijkheid, kunnen we letterlijk scheuren dit probleem in de helft. [Gejuich en applaus] DAVID Malan: Dank je wel. [Gejuich en applaus] DAVID Malan: U kunt letterlijk scheuren deze probleem in de helft, waardoor ik met, letterlijk, een probleem half zo groot. Dus als dit telefoonboek was - en het Waarschijnlijk was - ongeveer 1.000 pagina's, nu het is slechts 500. Als ik dit doe weer en ik realiseer me, oh, damn, ik ging te ver, ik ben in de Ts sectie, ik kan net - figuurlijk of letterlijk - rip het telefoonboek - het was eigenlijk veel gemakkelijker die tijd. Ik kan letterlijk rippen het telefoonboek in de helft, waardoor ik nu met 1000 niet, niet 500 - 250 pagina's. En ik kan gaan 125, en de helft van dat, en helft daarvan, en de helft van die, totdat uiteindelijk zal ik blijven zitten met slechts een enkele pagina. [Lachen] DAVID Malan: Dat is de deel ik niet op. Een enkele pagina waarop Mike hopelijk is. Nu deze verschillende algoritmen kunnen soort getoetst of geëvalueerd verschillende manieren. De eerste was erg lineair, toch? Draai pagina, kijk voor Mike. Draai pagina, kijk voor Mike. Het is erg lineair. Als er nog een pagina in de telefoon boek, is het waarschijnlijk gaat me te nemen nog een tweede, nog een eenheid van tijd, Maar we berekenen tijd. Dus ik zou tekenen als deze deze lijn Hier, waarbij de grootte van de probleem neemt toe van links naar rechts - telefoonboek wordt kleiner naar groter - en de tijd zal toenemen op de verticale as, de grotere het telefoonboek is. Dus n is slechts een algemene variabele die informatici gebruiken om te vertegenwoordigen bepaalde waarde een getal. Zo n gaat lineair toeneemt. Dubbele van de grootte van het telefoonboek, het is gaat me twee keer zo veel te nemen tijd, het meest waarschijnlijk, om Mike te vinden. Nu kon ik slim geweest over dit, toch? Ik snel verveeld kreeg. Kon hebben dit gedaan door tweeën. Dus twee pagina's, dan vier, dan zes, dan acht. En ik kon beginnen vliegen door het een beetje sneller, zij het in geringe risico van doorschieten Mike, maar die bocht is niet gaat zijn heel verschillend. Het gaat nog steeds om een ​​rechte lijn, maar iets sneller. Maar wat heb ik gedaan? Ik heb eigenlijk deed iets fundamenteel beter. Ik bereikt wat we logaritmische zullen noemen tijd, logboek van n, waarbij deze groene lijn heeft een veel, veel, veel minder rechte rand aan. En in plaats van, het suggereert, zoals het sorteren van naar oneindig gaat ooit zo geleidelijk, dat ik een 1000-pagina daadwerkelijk kon nemen telefoonboek, het dubbele van de grootte volgend jaar - want veronderstel veel meer mensen verhuizen naar de stad. Dus nu heb ik 2000 pagina's, maar hoe vele stappen dat slimmer algoritme gaat nemen? Slechts een. Ik bedoel, dat is een krachtig ding. Als we naar 4000 pagina's volgend jaar, dat gaat me te nemen slechts twee stappen. Dus u kunt groter en groter te gooien problemen bij mij, niet in tegenstelling tot het web is gooien groter en groter problemen elke dag op Googles en Facebooks van de wereld, en het is niet zo'n big deal. Omdat ik meer aandacht en zorg in Mijn algoritme waarmee lossen problemen efficiënt. En inderdaad, dat zal een van de doelen van deze cursus. U, langs de weg, leren hoe te programmeren. U leert hoe te programmeren in onbeperkt aantal talen. Maar aan het eind van de dag, de cursus over het oplossen van problemen en het krijgen beter oplossen van problemen - en, in gevallen als dit, het oplossen van problemen efficiënter. Nu tot nu toe, hebben we dit gedaan vrij intuïtief. Laten we iets vrij te introduceren generiek genaamd pseudocode. Dus we uiteindelijk krijgen, in deze cursus aan verschillende programmeertalen. Maar vandaag doen we het in het Engels-achtige syntax, waar je gewoon een soort van zeggen wat je bedoelt, maar je bent altijd zo beknopt en je hoeft je geen zorgen over grammatica en volledige zinnen. U drukt zich als gewoon beknopt mogelijk. Dus pseudocode is Engels-achtige syntax die vertegenwoordigt een programmeertaal. En in de richting van dat doel, laat me voorstellen dat we nu modelleren van het proces dat we gewoon beschreven van het tellen van iets dat een beetje anders, dit keer het nemen van een kijken naar deze vijf minuten durende video geproduceerd door onze vrienden bij TED dat bepaalt wat pseudocode is, bepaalt wat algoritmische denken is, en zelfs hoewel het voorbeeld dat je gaat zien is, in zichzelf, super eenvoudig, het is gaat om te beginnen om ons de mentale model, de vocabulaire, waarmee doen veel, veel complexer algoritmes vrij snel. [BEGIN VIDEO AFSPELEN] [Muziek] VERTELLER: Wat is een algoritme? In de informatica, een algoritme is een set van instructies voor het oplossen van een aantal probleem stap voor stap. Typisch worden algoritmen uitgevoerd door computers, maar wij mensen hebben algoritmen, ook. Bijvoorbeeld, hoe zou je over het tellen van het aantal van mensen in een kamer? Nou, als je net als ik, zou je waarschijnlijk punt bij elke persoon, een op een tijd, en tellen vanaf 0. 1, 2, 3, 4, enzovoort. Nou, dat is een algoritme. In feite, laten we proberen om het uit te drukken een wat meer formeel in pseudocode - Engels-achtige syntax die lijkt op een programmeertaal. Laat N gelijk 0. Voor elke persoon in de kamer, ingesteld N gelijk aan N plus 1. Hoe deze pseudocode interpreteren? Nou, lijn ene verklaart, zo te zeggen, een variabele genaamd N en initialiseert de waarde op 0. Dit betekent alleen dat aan het begin van ons algoritme, het ding waarmee we rekenen heeft een waarde van 0. Immers, voordat we beginnen te tellen, we hebben nog niets geteld. Het aanroepen van deze variabele N is slechts een conventie. Ik had het wel bijna alles. Nu lijn twee markeert het begin van een lus, een opeenvolging van stappen die zullen herhaal sommige aantal keren. Dus in ons voorbeeld, de stap nemen we rekent mensen in de kamer. Onder lijn twee is lijn drie, en dat is precies hoe omschrijft we gaan over het tellen. De inkeping impliceert dat het lijn drie die zal herhalen. Dus wat de pseudocode zegt is dat na vanaf 0 voor elk persoon in de kamer, we zullen verhogen N door 1. Nu is dit algoritme correct? Nou, laten we bang op het een beetje. Werkt het als er twee mensen in de kamer? Laten we eens kijken. In lijn een, initialiseren we N tot 0. Voor elk van deze twee mensen, we vervolgens verhogen N door 1. Dus op de eerste reis door de lus, we N updaten van 0 tot 1. Op de tweede reis door diezelfde lus, we N updaten van 1 naar 2. En dus tegen het einde van dit algoritme, n 2, die inderdaad overeenkomt met het aantal mensen in de kamer. So far, so good. Hoe over een hoek zaak, hoewel? Stel dat er 0 mensen in de kamer - naast me, wie doet het tellen. In lijn een, initialiseren we N tot 0. Deze keer, echter, lijn drie niet uit te voeren op alle omdat er geen persoon in de kamer. En dus N blijft 0, wat overeenkomt met de aantal mensen in de zaal. Vrij simpel, toch? Maar tellen mensen een voor een is vrij inefficiënt, ook, nee? Zeker kunnen we beter doen. Waarom niet tellen twee mensen tegelijk? In plaats van het tellen van 1, 2, 3, 4, 5, 6, 7, 8, enzovoort, waarom niet tellen, 2, 4, 6, 8, enzovoorts? Het klinkt nog sneller, en het zeker is. Laten we uiten deze optimalisatie in pseudocode. Laat N gelijk 0. Voor elk paar mensen in de kamer, ingesteld N gelijk aan N plus 2. Vrij eenvoudig veranderen, toch? Eerder dan tellen mensen een tegelijk, we tellen in plaats ze twee tegelijk. Dit algoritme is dus tweemaal zo snel als de vorige. Maar is het juist? Laten we eens kijken. Werkt het als er twee mensen in de kamer? In lijn een, initialiseren we N tot 0. Voor dat een paar mensen, we vervolgens verhogen N door twee. En dus tegen het einde van dit algoritme, N 2, die inderdaad overeenkomt met het aantal mensen in de kamer. Veronderstel volgende dat er 0 mensen in de kamer. In lijn een, initialiseren we N tot 0. Net als voorheen, is regel drie niet uitvoeren helemaal niet, omdat er geen paren van de mensen in de zaal. En dus N blijft 0, wat inderdaad overeenkomt met het aantal mensen in de kamer. Maar wat als er drie mensen in de kamer? Hoe werkt dit algoritme tarief? Laten we eens kijken. In lijn een, initialiseren we N tot 0. Een paar van die mensen, we vervolgens verhogen N door 2. Maar wat dan? Er is geen ander vol paar mensen in de kamer, dus lijn twee geen langer van toepassing. En dus tegen het einde van dit algoritme, N nog 2, wat niet correct is. Inderdaad, dit algoritme wordt gezegd te zijn buggy, omdat het een vergissing. Laten verhaal met een aantal nieuwe pseudocode. Laat n gelijk 0 voor elk paar van de mensen in de kamer. Stel N gelijk aan N plus 2. Als een persoon ongepaarde blijft, ingesteld N gelijk aan N plus 1. Om dit specifieke probleem op te lossen, we hebben geïntroduceerd, in lijn vier, een aandoening, ook wel bekend als een tak dat alleen wordt uitgevoerd als er een persoon die we konden niet koppelen met een ander. En dus nu, of er is een of drie of een oneven aantal mensen in de kamer, dit algoritme zal nu tel ze. Kunnen we nog beter doen? Nou, konden we rekenen op 3s of 4s of zelfs 5s en 10s, maar verder dan dat, het is gaat een beetje te krijgen moeilijk punt. Aan het eind van de dag, of uitgevoerd door computers of mensen, algoritmen zijn slechts een set van instructies met die problemen op te lossen. Dit waren slechts drie. Welk probleem wil je oplossen een algoritme? [END VIDEO AFSPELEN] DAVID Malan: Dat is de enige keer Ik zal verschijnen in cartoon vorm. Maar waar dat verhaal ophoudt, Nu, is hoe kunnen we beter doen? Drieën en fours, we beweren, kunnen we rekenen mensen veel sneller, maar kunnen we doen fundamenteel beter dan dat? En ik wed dat we kunnen. Als we introduceren een beetje van ons eigen pseudocode hier, ik ga voor te stellen dat we een lijn als deze kan bereiken. We gaan niet om mensen te tellen een, twee, drie, vier. We gaan niet om te gaan twee, vier, zes, acht. We gaan fundamenteel beter te doen met een heroverweging van het probleem, en in dit geval is, gebruik te maken van een anders onderbenutte bron. In slechts een moment, ik hoop dat je zult vergeven en humor ons door op te staan ​​in plaats, op welk punt we gaan vragen ieder van jullie om op te nemen in uw geest het nummer 1. Je bent dan gaat steeds onhandig, naarmate de tijd verstrijkt, vinden iemand anders die staat, combineer uw nummers samen door ze te tellen. Een van jullie wordt dan gaat racen te zitten eerst neder, en de andere persoon gaat herhalen. Dus met andere woorden, door zaaien alle u met het nummer 1, en vervolgens combineren van deze 1s in 2s en die 2s in 4s, met iedereen steeds zitten, moeten we aan het eind van dit algoritme, hebben slechts een lening ziel die ging niet zitten snel genoeg, maar wie heeft de hele telling publiek in zijn of haar geest. Dus als je wilt, laten we gaan vooruit en - stap een - staan ​​op hun plaats. En uit te voeren. [MENIGTE murmelen] DAVID Malan: Weet jij waar Lauren is? 729? [MENIGTE murmelen] DAVID Malan: Oke? [MENIGTE murmelen] DAVID Malan: Oke, we moeten worden nadert het einde. We zien een collega staan ​​er nog. Wie moet anders worden gekoppeld? Als jullie willen af ​​te koppelen. Iemand boven. Zal ik een handje hier te lenen. Voor de weinige mensen die nog staan, welke nummers heb je hebben in je hoofd? STUDENT: 78. DAVID Malan: 78 plus - die daar ook staat hier beneden? STUDENT: 39. DAVID Malan: Plus 39. Plus Wie nog overeind? 81? OK, wie anders? Een andere 81? Wow. En wat zit er in terug? STUDENT: 49. DAVID MALAN: 49, plus? STUDENT: 98. DAVID Malan: 98 plus? Is dat iemand anders? 12? Good job. [Lachen] DAVID MALAN: Oh, 112 - oh. Good job! [Lachen] [Applaus] DAVID Malan: Iemand anders nog staan? Sorry? STUDENT: 99. DAVID Malan: 99. Iemand anders nog staan? En het totale aantal studenten hier eigenlijk, volgens - heb je een nummer? Oh, het werkelijke aantal mensen in de room, volgens de rekening die het onderwijs kerels deden op ieders manier, was 729. Dus uit een kamer vol van Harvard studenten die zich geteld de antwoord 637. [Lachen] DAVID Malan: Zo dicht. Maar toch. OK, dus dat is een leer ogenblik, toch? Dit is nu wat wij omschrijven als een bug. Ergens langs de weg, hebben we een aantal rekenkundige fout, of iemand ging zitten, of links, of ging er iets mis. Maar dat is prima. Omdat zelfs nog, we kreeg vrij dicht. En ik zou zeggen dat we op de verkeerde beantwoord een stuk sneller dan ik zou hebben met mijn meer lineaire benadering. Dus laten we aannemen dat we in feite krijgen dat corrigeren, maar nu denken over wat gebeurde elke keer, tegenover mijn eigen naïeve wijzen algoritme. Een, twee, drie. Als er inderdaad 729 of 637 mensen hier, dat zou me hebben genomen letterlijk 637 of 729 pointings van de vinger en ophogen van mijn totale telling. En ik kon een beetje beter doen door gaan twee, vier, zes, acht, en dubbele van die snelheid, misschien zelfs drie-of verviervoudigen, afhankelijk van hoe goed ik kan die tellen in mijn hoofd doen. Maar deze aanpak dat jullie namen was fundamenteel anders. Omdat aan het begin, jullie allemaal opgestaan. Dus alles 729. En dan letterlijk de helft van je ging zitten. En daarna, andere de helft van je ging zitten. En daarna, andere de helft van je ging zitten. En het totale aantal keren dat u jongens zouden hebben gezeten is ruwweg acht of negen of tien keer in totaal, afhankelijk van wat onze totale telling is. En we kunnen sorteren van doen dit andersom. Als we hadden 1024 mensen in de kamer, de totaal aantal keren dat je kon halveren 1024 mensen is 10. Nu denken in de andere richting. Veronderstel, belachelijk, dat we hadden, zeggen 4000000000 mensen in deze zaal, of een iets grotere kamer. Hoe vaak zouden we zijn gegaan via dit algoritme, zodat de helft van die klasse gaat zitten? Het gaat alleen om 32 dergelijke te nemen operaties, zelfs een klasse size 4000000000. Waarom? Omdat 4000000000 gaat om twee miljard euro, gaat naar een miljoen, gaat naar 500 miljoen, gaat naar 250 miljoen, puntje, puntje, puntje. Ik kan alleen maar dat doen divisie ongeveer 32 tijden, op welk moment, iedereen behalve een persoon zou blijven staan. En ook dat is een soort van een krachtige idee dat steeds proberen we leverage in deze cursus, en in programmering en informatica meer het algemeen, deze kiemen van een idee met die we vervolgens kunnen oplossen problemen veel, veel krachtiger. Dus begonnen we vrij eenvoudig met die pseudocode en een man in een kamer, maar nu met een hele kamer vol mensen hebben we gedaan fundamenteel beter. Nou, laten we nu de overgang van pseudocode om enkele feitelijke code. Deze taal je gaat zien gebeuren te noemen JavaScript en we zullen terugkeren naar deze richting einde semester. Het is een programmeertaal die je gebruiken om websites en andere dergelijke maken software deze dagen. En we hebben gebruikt, dankzij een vriend van ons in Stanford, te coderen sommige verborgen informatie hier. Dit is de kunst van steganografie, zo te zeggen, waar u kunt verbergen informatie in wat anders lijkt te zijn geluid of een compleet andere afbeelding helemaal. Maar ingebed in dit beeld bijzonder is inderdaad een geheime boodschap van soorten. Dus laat me ga je gang en trek hetzelfde beeld hier, dit tijd in een webbrowser. En ik ga mijn hand zwaaien naar enkele van de gegevens voor vandaag, met name voor degenen onder u die dit ziet eruit als niet alleen JavaScript, maar Grieks, als een volkomen onbekende taal. Dit is een voorbeeld van een programmeertaal. En voor nu, nemen op het geloof dat deze eerste regel van de code - en door de code, ik bedoel alleen maar tekst. Tekst die ik letterlijk kon heb getypt in Microsoft Word, als ik de juiste software om vervolgens iets mee doen. Programmering broncode, programmering code, is eigenlijk alleen maar tekst, en het ziet er anders op basis van wat taal u gebruikt, niet in tegenstelling tot het Engels en Spaans en Russisch zien er allemaal anders wanneer u ze typt op uw toetsenbord. Dus deze eerste lijn, voor nu nemen geloof, opent gewoon een afbeelding van de internet, dat luidruchtige grafische we net zagen. Deze volgende regel hier is een voorbeeld van een lus, en we eigenlijk zagen dat dezelfde jargon in de TED-video. Een lus is iets dat weer gebeurt en opnieuw, en hoewel dit geheel lijkt cryptische, met sleutelwoord voor en sommige haakjes en sommige puntkomma. We komen terug naar die komen duurde niet lang, maar dat lus er wezen vertellen van het programma, itereren over alle van die luidruchtige punten, van links naar rechts, van boven naar beneden. Doordat aan het eind van de dag, een beeld zoals deze - en je kunt eigenlijk soort ziet het op deze projector - is eigenlijk gewoon een raster van stippen. Dus we kunnen elk van deze punten te identificeren door een coördinaat, x, y, en deze programma, nu kunnen we beginnen te iets doen om die puntjes. Dus wat ik ga hier verder te gaan en weet is dat ik ga wat veranderingen aan te brengen. Eerst ga ik verder te gaan en zich te ontdoen van al dat groen en blauw lawaai, en ik ga om verder te gaan en typ het volgende weliswaar cryptische syntax. im voor het. geplaatst blauw op locatie x, komma, y locatie aan 0. Met andere woorden, ik wil gewoon schakelen alle van de blauwe puntjes op die foto. Ik ga nu verder te gaan en klik Dit Run / Save-knop, en je zult merkt op de rechterzijde, het resulterende beeld verschijnt. Nu zijn super groen, maar dat is niet verrassend, omdat ik letterlijk draaide off, door een 1 a 0, al het blauw op die foto. Nou, nu laten we het een beetje meer. im voor het, dot setGreen, x, y. En dat betekent iterate van links naar rechts en vervolgens van boven naar beneden. Zet dat af met een waarde van 0, ook. Opslaan. En op de projector, kunt u eigenlijk niet echt iets te zien op alle. Op mijn laptop scherm, als ik turen in slechts op de juiste manier, kan ik een beetje een te zien beeld, omdat ze nog steeds wat rood in. Als je ooit hebt gehoord van de afkorting RGB - rood, groen, blauw - het is verwijzing naar deze samenstelling van een afbeelding met behulp van alleen die drie kleuren. En op dit moment, hebben we weggegooid alle groene, helemaal blauw, maar er is niet veel rood. Dus laat ik het opendraaien van de rode. Hoe kan ik dat doen? Nou, ten eerste, ik ga vragen dit programma een vraag. Ik ga om te gaan en laten we noemen het een variabele, net als in de algebra. U kunt x-of y of z. Ik ga een variabele declareren en zeggen, zet in deze variabele, tijdelijk de waarde van de beelden getRed waarde bij x, y. En nogmaals, we zullen terug naar alle komen dit detail in de toekomst. Maar voor nu, gewoon op vertrouwen dat deze lijn vraagt ​​het programma, wat is de rode waarde bij x, y? Op dat punt? Dan ga ik iets doen om het. Dan ga ik doen beeldpunt set rood in x, y, y, maar deze keer ga ik stimuleren door het doen van rode tijden, laten we zeggen, 10. Zo verhogen met een factor 10. Laat me nu uit te zoomen en klik kon Uitvoeren / Opslaan. En voila, dat er de hele tijd, hoewel onze menselijke ogen kon niet helemaal zien. Dus nogmaals, dit is nu echt code, een voorbeeld van een taal die we komen terug naar het duurde niet lang. Maar realiseren, met name die van jullie zonder een dergelijke ervaring, het is heel snel dat we zullen onszelf te zijn het schrijven van code zoals die daar. In feite, een tool waarmee je alle enigszins vertrouwd, misschien, is CS50's eigen cursus-shopping tool, die was deze zomer eigenlijk opgestart door enkele van CS50's eigen oud-studenten, Nu draaien TFs. Dus dit gebeurt er met een website gebouwd te zijn in een taal genaamd PHP. Het maakt gebruik van een database genaamd MySQL, dingen waarmee we onze handen krijgen vuile later in het semester. Maar geloof het of niet, zelfs iets als dit uiteindelijk reduceert tot de eenvoudigste van loops en condities en takken, zoals die we zagen slechts een daarnet in de TED-video. Wat ik dacht, ik doe nu is delen niet gewoon iets wat we het personeel hebben gemaakt voor de campus, maar eerder iets een vroegere student - drie studenten, in feite - maakte dit afgelopen jaar, Sierra, Daniel, en Sam, de laatste van hen hadden geen voorafgaande programmeren ervaring toen hij CS50. En voor hun afstudeerproject, ze tentoongesteld, in de CS50 Fair, een applicatie genaamd wrdly, dat is een web-based programma waarvoor ze gemaakt Deze video, die ik dacht dat ik zou delen met geven je een gevoel van wat is mogelijk door eindterm's. [Muziek] DAVID Malan: Dat is vanaf Week Zero tot week 12 het afgelopen jaar. [Applaus] DAVID Malan: Als een teaser, ook, echt om uw eetlust opwekken is voor wat er mogelijk is, kan je al hebt gezien, of kunnen snel zien, market.cs50.net, een nieuwe tool dat team de cursus heeft gewerkt, dit keer in samenwerking met Harvard Student Agentschappen, zoals dat met ingang van dit jaar en voortgezet hopelijk in dit komende zomer zult u over een standaard kans op de campus om te kopen en dingen van belang te verkopen aan u. En met partnerschap via HSA, zul je ook in staat zijn om items af te zetten in een van HSA fysieke winkels op een bepaald punt in de toekomst, zodat proxy-dingen, vooral als u studeren en niet per se willen gooi dingen, maar eigenlijk betalen toekomen aan mensen die je zou kunnen volgen hier op de campus. Dus meer op die te komen. Maar een beetje meer concreet, een hulpmiddel dat is gekomen uit CS50 in de afgelopen jaar, waarmee sommige van jullie misschien wel vertrouwde en anderen van u misschien wel nu googlen, bij CS50.net/2x, je zult vind een link naar een Chrome extensie dat is demonstratief van hoe je kunt gebruikt JavaScript, dat dezelfde taal wij gebruikt met de Eiffeltoren een moment geleden, tot 2x afspeelsnelheid implementeren voor alle Harvard iSites video's. Dit is iets dat is gebouwd in CS50's eigen videospeler. Maar dit, ook, als je begint te graven in de broncode, die we zullen gelukkig beschikbaar maken, zul je zien hoe je kunt zelfs problemen op te lossen als dat, versnellen widgets in websites met waar je al goed bekend. Dus een woord nu op de cursus en verwachtingen en wat ons te wachten. In het algemeen zullen we inderdaad hier verzamelen op maandag en woensdag - hoewel deze vrijdag, zullen we verzamelen omdat van Shopping Week - 1:00-14:00, hoewel soms tot 02:30. Gezien het feit dat je dan zou willen of moet wat klasse te nemen op 02:00 verder, of zelfs vóór, beseffen de Natuurlijk is voorstander van wat heet gelijktijdige inschrijving, waarbij we zullen ondersteuning van een petitie aan de Ad Raad en uw woonplaats decanen namens u als je hebt een conflict ergens in deze 1:00-02:30 bereik. Hoofd naar die URL online voor aanvullende details. Maar in termen van de draagconstructie dat CS50 kenmerkt, voor studenten meer en minder comfortabel gelijk, we bieden verschillende tracks van secties. En dit is een paar weken uit, maar het duurde niet lang, zult u worden gevraagd om uw comfort niveau. Ben je onder degenen minder comfortabel, comfortabeler, of ergens in het midden? En we hebben drie verschillende tracks die zich op juist die doelgroepen. Dus op geen enkel punt in de term moet je zelfs het gevoel alsof je concurreren tegen elke student met meer of minder achtergrond dan jij. Inderdaad, is de cursus bedoeld om te worden veel meer op samenwerking en veel meer open dan dat. In termen van het probleem sets, zul je vinden ook dat naast de standaardeditie van iedere week probleem ingesteld, is er vaak een "hacker edition "die is bedoeld om te worden gericht op 5% tot 10% of zo van de demografische die is inderdaad onder die comfortabeler en zou meer willen een uitdaging dan de standaard editie van dat pset verwacht. Meer details over deze te zijn In de syllabus. Maar ook daar kan worden gevonden informatie op de cursussen late dagen. Typisch probleem sets zijn verschuldigd op donderdag. Echter, kunt u veel van uw verlengen deadlines dit najaar van donderdag tot Vrijdag gewoon door ons bijeen halverwege, zo te zeggen, het beantwoorden van een paar warm-up vragen in een aantal van de week probleem sets, die automatisch zal dan geef je een extra 24 uur. We zullen ook uw laagste dalen score, zoals in de syllabus. Om u een idee van wat het probleem te geven sets zijn - want het is inderdaad probleem van de cursus bepaalt dat uiteindelijk definiëren bijna elke ervaring student, meer nog dan lezingen, meer nog dan secties, meer dus dan de meeste andere aspect van de cursus. Vorig jaar, bijvoorbeeld, begonnen we, zoals we zullen dit jaar beginnen, met Scratch. Vooral deze vrijdag, gebruiken we, voor slechts een dag de tijd, een grafische programmeertaal, waarmee we zullen beginnen programmering door te slepen en dropping puzzelstukken die alleen assembleren fysiek of het zinvol om dat logisch te doen. Volgende week, we zullen snel de overgang naar C, een vrij oud, maar heel klein en eenvoudige taal, dat zal ons toelaten om echt gaan van 0 naar 60 in de loop van slechts een paar weken, en dan parlay diezelfde vaardigheden en kennis van basisprogrammering constructen in hoger niveau talen zoals PHP, JavaScript, en toch anderen nog. Vorig jaar, de derde pset in de loop was die van cryptografie, een domein-specifieke toepassing waarbij wij daagde studenten aan een uitvoering aantal cijfers, programma's waarmee om informatie te versleutelen of ontcijferen, te coderen. Voor de hacker editie daarentegen we gaven de hacker studenten een bestand van een standaard Unix-computer met gebruikersnamen en wachtwoorden, waarvan de laatste versleuteld, en we tegen deze hacker studenten te decoderen, zo goed als ze konden, die wachtwoorden, nog steeds op dat hetzelfde domein. Scramble, een spel waarmee sommige van jullie zijn misschien wel vertrouwd. Een forensisch stuk, waar we leerlingen vragen om gegevens die waren terug te vorderen anders wordt verwijderd uit mijn eigen digitale compact flash kaart camera's, door eigenlijk het schrijven van software om erachter te komen, waar waren de nullen en enen in dat digitale camera die voorheen componeerde een JPEG-afbeelding? Een uitdaging van soorten vorig jaar met het schrijven van de snelste spell-checker mogelijk, concurrerende tegen vrienden en klasgenoten als ze willen. Uitvoering Huff 'n Puff, een compressie programma. En dan eindigt het semester met CS50 Finance, een web-based applicatie met waar je een eTrade-achtige website te maken te kopen en te verkopen voorraden, om zo te spreken, door eigenlijk bijna te trekken real-time koersen Yahoo! Financieren. Wat we niet doen vorig jaar was een probleemstelling dat overblijft toch een favoriet. Als je nog nooit hebt gegaan naar shuttle.cs50.net, zult u een gebruiker te zien -interface een beetje als dit. Maar twee jaar geleden, de klasse uitgevoerd, met behulp van Google Maps en de Google Earth plug-in en een beetje van savvy met rondrijden campus, zodat het doel van dit spel was, als je een aantal van de gezichten kan zien, is om te rijden rond de campus op zoek naar personeel, onderwijs fellows en CA's, en wanneer je dat doet, waardoor ze op uw pendelbus. Geen van hen daadwerkelijk lijken hier te zijn, dus we gaan naar een cheat code in te voeren. [Lachen] DAVID Malan: Daar gaan we. Oke. En nu hier is het personeel geregen hele campus. En zoals je kunt zien, aan de rechterkant kant van het scherm, de pendelbus heeft lege stoelen. En het doel was om het te schrijven code waarmee om dit te simuleren rijden en het oppakken en neerzetten off van de passagiers. Die Ook met een taal riep JavaScript. Dus beseffen dat programma's zoals die zal op onze zelfde traject dit jaar, ook. In termen nu extra steun, we hebben de kantooruren. Zoals je misschien hebt gezien in je eigen huis eetzaal of op de Annenberg, zullen we in het huis dineren hallen vier avonden per week - Leverett, Pfoho, Eliot en Annenberg dit jaar, 20:00-23:00. En wat dachten we dat we dit jaar doen is iets anders. Als je vorig jaar hoorde geruchten dat het was een beetje te zwaar, dit office jaar uur, zoals we zullen beschrijven volgende week, zal meer organische, waarbij bij aankomst, zult u verzonden naar een bepaalde tafel waar meerdere medewerkers af te wachten, en we zullen dingen veel meer te doen autonoom. Geen wachtrij, geen iPad, maar liever meer intieme gesprekken rond een tafel van slechts acht of zo studenten, zodat we bij benadering het gevoel van wat anders zou een veel kleinere klasse. Wij bieden, maar ook, deze dingen hebben we riep walkthroughs, video's gefilmd in bevorderen door een van het onderwijs van de cursus kerels, Zamyla, waarin zij loopt u door de week probleem sets, met tips en trucs voor de uitdagingen die voor ons liggen. En omgekeerd, na probleem sets zijn gevolg, dit jaar, zullen we ook los kleine clips bellen lijkschouwingen die eigenlijk loop je door representatieve oplossingen, zowel goed als slecht, via welke u kunt afleiden hoe je zou kunnen hebben of zouden moeten hebben geïmplementeerd uw eigen oplossing. En wat wij bieden voor de eerste keer ook dit jaar, in het bijzonder voor de studenten die gebruik maken van de cursus de andere middelen, maar toch worstelen allemaal te veel, de cursus zelf zal koppelen die studenten, zoals middelen het toelaten, met de docenten zodat heb je een veel intiemer kans dan house eetzalen zorgen voor een-op-een ondersteuning. Nu een laatste blik op enkele van het end games in zicht. Je zou bekend zijn met de CS50 Hackathon. Nou, komt deze december, vanaf 08:00 Uur tot 07:00, begin Lezen Periode, zal een gelegenheid zijn om samen met klasgenoten - zou dit ongeveer 21:00 - waarin u een duik in uw uiteindelijke uitvoering van het project is naast klasgenoten, vrienden, en voedsel. Zou dit ongeveer 1:00, bij de eerste partij van eten kwam. En dit is ongeveer 4:00 dat bepaald jaar op de CS50 Hackathon. Maar de echte climax van de cursus is bedoeld om de CS50 Fair, een campus-breed tentoonstelling van je eigen afstudeeropdrachten, waar familie en vrienden zijn allemaal uitgenodigd, zoals onze recruiters en onze vrienden uit de industrie. Dit, bijvoorbeeld, is een glimp van de 2000-plus mensen die hebben deelgenomen aan afgelopen jaar. Uitdrukkingen als deze zijn niet ongewoon, en op dezelfde wijze doe je klasgenoten genieten van dingen je hebt bereikt. En eigenlijk, in de richting van dat doel, we hebben een start-of-termijn evenement, als goed. Als dit soort dingen je aanspreken, of je bent op zijn minst nieuwsgierig naar wat dit, weet dat een nieuwe traditie van de Natuurlijk heet CS50 Puzzle Day. En dit werd ingesteld een paar jaren terug om echt signaal naar campus dat informatica is niet over programmeren, en het is zeker niet over het omarmen van alleen die studenten die eerdere ervaring. Het gaat echt over het oplossen van problemen meer in het algemeen. En dus Puzzel Dag, de afgelopen jaren is uitgegroeid tot een leuke samenwerking met onze vrienden van Facebook, waarbij er zal fantastisch zijn prijzen en pizza aan de overkant van de rivier bij de i-lab komende zaterdag. Hoofd naar die URL met twee of drie vrienden als je wilt deelnemen in deze nieuwe traditie. Dus ik zou willen vragen dat je blijft een ding in het achterhoofd, en we hebben net een twee clip minuut waarop te sluiten vandaag. 73% is het nummer te onthouden. Cake, zal ook u te wachten buiten dit transept zoals we verdagen in slechts een paar momenten, dat is een traditie van de cursus, als goed. Maar dit is de sleutel citaat uit de syllabus cursus in gedachten te houden. Waar het uiteindelijk in deze cursus is niet zozeer waar je terecht komt ten opzichte van je klasgenoten maar waar u, in week 12, uiteindelijk ten opzichte van uzelf in week 0. Maar de glimp die we u zullen verlaten met hier vandaag is dit laatste hier door onze zelfde Daniel, die wel de wrdly video slechts een moment geleden. Ik laat u met deze blik van wat ons te wachten. En als we dat doen, als we dat konden CS50 medewerkers van de voorkant van de kamer te komen op naar het podium om alle verf de meer een visueel beeld gaf wat verwacht u dit jaar - steeds onhandig. We zullen afsluiten met deze Hier op het scherm. [Muziek] DAVID Malan: Dit is CS50. [MUZIEK - MATT & KIM, "It's Alright"] LUIDSPREKER 1: Ik hou van CS50 meer dan katten. SPEAKER 2: Whoaaaa! [Lachen] DAVID MALAN: Dit is dus CS50. Wij zullen u op vrijdag. [Applaus en gejuich] NARRATOR: Bij de volgende CS50, een podium demo gaat niet zoals gepland. DAVID Malan: Wij willen Mike vinden Smith in dit telefoonboek. Nou, wat zijn je instincten? Ik zou ruwweg springen naar het midden van de het telefoonboek, blik omlaag, zie dat Ik ben bij M, en ik weet nu dat Mike Smith niet naar links. Hij moet naar rechts. En dus op dit punt, we kan letterlijk scheuren - op dit punt, kunnen we letterlijk scheuren - op dit punt, kunnen we figuurlijk scheurt het telefoonboek doormidden. [UKELELE STRUMMING]