[MUSIK SPIELEN] Dies ist CS50-- Harvard Universität Einführung zum intellektuellen Unternehmen der Informatik und die Kunst der Programmierung. Und mein Name ist David Malan und Ich war gerade an diesem Morgen zu denken, es ist erstaunlich 20 Jahren heute seit ich das letzte Mal jetzt saß, wo euch tun. Es war 1996. Ich war ein College-Student, und ich nahm CS50 zum ersten Mal. Und ich hatte noch nicht einmal den Nerv aufgestanden es selbst ersten Jahr zu nehmen, teilweise wegen der Zeit. Informatik mir wurde wie Art, meh. Ich war ein bisschen ein Geek wächst up, aber ich habe nicht wirklich haben keine intellektuelle Interesse an, was schien, zu sein, nur eine ganze Reihe von Menschen Programmierung die ganze Zeit. Und ich hatte Angst um ehrlich zu sein. Der Kurs und Informatik mehr und teilweise im Allgemeinen hatten, noch hat diesen Ruf eines Feldes Vorsicht, nur wenn da so viele von uns sind nicht vertraut mit ihm und nicht sicher davon. Und es war wirklich nicht, bis ich einkaufte Diese Klasse, die College-Student-fall-- und selbst dann, ich nur eingeschrieben weil der professor-- einer meiner ersten Mentoren, Brian Kernighan jetzt bei Princeton-- mir erlaubt, die Klasse Pass nicht zu nehmen. Und in der Tat, das ist, warum Heute lassen wir und ermutigen Schüler dieser Klasse zu nehmen sat / unsat. Und erst dann, durch die Ende des Semesters dies wurde mir klar, wie, wow, war nicht so ein unbekanntes Feld. Tatsächlich war dies ein sehr empowering Feld, und aufregender, vor allem später, wie ich nahm Kurse in Dramatic Arts 101 und Latein A und dann schließlich grad Schule Archäologie, habe ich beginnen, um wirklich zu sehen Kreuzungen dieses Feldes, computer Wissenschaft, mit den Geisteswissenschaften, Naturwissenschaften, Kunst, Medizin, und dergleichen. Und so ist das, was ist einfach so ordentlich über Informatik schließlich, wie wir hoffen, dass Sie see-- ist seine Anwendbarkeit zu diesen anderen Bereichen, und wie Sie nehmen einige der heutigen und der Semester Ideen und praktische Fertigkeiten zurück zu Ihrer eigenen Domain, und erkunden Sie tatsächlich diese Kreuzung der freien Künste und die Wissenschaften. Also 73% von Ihnen, wenn im letzten Jahr ist jede Angabe, noch nie ein CS-Kurs genommen. Also, wenn, wie ich, du bist das Gefühl ein wenig Angst, oder offen sind Sie nicht wirklich sicher, warum Sie noch hier sind. Vielleicht folgen Sie nur einige Freunde über jetzt Sanders. Das ist völlig in Ordnung. Das Ziel ist hier, Haken Sie und Sie zu beruhigen dass, wenn Sie schauen zu links und nach rechts, Sie gehen Mitschülern zu sehen, mit so wenig oder so viel Erfahrung dass Sie vielleicht selbst haben. Und in der Tat, wir teilen einige Statistiken später heute als zu dem, was die Demografie die Klasse aussehen kann. Und als reassurance-- und diese fügten wir bedeuten, da ich über den Verlauf nahm einige Jahre ago-- in den Kurs des Lehrplans this-- das ist, was letztlich Fragen in diesem Kurs ist nicht so sehr, wenn Sie am Ende up in Bezug auf Ihre Mitschüler, aber wo man in Woche 11, das Ende der Semester, am Ende, um sich nach oben relativ in Woche 0, das ist wo wir sind heute hier. Und das ist, was ich erkannte, Vor all diesen Jahren. Und ich kenne eine Menge Klassen sagen dies, aber es ist in der Informatik besonders wahr. Am Ende des Tages, dieses Feld nicht vertraut ist, wie es für mich war, und für Sie sein, ist wirklich nur um Probleme zu lösen. Und als solcher hat es diese Anwendbarkeit in anderen Bereichen zu erhalten. Und in der Tat, wenn wir versuchten, zu destillieren, was das bedeutet, dies ist der Problemlösung in seinem Wesen, wage ich zu behaupten. Es gibt input-- so, was es ist, dass Sie zu lösen versuchen. Es gibt Ausgang, das ist hoffentlich Die Lösung für dieses Problem. Und dann, als würden wir sagen in der Informatik, es gibt diese Blackbox in der Mitte, die Sie nicht unbedingt haben zu kümmern, wie es funktioniert. Sie selbst könnte schließlich implementieren, was in diesem Feld ist. Aber für die Zwecke der heutigen und mehr allgemein im Leben, alles, was Sie kümmern sich um ist, dass diese Probleme gelöst bekommen. Und was ist dieser Kurs letztlich über erforscht der Schnittpunkt der Diese Ein- und Ausgänge, und diese sogenannten Algorithmen, wie wir bald sehen, dass das umzusetzen, was ist darunter gibt, die Haube. Aber diese Eingänge und diese outputs-- was bedeutet das eigentlich? Nun, am Ende des Tages, wir brauchen eine Möglichkeit, Informationen zu vertreten. Dies gilt insbesondere in einem Computer, die so schick und komplex wie es scheinen mag, ist eine ziemlich dumme Gerät. Es dauert electricity-- ob aus ein Kabel oder eine Batterie als input-- und dann erzeugt es einige vorprogrammierte Antworten auf dem Bildschirm. Aber wie kommen wir aus beginnen dort zu beenden? Nun, was ist ein Problem, das gelöst werden? Na ja, vielleicht könnten wir auf Am Anfang eines jeden Semesters, versuchen, die Teilnahme zu nehmen in einem Raum wie diesem. So könnte ich wie ein tun, zwei, drei. Oder vielleicht, wenn ich es tat, Art im Auge zu behalten von myself-- Spur von things-- zu halten Ich konnte schnell aus den Fingern ausgeführt werden. So könnte ich nur Hash marks-- zu machen Person, zwei, drei, vier, fünf, sechs, sieben acht. Und wir alle haben wahrscheinlich dies geschieht, ob an den Händen oder auf einem Stück Papier. Und das ist eigentlich nur etwas namens einstellige notation-- wo, wenn Sie nur einen Buchstaben haben in Ihrem Alphabet, ein oder Hash Marke in diesem Fall für jeden Eingang, den Sie zählen möchten, müssen Sie eine dieser niedergeschlagen letters-- eines dieser Zeichen. Gut. Das ist alles schön und gut und gar nicht so kompliziert. Aber Computer sind nicht alle dass viel komplizierter. Tatsächlich sind die meisten von euch wahrscheinlich wissen, auch wenn Sie nicht wirklich haben betrachtet, was das bedeutet, dass Computer verstehen nur Nullen und ones-- der sogenannten binären System. Wir Menschen, sind dagegen so viel anspruchsvoller, sofern wie wir sie verstehen Nullen durch Neunen. Aber selbst wenn binär ist, anfangs Blick gar nicht so vertraut sind, es stellt sich heraus, es ist genau wie die Systeme und die Ideen, die wir schon kennen. So zum Beispiel, darüber nachzudenken. Dies ist nur eine Folge von Symbolen. Und ihr alle, wenn es schaute, wahrscheinlich denken 123-- nichts dort wirklich interessant. Aber warum ist es diese Zahl, 123? Dies sind nur Glyphen auf die screen-- nur Muster dass jemand gezeichnet haben oder getippt könnten. Aber wenn Sie wie ich sind, Sie erinnern sich wahrscheinlich von der Grundschule dass es eine Art sind Spalten oder hier Orte. Es ist der Platz, der ein und Zehnerstelle und den Platz des hundert. Und der Grund, dass dies 123 und nicht nur ein Muster von drei Symbole Denn selbstverständlich, wenn man haben eine in der Hunderterstelle, Sie haben die Mathematik von 100-mal ein, und dann zwei in der Zehnerstelle. Das ist also 10-mal 2, und dann drei in der seinen Platz und das ist 1 mal 3. Und wenn Sie all jene zusammenzählen, von Natürlich erhalten Sie 100 plus 20 plus 3. Also begannen wir mit nur einem Muster von symbols-- eine alphabet-- aber dann kartiert wir Bedeutung auf es anhand dieser Spalten. Nun, es stellt sich heraus, dass Computer sind wirklich nicht so verschieden von dir und mir. Doch statt der Befugnisse von 10 verwenden, so zu speak-- 1, 10, 100, 1.000, 10.000 Ort und so forth-- sie tatsächlich nur verwenden Kräfte der 2-- so ein, 2, 4, und dann wenn wir mehr Ziffern stellen, 8, 16, 32, 64, 128, und so weiter. Und so ist dies, wie ein Computer würde die Zahl 0 darstellen, genau wie wir Menschen. 0, 0, 0-- und Sie können sich wahrscheinlich vorstellen, welche Muster von Nullen und Einsen, wenn ein Computer kann nur sprechen 0 oder 1-- was Muster wird vertreten die Zahl, die wir Menschen kennen als 1? Yeah-- 0, 0, 1. Gut. So 0, 0, 1 ist, wie wir vertreten 1, so dass Sie vielleicht geneigt sein, dann repräsentieren die Nummer 2, wenn Sie den Platz der vier und den Platz der beiden als ein Ort, könnte man sagen, na ja, wenn wir eine 1 in der seinen Platz hatte, und jetzt wollen wir zählen bis zu 2, könnten Sie dies tun und lassen dies eine Null zu sein. Aber natürlich ist dies nicht, wie das Dezimalsystem arbeitet entweder. Wenn Sie setzen eine Ziffer in diese beiden Säulen, Sie habe die Arithmetik zu tun. Also, welche Zahl habe ich Versehen nur repräsentieren? So ist es 3, weil 2 mal 1 plus 1 1 mal, natürlich, gibt uns drei. So würde dies zwei sein. Die Bit-Art von Flips, sozusagen als 0 wird ein ein, über viel wie ein 9 Rollen und wird zu einem 0, wenn Sie die 1 tragen. Dies würde dann drei natürlich sein. Four-- eine andere interessante Sache geschieht, wo die, die über rollen und Sie tragen die 1, so zu sprechen. So dies natürlich ist 4. Aber wenn Sie schnell vorwärts jetzt, Was ist die größte Zahl gehen sein, dass ein Computer darstellen kann? So ist es nur sieben in diesem Fall, nicht wahr? Da Sie ein ein in den vier haben, Eine Eins in den beiden, eine Eins in der einen. Also ist das 4 plus 2 plus 1. Damit gibt Ihnen sieben. Und in der Tat wäre es scheinen auf den ersten Blick dass Computer können zählen nicht höher ist als diese. Aber das ist natürlich nicht wahr. Was wir Menschen tun, wenn wir wollen, zu zählen höher als wie 999? tragen nur die eine und nur eine vierte Ziffer links hinzuzufügen. Und so in der Tat konnten wir. Wir konnten eine acht der haben Ort und ein Platz des 16., und ein 32-Platz, 64, 128-- und Sie kann nur halten bis ins Unendliche geht. So werden diese Nullen und ones-- die sogenannte binäre system-- sind das, was würde ein Wissenschaftler Computer im Allgemeinen ein wenig nennen, oder binary digit. Aber jetzt, wie kommen wir aus der Konzept oder die Grafik dieser Dinge einem tatsächlichen Computer? Wir scheinen zu hier einen Schritt zu überspringen. Nun, der einzige Eingang am Ende hier des Tages, auf meinem Laptop ist dieser Stromfluss. Auch wenn es lange gewesen ist Zeit, da Sie darüber nachgedacht, oder nie darüber nachgedacht, wie Elektrizität funktioniert, es gibt fließende Elektronen in oder aus, und das ist meine Art von Input. Also, wenn das ist alles, was wir sind hier immer als Eingabe, Was können wir mit diesen Informationen tun? Nun, wir könnten denken Sie an eine Null nur ein Fehlen von Elektrizität. Nichts ist flowinw, ist nichts bewegen, geschieht nichts. Das ist nur die Standard state-- Null. Aber wenn es Strom fließt, warum nicht nur willkürlich wir, sondern global konsequent nennen, dass eine Eins. So einfach durch keine Macht hat, Wir haben eine Null, ja Macht, wir haben eine one-- keine Macht, ja Macht. Und auf diese Weise, mit etwas mehr physischen oder elektronischen Wir beginnen diesen Begriff zu implementieren etwas, entweder als eines oder eine Null. Tatsächlich konnten wir hier tun es einfach vorbei. Also hier, ich habe nicht drei, sondern acht Lampen, von denen jede einen eigenen Schalter hat. Und so, wenn ich wollte zu vertreten die Zahl sieben hier, Ich könnte sich auf diese drei Glühbirnen. Und in der Tat, innerhalb von mein Computer ist Millionen, Milliarden von Dingen, die gerade sind kleiner ist als das, genannt Transistoren, Schalter, dass Sie nur ein- und ausschalten. Das sind also big-- relativ big-- Schalter in meinem laptop-- gibt viele, viele, viele, viele weitere Schalter. Aber alles, was sie tun, ist genau dass-- drehen etwas auf, schalten Sie etwas ab. Und als solches kann ein Computer darstellen, mit diesen Millionen oder Milliarden von Transistoren, Lose und viele Nullen und Einsen. Und es gibt andere Hardware immer noch, dass ermöglicht das Speichern von Informationen langfristige, so dass, wenn Sie ziehen die Stecker, müssen Sie es nicht verlieren. Aber das ist eine Geschichte für einen anderen Tag. Also, was können wir mit diesen Bits tun? Können wir nur zu nehmen der Druck weg von mich- könnte jemand kommen wollen hier oben und eine Demo opfern? Zuerst sah ich diese Hand. Wie heißen Sie? Maday: Maday. DAVID MALAN: Maday, kommen auf. Schön dich zu treffen. Maday: Schön, Sie kennenzulernen. DAVID MALAN: Kommen Sie auf diese Weise. Ich werde Ihnen nicht die Lippe auf. Gut. Also hier haben wir, notice-- ein, two-- das werden wir bearbeiten out-- eins, zwei, vier, acht, 16, 32, 64, 128. Das ist Absicht. Es gibt acht Bits hier-- binäre digits-- Nullen und Einsen. Und ein bisschen ist ein nützliches Gerät von measure-- nicht als eine Maßeinheit nützlich auf sich selbst. Normalerweise wollen Sie mindestens acht dieser Dinge, auch bekannt als ein Byte. So haben wir ein Byte von Bits hier. Also, wenn wir wollten Sie herauszufordern mit, zum Beispiel, Rechtschreibung, binär, dieser Wert hier-- 42. Möchten Sie einen Stich an, dass zu nehmen? Maday: [unverständlich]. DAVID MALAN: Ja, drücken Sie einfach die kleine weiße Schalter vor. Und Sie wollen zu buchstabieren aus 42, und zu gewinnen Stress ist das CS50 wenn Sie Ball bekommen diese. Gut. So haben Sie 32. Wir werden 42 benötigen. Also das ist ein acht, also das ist 40. Und excellent-- sehr schön gemacht. Vielen Dank. [BEIFALL] Gut. So haben wir einen weiteren Stress-Ball. Lassen Sie uns tun dies einmal mehr, wenn wir können. Ein weiterer Freiwilliger? Kostenlose Stress-Ball, freies Stress-Ball. OK. Hier in der Mitte, tun Sie kommen wollen? Gut. Ich kenne. Da gehen wir. So hier-- die Zahlen kommen nach unten. Wie heißen Sie? DAVEY: Davey. DAVID MALAN: Davey. OK. Kommen Sie nach oben, Davey. Schön dich zu treffen. Und was wir gehen zu müssen, spell--, wenn Sie könnten dort verweilen für nur eine moment-- ist die Nummer 50. Aber, aber, aber doch, aber diese sind Grundschule Magneten aus einem Grund. Ich bin gerade ein wenig härter, alles in Ordnung? Es gibt noch acht. Gut. Also, was haben wir da? Wir haben 32. Nett. 32 plus 16 gibt uns 48-- so nah. Und wunderbar. Herzlichen Glückwunsch an Davey als auch. [BEIFALL] Gut. So können wir dies tun, den ganzen Tag lang, und es wird nicht allzu viel mehr interessanter und anspruchsvoll. Aber das ist wirklich der point-- ist relativ einfach, wie es ist, am Ende des Tages, was für ein Computer Informationen zu speichern, zum Speichern von Eingängen und schließlich speichern oder diese Ausgaben darstellen. Aber Zahlen allein sind nicht alles, was interessant. Also Menschen, vor einigen Jahren, entschieden, weißt du was? Es wäre schön, wenn Computer waren nicht nur Rechner für die Arithmetik Operationen, konnte aber tatsächlich Dinge tun, wie Textverarbeitung, oder E-Mail, oder modernere Inkarnationen dieser Arten von Technologien. Und so entschied sich die Welt willkürlich, sondern universell, dass, wenn Sie wollen, um die Hauptstadt zu speichern Buchstabe A in einem Computer, weißt du was? Lassen Sie uns einfach alle zu speichern zustimmen einige Muster von Nullen und ones-- bits--, die letztlich steht für die Dezimalzahl 65. Wir werden einfach alle einig. 66 darstellen würde B, 67 wäre für C, und es gibt Trauben von anderen Mustern von Nullen und Einsen, oder die zugrunde liegenden Zahlen, das würde bedeuten anderen Buchstaben noch. Also, wenn Sie Art von geistig absorbieren diese für einen Moment, Ich habe bis absichtlich A durch I, wobei H a 72 und I 73 ist. Wenn ein Computer dann, im Rahmen der ein Textverarbeitungsprogramm oder eine E-Mail, unter der Haube aufgedeckt zu haben, diese Muster von bits-- Muster von Bits, die 72, dann 73, dann 33-- was könnte dies in diesem Programm buchstabieren? So hallo, und dann so etwas. Wir wissen nicht unbedingt, aber in der Tat 33-- nicht auf der Karte earlier-- war einfach ein Ausrufezeichen. So betrug 72 H, 73 I, 33 passiert, ein Ausrufezeichen, still zu sein. Aber das ist alles schön und gut, und in der Tat heutzutage anstatt Verwenden Sie nur sieben oder acht Bits, dank etwas Unicode genannt, im Gegensatz in den Tag zu Ascii zurück, wir können tatsächlich repräsentieren noch mehr interessante Charaktere als nur diese ursprünglichen englischen voreingenommen Buchstaben. Aber wir können auch selbst vertreten ordentlicheres Dinge wie Farben. Wenn Sie jemals das Akronym gehört RGB, rot, grün, blau, dass nur bedeutet, dass ein Computer verwendet typischerweise drei Sätze von bits-- eine bestimmte Anzahl von Bits, die darstellen, eine Zahl, wie viel rot Sie wollen, ein weiterer Satz von Bits, die für wie viel grün Sie wollen, und ein anderer Satz Nummer für wie viel blau Sie wollen. So eine große Zahl bedeutet, viele rot, kleine Zahl bedeutet, dass keine rot. Und so sind diese Art der mittleren Werte hier. Also gib mir etwas rot, gib mir etwas grün, und gib mir ein wenig Blau. Und wenn Sie diese drei Farben mischen Farb zusammen, in diesem Fall Sie erhalten diese trüben Schatten von gelb oder braun. Aber das Muster von acht Plus acht und eight-- so 24 bits-- von links nach rechts ist, wie ein Computer bedeuten würde, dass bestimmte Farbe. Nun ist dies nur ein Punkt auf einem Bildschirm. Wenn man sich wirklich nah an Ihrem Fernseher Ihre Computer, werden Sie Punkte oder Pixel zu sehen. Und wenn Sie ein ganzes Raster von Pixel, horizontal und vertikal, Sie haben Bilder. Und dann, wenn Sie nehmen ein Bild und dann waschen zeigen Sie sich ein anderes Bild, ein anderes Bild, ein anderes Bild, ein anderes Bild, sehr schnell, haben Sie natürlich Filme. Und so bemerken, wo wir angefangen haben. Wir begannen mit diesen Nullen und Einsen. Wir arbeiteten von dort in Dezimalzahlen Zahlen, wie wir sie vertreten. Jetzt haben wir die Buchstaben des Alphabets. Aber auch in anderen Kontexten warten, können wir verwenden ein paar mehr Bits und repräsentieren Farben. Sobald Sie das haben Fähigkeit, Farben zu repräsentieren, Sie haben die Fähigkeit, zu vertreten Fotos und animierte Gifs und andere solche Zeichen auf dem Bildschirm. Und wenn Sie haben eine ganze Reihe von Bilder vom menschlichen fliegen auf einmal, es sieht aus wie bewegte Bilder, und so erhalten Sie auch Videos. Also mit diesen sehr einfache Primitive tun wir haben die Art und Weise der Darstellung schließlich alle diese Formen von Medien. Und wir haben wieder abstrahiert und immer wieder, bis wir erhalten von der untersten Ebene auf dieser höchsten Stufe. So gibt, dass uns diese allgemeine Idee der Abstraktion. Aber wir hier begonnen. Hier nun, könnten wir repräsentieren in einem Computer unsere Eingänge mit Nullen und Einsen, unsere Ausgaben in Nullen und Einsen, aber was geht in der Box? Das ist, wo Computer Wissenschaft interessant wird. Das ist, wo Sie tatsächlich bringen Sie Ihre eigenen Geist zu tragen, Probleme zu lösen. Wir können nun festlegen, für die Rest des Semesters, ja. Ich weiß, wie binäre funktioniert. Ich erinnere mich, wie Ascii oder Unicode-- die Abbildung Werke letters--. Und es steht sicher dass wir an die Vernunft repräsentieren Rot und Grün könnte und Blau und repräsentieren als auch Multimedia. Aber das ist die interessante Sachen. Dies ist, was jemand macht der Lage, Probleme zu lösen. Und ein solches Problem, wir gerne tun, in der Tat, nimmt die Teilnahme, oder tun dies algorithmisch. Und wieder, ich könnte dies tun. Ich könnte man tun, zwei, drei, vier fünf, sechs, sieben, acht neun. Und ich konnte es schreiben nach unten Überblick zu behalten. Aber das ist nur, wie ich stellen die Informationen. Oder ich könnte dies tun faster-- zwei, vier, sechs, acht, zehn, 12, 14, 16, 18, 20, 22-- fühlt es sich zweimal, wie so schnell, aber es ist immer noch geht eine ganze Menge Zeit in Anspruch nehmen. Aber es stellt sich heraus, wenn wir noch nutzen weitere resource-- und zwar Computer in diesen Tagen haben mehrere CPUs oder Gehirn. Es stellt sich heraus Computer können tun viele Dinge auf einmal, und in der Tat wir, in diesem Raum, darstellen könnte genau dieses. So ist es ein wenig sozial unbeholfen, aber wenn man es mir Humor nur für einen Prozess in drei Schritten, lassen fragen mich alle an Ort und Stelle gibt es nur stehen für einen Moment auf. Aufstehen. Also denken Sie an sich selbst, die Anzahl one--, so dass jeder in diesem Raum, mit Ausnahme der Personen, die nicht oblige, denken die Nummer eins. Damit ist Ihre Nummer jetzt. Das ist der erste Schritt oder als Informatiker oder ein Programmierer würde in der Regel tun, wir gehen beginnen bei Null zu zählen. Wenn die kleinste Zahl können wir vertreten mit den Glühbirnen Null ist, nur um sie zu verlassen alle weg, könnte ich auch nur Start von der Zählung Null ist, statt einer. Und so ist das, was Informatiker tun. So Null Schritt, aufstehen und denken Sie an die Nummer eins. Der nächste Schritt ist this-- pair off mit jemandem Stehen und fügen Sie Ihre Zahlen zusammen. Wunderbar. Also in diesem Moment in der Zeit, buchstäblich jeder teilnehmenden denkt an die Nummer 2, mit der Ausnahme für eine ungerade Person, wenn wir eine ungerade Anzahl von Personen im Raum. Und nun der dritte Schritt ist hier los zu sollte this-- von euch setzen. Einer von euch hinsetzen sollte, und wenn Sie still stehen, gehen Sie einen Schritt zurück. Gut. Gut. Also immer mehr Menschen sitzen sollte nach unten. Beachten Sie, dass diese induzierte hat ein eine Art Zyklus loop--. Einige von euch sollten ungeschickt geklebt werden, hin und her zwischen dem Schritt ein und zwei, eins und zwei, eins und zwei. Das ist ok. Unser erster Fehler. Wir werden damit umgehen. Gut. Lassen Sie mich versuchen, die Dinge voranzutreiben entlang. In der Theorie nur eine Person steht wie jeder weiter weg zu koppeln. Aber lassen Sie mich die Dinge zu beschleunigen mit den Menschen stehen noch aus. Welche Nummer denken Sie? 46. OK. Gehen Sie voran und setzen Sie sich. Ihr Jungs stehen noch. Wer steht immer noch? Welche Nummer denken Sie? OK. Also werden wir wieder zu euch kommen. In der Rückseite? Was ist das? 22. OK jemand anderes oben top-- ja? 34. OK. Hier drüben auf meinem right-- hier oben? 132, sehr schön. 22? OK. Und wer steht immer noch? Hier drüben? 46, sehr schön. 72. Ich kann nicht viel länger blockieren. Ja? 30, nett. Hier drüben? 23? 23. Und ich denke, dass jeder ist außer euch, kein Druck. Oh, Moment mal. 28? Nur acht. OK. Nur acht. Hier unten? 30. 23. 24. 18. Dies ist die schlimmste Umsetzung dieses Algorithmus je. OK. So jemand anderes? Irgendjemand anderes? OK. Einer noch. 16? OK. 16. Gut. Also, wenn ich jemand nicht verpasst haben, in die Blendung hier, wenn ich drücken Sie die Eingabetaste, wir werden sehen, algorithmisch, die Gesamtzahl der Menschen in Sanders. Weil wieder, es ist, als ob jeder wie Sie setzte sich, übergeben Sie Ihre Nummer aus an jemand anderen, jemand anderes, an jemand anderen, so dass in der Theorie, am Ende, nur eine peinliche Person sollte stehen gelassen werden. Aber das ist in Ordnung. Wir beschleunigt Dinge manuell auf. Es ist besonders schwer zu sehen, in diesem besonderen Raum. Und die Gesamtzahl der Personen wir denken, dass es hier ist 546. Die Gesamtzahl Ich war handed durch die Lehre Stipendiaten, wer es getan hat, die alte langsame Art der Schule war 820. [LACHEN] [BEIFALL] Das ist ok. So sicher dann gibt es diese Fehler. Und das ist in Ordnung. Und so denken Sie zurück auf diese das erste Mal etwas Sie schreiben nicht unbedingt funktioniert. Das hat mir auch hier passiert ist. Aber lassen Sie jetzt uns überlegen, wie wir könnten gelten diese gleiche Idee zu etwas Sie könnten vor gesehen haben, die ist diese alte Schule Technologie hier-- ein wirklich großes Telefonbuch. Und angenommen, dass dieses Telefonbuch hat 1.000 Seiten und 1.000 Namen und Zahlen alphabetisch im Inneren. Nun, wir könnten Art anwenden, eine ähnliche Idee zu diesem sehr körperliches Problem, mit mir gerade. Ich nur irgendwie betrogen von allen von Ihnen nutzen mit vielen, vielen verschiedenen CPUs oder Gehirne einige Algorithmus ausführt. Aber wenn es nur wenig ist alt mir, kann ich immer noch nutzen das gleiche Wesen einer Idee teilen und erobern das Problem wieder und wieder, wobei die Hälfte von euch, die Hälfte von euch, die Hälfte von euch, die Hälfte von euch, theoretisch gehalten sitzen, bis wir links, theoretisch, mit nur einer Person. Also in diesem alten Schule technology-- wir nicht müssen diese map-- diese alte Schule Technologie, wir beginnen könnte für jemanden, wie Mike Smith, eine Seite zu einem Zeitpunkt. Und ich sehe, dass nein, Mike ist nicht hier. Ich bin immer noch in der A-Seite. Schließlich finde ich mich in der B-Seite. Und das ist ein algorithm-- Schritt-für-Schritt-Anleitung. Beginnen Sie am Anfang und eine Seite zu einer Zeit, suchen Sie nach Mike Smith. Ist das correct-- diese Algorithmus oder Ansatz? Ja, es ist richtig. Wenn Mike ist hier, schließlich Ich werde mit ihm zu bekommen. Aber es ist nicht effizient. Es ist natürlich sehr langsam. So kann ich nutzen, um die gleiche twosies nähern. Ich kann Art von zwei tun, vier, sechs, acht, 10, 12. Es ist doppelt so schnell. Ich werde Mike zu bekommen schneller, wenn er da ist. Ist es richtig? Ja, aber ich hörte ein little-- Nr. Nun hörte ich eine Nr. Ja. Es gibt möglicherweise einen Fehler. Vielleicht Mike bekommt nur aus Versehen zwischen zwei Seiten eingeklemmt, weil ich fliege durch diese zwei Stufen auf einmal. So zumindest müssen wir einige Art der bedingten fix. Ich muss sagen, hey, wenn traf ich jemanden, dessen Name beginnt mit einem T anstelle eines S, Ich doppelt besser zurück mindestens eine Seite. So Buggy auf den ersten, aber fixierbar. Aber keiner von uns gehen zu suchen Mike Smith durch eine 1000-Seite Telefon eine Seite zu einem Zeitpunkt buchen. Was ist ein normaler Mensch tun? Sie gehen zu den S ist zu gehen, wenn Sie wüssten, wo die S ist. Sie könnten etwa in die Mitte gehen oder leicht gegen Ende schief. Und ich sehe hier unten und Ich bin in der M-Seite. Aber was wissen Sie über dieses Problem ist jetzt, dass wir nicht unbedingt wussten vor mit allen von uns zählen nur uns selbst äquivalent? Nun, Mike ist klar gehen in dieser Hälfte des Buches zu sein wenn er hier überhaupt ist, weil es sortiert. Und so können Sie sehr dramatically-- [Keuchend] Ich kenne. [BEIFALL] Es ist eigentlich wirklich einfach, wenn Sie tun es dort den Rücken hinunter. Aber Sie können dann werfen Hälfte des Problems entfernt. Nun, ich bin mit dem gleichen problem-- links Mike Smith in einem Telefon finden book-- aber jetzt ist das Telefonbuch beginnt bei M und geht bis Z, aber es ist halb so groß. Aber das ist, was beeindruckend ist. Genau wie in der Theorie, Jungs, wenn Sie alle saßen nur die Hälfte zu einer Zeit nach unten, das Problem bekam halb so groß, halb so groß, wieder und wieder. So wurde dieses Problem geworden die gleiche Problem, aber nur halb so groß. Jetzt ist es ein 250 Seiten Problem. Sobald ich merke, oh, ich bin im T-Abschnitt aus Versehen. Ich habe zu weit gegangen. Ich kann, dass die Hälfte werfen des Telefonbuchs entfernt. Nun, ich bin bis auf eine Quartal des Problems. Und Sie können wiederholen, wiederholen, wiederholen, bis in der Theorie, du bist mit nur einer Seite links. Und wenn Mike auf dieser Seite ist, Ich kann jetzt dieses Problem zu lösen. Aber wie schnell habe ich es lösen? Im ersten Fall, es hat mich wie vielleicht 1000 Schritte Mike Smith zu finden. Es könnte genommen mich- Ich nahm das Telefonbuch nach oben und ich begann, mich eine Seite zu einem Zeitpunkt, und Mike könnte 1000 Seiten später sein. Zweiter Ansatz vielleicht nimmt mich 500 Stufen, weil ich fliege durch zwei zu einer Zeit. Und der dritte Ansatz aber, es ist besonders leistungsstark. Aber lassen Sie uns überlegen, was wir eigentlich hat mit diesem dritten Ansatz. Ich werde, was ich nenne nur diese Aussagen hier zu einem Zeitpunkt ein. Pick-up ein Telefonbuch. Öffnen Sie in die Mitte des Telefonbuchs. Schauen Sie sich Namen. Und dann werden die Dinge ein wenig intellektuell interessant, wenn noch einfach. Wenn Smith gehört zu den Namen auf dieser aktuellen Seite, dann tun bedingt etwas. Es ist wie eine Gabel in der Straße. Rufen Sie Mike. Wenn Mike ist unter den Namen auf dieser Seite, genannt Mike. Aber nur tun Linie vier, wenn Linie Baum, wenn man so will, ist wahr. Die Antwort auf diese Frage lautet: Ja. Else, wenn Smith ist früher in der book-- in anderen Worten, wenn ich in der M Abschnitt bin und ich bin auf der Suche nach jemandem zu die linke, was dann soll ich tun etwas ist sehr ähnlich. Dann sollte ich bis zur Mitte öffnen der linken Hälfte des Buches. So gehen Sie nach links, und dann gehen Sie zurück zu Schritt zwei. Schauen Sie sich dort die Namen. Also mit anderen Worten, das gleiche tun, aber auf ein Problem, das ist halbiert. Sie wissen, was sonst? Wenn Smith ist später im Buch basierend auf der Seite an ich bin auf der Suche, offen Mitte der rechte Hälfte des Buches und dann gehen Sie wieder zurück Schritt zwei, else-- es gibt hier eine vierte Möglichkeit. Mike hier oder nach links oder nach rechts, oder nicht. Und hier haben wir das besser berücksichtigen. Und in der Tat, wenn Sie jemals hatte Ihr Computer nur auf Sie abstürzen, das ist manchmal, jedoch nicht immer, die Ergebnis von nur einem menschlichen Programmierer nicht Realisierung, oh schießen, gibt es tatsächlich das vierte Szenario. Und wenn Sie nicht schreiben Code dieses Szenario zu behandeln, manchmal weiß man nicht, was könnte der Computer tun. Und in der Tat könnte ein Programm zum Absturz bringen. Aber in diesem Fall, dachte ich, darüber, und ich sagte, sonst verlassen, denn das ist die vierte logische mögliches Szenario. Jetzt wollen wir nur noch hinzufügen einige Wortschatz, so dass wir kann beginnen um Bedingungen zu werfen, dass sind ansonsten ziemlich intuitiv. Alle Dinge, ich habe gerade in gelb hier hervorgehoben, Ich werde einfach die Funktionen oder Prozeduren. Sie sind nur eine Art von Aktionen. So holen, offen zu suchen, an, rufen, offen, offen, quit-- diese nur Aktionen sind, oder wir werden nennen sie mehr formal, Funktionen. Inzwischen nun in gelb, Ich habe Dinge hervorgehoben dass-- wir einfach lostelefonieren sie Bedingungen oder Zweige. Dies sind Entscheidungspunkte, an denen Sie könnten auf diese Weise, auf diese Weise gehen, oder eine andere Richtung noch. So werden diejenigen Bedingungen sein. Und jetzt ist dieses ein wenig schicker. Lassen Sie uns diese Fragen rufen Boolesche Ausdrücke, nachdem jemand mit einem Nachnamen Bool. Und ein boolescher Ausdruck ist nur etwas das ist entweder wahr oder falsch, ja oder nein. So ist es die Frage, deren Antwort Sie kümmern uns um, so dass in einem Zustand, machen eine decision-- eine Antwort zurück, und dann gehen Sie nach links oder rechts, oder etwas ganz anderes. Und dann schließlich diese hier-- Linien zurück zwei Schritt zurück Schritt two-- wir konnten diese Idee auf verschiedene Weise implementieren. Und dann die von Ihnen mit Programmiererfahrung getan haben könnte oder tun dies anders vorstellen. Aber für die Zwecke von heute, ist es nur die Idee, was zählt. Dies veranlasst, was wir werden in der Regel rufen ein eine Art Zyklus loop--, weil es macht mich wieder etwas tun. So, jetzt lassen Sie uns einfach betrachten wie gut dieses Algorithmus ist. Es ist richtig. Wenn Mike in dem Buch, es ist eines der diese vier scenarios-- immer wieder und wieder, wir werden ihn finden. Aber wie gut ist es? Nun, wir haben nicht werden hier auch formal. Aber lassen Sie uns einfach plotten etwas, x und y, zu erhalten, ein Gefühl für die Form dieses Problem. Auf der x-Achse ist hier die Größe meines Problems. Und sie eine y-Achse hier wird die Zeit zu lösen. Vielleicht ist dies der Anzahl der Seiten. Vielleicht ist dies Sekunden oder Seite turns-- was auch immer. Jedoch Sie zählen wollen, ist was wird das Bild darstellen. Und das erste Algorithmus, ich werde als nur eine gerade Linie zu beschreiben. Wenn es gibt, n-Seiten in das Telefonbuch, dann ist es vielleicht nehmen Sie mir so viele als n Schritte Mike zu finden. Wenn Verizon oder die Telefongesellschaft im nächsten Jahr fügt eine weitere Seite, es könnte nehmen mir noch eine step-- eine Einheit von Zeit Mike zu finden. Also gibt es nur dieses zu-Eins-Verhältnis. Es ist eine gerade Linie Hang. Inzwischen, das zweite algorithm-- wenn ich gehen zwei auf Zeit-- zwei, vier, sechs, acht oder double-- Gehen Sie durch die Seiten zweimal zu einem Zeitpunkt, zwei zu einer Zeit, es ist immer noch gerade Linie. Es gibt jetzt eine 1.59 Verhältnis, aber nur ein wenig niedriger. Also, wenn es so viele Seiten auf der Karte hier in gelb, das könnte nehmen mir diese viele Schritte oder Sekunden, andernfalls es geht um mich zu nehmen doppelt so viele auf der roten Linie. Aber die grüne Linie ist die eigentliche Essen zum Mitnehmen. Dies ist, was wir in der Regel rufen Sie einen logorithm-- log von n, wobei n die Anzahl der Seiten ist. Aber es ist die Form, was zählt heute, weil wir nicht haben, zu denken, auch über Punkte aufgetragen ist. Denken Sie an einem extremen Szenario. Nehmen wir an Verizon morgen verdoppelt sich die Anzahl der Seiten in diesem Telefonbuch, von 1.000 bis 2.000. In dem ersten Algorithmus, I könnte eine zusätzliche 1.000 verschwenden Schritte für Mike suchen, nur weil Verizon verdoppelt die Größe des Buches. Die zweite algorithm-- es könnte nimm mich eine zusätzliche 500 Stufen. 1000 weitere Seiten, gehe ich zwei auf Zeit-- 500 weitere Schritte Mike zu finden. Aber das dritte Algorithmus Art magische ist. Verizon verdoppelt sich die Anzahl Seiten 1000 bis 2000, aber wie viele Schritte tut es mich für Mike zu suchen? Es ist nur eine, weil ich es kann nur Reißen Sie das Telefonbuch ein weiteres Mal von einem 2000 Seite Problem ein 1000 Seite Problem, und voila. Ich habe einen massiven Biss aus ihm heraus genommen. Und wenn man dann wirklich extrem, nehme an, dass das Telefonbuch Unternehmen hatte etwas verrückt wie eine 4 Milliarden Seite Telefonbuch. Nun, wie viele Schritte könnte es dauern, Mike Smith in einem 4 zu finden Mrd. Seite Telefonbuch? Es ist eine große Zahl, aber nur 4 Milliarden 2000000000-1000000000 zu über 500 Mio 250 million-- noch klingt wie große Zahlen, aber ich bin sehr schnell immer zu kleineren Werten. Und in der Tat, wenn ich die Mathematik Recht, kann ich nur teilen 4 Milliarden um etwa das 32-fache vor Ich erhalte auf nur ein. Also, wenn das Telefonbuch waren 4 Milliarden Seiten lang, keine große Sache. Innerhalb von wenigen Sekunden, vielleicht 32 Sekunden, konnte ich es in zwei Hälften teilen und finden schließlich Mike oder dem Schluss, dass er nicht da ist. Und das ist das Wesen eines algorithm-- einen guten Algorithmus. Und das ist einer der Ziele einer Klasse wie diese, Ich versucht, herauszufinden, wie zu tun lösen das Problem nicht nur richtig, wie ich wusste immer, wie es ein zu tun Seite an einem Zeit-- aber richtig und gut. Wie gestalte ich gut Lösungen für Probleme? Also lassen Sie uns einen Moment hier und geben Ihnen ein Gefühl jetzt der Verlauf der CS50 itself-- einführen ein Mitarbeiter einige Kursteilnehmer. Kurz vor 2.00 Uhr, werden wir nehmen Sie eine kurze Pause so dass diejenigen von Ihnen, wer einkaufen können Ente aus und nehmen ein Blick auf einige andere Klasse und beobachten Sie den Rest dieses online. Aber jetzt lassen Sie mich CS50, die Klasse selbst, und vor allem, was neu ist. So ist die im vergangenen Frühjahr, wir verbrachte ziemlich viel Zeit-- den Kurs der Mitarbeiter und I-- denken über das, was es ist wollen wir CS50 zu sein, und geht zurück zum ersten Prinzipien, so zu sprechen, zu überlegen, was es ist, wir wollen dieser Kurs aussehen und sein wie für ihre Schüler. Und so werden Sie in Problem sehen auf Null gesetzt und eine Einladung einen Blick auf das zu nehmen URL, die einen Überblick über einige der Beweggründe für die Folgende Merkmale des Herbstes 2016. So wie Sie aufgelesen haben von der TL: DR Handout, der Lehrplan heute sowie von der Kurskatalog, in diesem Jahr in CS50, Sie nur zu besuchen erwartet today-- so gut Job done-- und der letzte Vortrag am 21. November statt. Und Sie sind willkommen, aber nicht zu erwarten besuchen diese Vorträge in der Mitte, weil das, was wir tun, In diesem Jahr dreht in Echtzeit Material den Kurs des. So wird alles bleiben Strom und eingebaut als beste can-- wir aktuelle Ereignisse und Gespräche, die Leute könnten in der Industrie werden mit in die Welt, sondern macht das Material vorhanden, als ein Ergebnis, auch earlier-- komplett mit Volltext-Transkripte und die Auffindbarkeit und die Links zu anderen Ressourcen. Und in der Tat, wir haben gewesen behaupten einige Zeit und glauben wir nun diese, dass wir schaffen können, digital, ein noch intensiveres, ein zwingender pädagogische Erfahrung, im Gegensatz hier etwa 23 mal zu sammeln persönlich, wie ich hörte jemand einfach über Informatik sprechen, im Gegensatz aktiver zu engagieren. So werden Sie in den Kurs der Lehrplan sehen eine Skizze des Semesters hier, zusammen mit, wenn Vorträge gefilmt werden, an dem du bist willkommen, aber nicht zu erwarten, und wann wird sie auf den Kurs der Website veröffentlicht werden. Und was wir hier tun auf Mittwoch nächste Woche, nur ist viel mehr eng mit jene Leute, die teilnehmen möchten, durch eine sogenannte Spaziergang machen, wo ich und die Köpfe des Kurs tatsächlich Dinge machen ein wenig intimer hier unten im Orchester Abschnitt, haben noch einige Technologie und zu Fuß durch die aktuellen Woche Problem Set, und bieten Ihnen particularly-- wenn unter die weniger comfortable-- umso mehr Anleitung, die Sie vielleicht wollen oder müssen für die Woche Herausforderung. Und für diejenigen, ähnlich, die es nicht können diejenigen, die in Person, keine große Sache teilnehmen. Es wird ähnlich der Leitung von einer der leitenden Angestellten Kurs, Zamalya, die gleiche Chance eingebettet in dem Problem setzt sich. Problem stellt in diesem Jahr wird am Freitag veröffentlicht und nicht mehr tun Sieben Tage später, aber 10 Tage later-- bewusst mit jedem Problem überlappende gesetzt, um so besser aufnehmen, wir hoffen, Ebbe und Flut in Studentenzeiten, vor allem, wenn Midterms oder in der Leichtathletik oder Akademiker oder extracurriculars neigen dazu, zu kommen und zu gehen insbesondere Mitte Semester. Das sollten Sie ein wenig mehr geben nach eigenem Ermessen entscheiden, ob Sie Front laden Sie Ihre Woche mit CS50 oder zurück Last anstatt es am folgenden Wochenende. Also schauen auf den Kurs des Lehrplans hier für den Zeitplan davon. Und Sie werden auch feststellen, unter die Änderungen in diesem Jahr, für diejenigen, die mehr vertraut mit Programmierung in der Vergangenheit, wir werden die Semester beginnen, wir werden heute in Scratch, konzentrieren sich vor allem auf die Sprache C, genannt und dann nicht über PHP, sondern auf eine Sprache namens Python gegen Ende des Semesters im Zusammenhang mit Web-Programmierung, zusammen mit SQL und JavaScript, HTML, CSS, und noch mehr. Und in der Antwort auf eine FAQ, es ist in der Tat der Fall, dass CS ist nicht so gefährlich, wie ich einmal dachte, es war, aber es ist so viel Arbeit wie ich gehört hatte, könnte es sein. Aber das ist die sagen, dass hier einige sind Statistiken aus dem Herbst 2015 Studenten, wobei die horizontalen blauen Linien repräsentieren die durchschnittliche Anzahl der Stunden, berichtet. Und Sie werden im Durchschnitt sehen sechs bis 10 bis 12-- vielleicht 16 oder so und so weiter, aber mit hohe Varianz klar zu sein. Und so erkennen, dass es nicht nur Studenten bequemer und weniger im Verlauf komfortabel, aber eine entsprechende Unterstützung Struktur die Schüler zu bekommen durch das Semester erfolgreich. Ja, in Antwort auf eine FAQ, sollten Sie nehmen CS50 als erstes Jahr? Absolut. Und in der Tat, ich bereue nicht meinen Weg gefunden zu haben, oder fand ein neues Feld in diesem ersten Jahr als gut. Und sollten Sie CS50 nehmen mit andere Kurse, sicherlich als well-- und die allgemeine Beratung könnten wir geben den Studenten, dass CS50 ist wahrscheinlich nicht die Art von Klasse oder Intro-Klasse dass Sie sollten mit drei nehmen andere oder vier andere p-Set-Klassen. Aber wenn Sie nehmen zwei weitere p-Set Klassen, etwas anderes, und CS50, absolut überschaubar. Ich habe in den vielen Studenten hatten Vergangenheit so recht erfolgreich getan. Und euch auf das, bekommen Ziellinie erfolgreich, ist der Kurs haben sections-- verschiedene Strecken für Studenten weniger bequem, bequemer, und irgendwo dazwischen, wobei im Laufe des erste Problem Satz, Sie finden sich zu beschreiben gefragt. Und wenn Sie gehören zu den weniger komfortabel, es ist die Art der Sache dass man einfach nicht wissen. Und in der Tat, das ist schon die wachsende demographische in CS50 für eine ganze Reihe von Jahren. Wie in der letzten Herbst für Beispiel 58% der Klasse bezeichneten sich als unter denen, weniger bequem, mit 9% unter jenen mehr komfortabel, und dann die anderen Schüler dort in rot selbst beschreiben als irgendwo dazwischen. Und Sie werden sehen hier die Themen Gesamt und Zeitplan von Abschnitten, von denen alle sind persönlich angeboten, in Echtzeit, mit dem Verlauf des erstaunliche Personal von Lehre Stipendiaten und natürlich Assistenten, von denen einige Sie werden in nur einem Augenblick treffen. Abschnitte selbst, wie Sie sehen werden, wird sein montags und dienstags und mittwochs, um zu ermöglichen, Sie tauchen in nach Eingriff, wenn Sie so wählen, im Laufe des in dieser Woche Vorlesung früher. Und dann Stunden Büro, das sicher, mit jedem Jahr, nicht weniger von einer gewesen Herausforderung für den Kurs. Und in diesem Jahr planen wir nicht nur zu halten Büro hours-- ein auf der einen Möglichkeiten für Hilfe Studenten mittwochs donnerstags und Sonntag, der letzte von denen, wobei am Nachmittag durch Design einige der Stress zu reduzieren, unweigerlich entsteht mit spät in die Nacht p-settting mit einer Frist looming-- aber der Bürozeiten wird auch angeboten werden montags und dienstags und Mittwochs und freitags und samstags, Dank an unsere Freunde an HSA. CS50 hat jetzt seinen eigenen Raum für Studenten und CS50 Personal, oben auf 67 Mount Auburn Street, genau dort in Harvard Square. Die Vision, für die ist, dass CS50 ist TFs und Zertifizierungsstellen in der gesamten Woche, so ziemlich überall in den meisten Tagen wird für die Unterstützung da sein. Also, wenn Sie haben einige bekam Frage auf einem p-Set oder Sie fühlen sich ein wenig blockiert oder ein wenig verwirrt, und Teufel, du hast eine Stunde bekam oder eine halbe Stunde zwischen den Klassen, vor allem in der square-- können Sie Pop in und haben die Frage beantwortet davon haben, dass eine Verwechslung clarified-- sehr viel im Geiste, Sie sind vertraut, der Mathematik Abteilung eigene mathematische Fragen Zentrum, aber ziemlich viel rund um die Uhr per [? Gcal?], Die wir online veröffentlichen wird. Tutoring ist auch für diejenigen, Studenten, frei aus dem Kurs des eigene Mitarbeiter, wenn Sie möchten, intimer eins zu eins, oder zwei oder drei Mitschülern nur, arbeiten mit einem der Mitarbeiter des Kurses. Und in der Tat sind diese hier nur einige der Mitarbeiter den Kurs, einige von ihnen werden Sie in nur einem Augenblick treffen. In der Tat, CS50 eigenen Kopf Lehre Kerl, und Kopf Kurs Assistent und Lehrer, kommen könnte, erlauben sie zu sagen, hallo. [BEIFALL] Sprecher 1: [unverständlich]. [BEIFALL] SPRECHER 2: [unverständlich]. [BEIFALL] Lautsprecher 3: [unverständlich]. [BEIFALL] DAVID MALAN: Und lassen Sie uns bringen an Bord zwei von CS50 esten als auch leitende Angestellte, Rob und Zamayla. [BEIFALL] Tatsächlich sowohl Rob und Zamayla haben bei uns so lange, dass ich war in der Lage in CS50 Archiven zu gehen und finden Sie diese sehr SD Aufnahmen von ihnen beteiligten auf der Bühne vor einigen Jahren selbst. ROB: [unverständlich]. [BEIFALL] ZAMAYLA: [unverständlich] [BEIFALL] DAVID MALAN: Vielen Dank. So zusätzlich zu diesen Teammitglieder hier, CS50 verfügt über ein Team von fast 100 Mitarbeiter, von denen alle wird für die Abschnitte zur Verfügung und Bürozeiten und vieles mehr. Und wie Rob auch sagt, ist dies die bedeutendste Überholung von CS50 in den 10 Jahren, in denen Ich habe in gewesen [unverständlich]. [Unverständlich] konzentrierte sich vor allem in eine Trägerstruktur, viel Wegschneiden die Masse, die gewesen ist in 10 Jahren angesammelt iterativer Entwicklungen auf das Problem setzt Kurs. Also in diesem Jahr, nicht nur in der Klasse, aber auch in Form des Problems des Kurs Sätze, sollten Sie Dinge zu werden schlanker, Trimmer, viel überschaubarer als in den vergangenen Jahren, als wir Schuppen das Gepäck einige das ist von der Natur der sich entwickelnden Jahr entwickelt Jahr und Iterieren. So ist die neue und verbesserte beginnt heute. Sie werden etwas mehr von der treffen Natürlich Mitarbeiter in der [unverständlich] um 2:30, wo wir tätig sind, als Tradition, Kuchen. Es ist ein bisschen mehr Kuchen dass als, aber Sie werden treffen Erin und Tobias und andere noch. Und lassen Sie mich Ihnen eine Tour, bevor wir hören von einigen der anderen Mitarbeiter in der Klasse, was auch erwartet. In der Tat, beginnen wir CS50 ist immer Semester am kommenden Samstag, mit dem, was CS50 Puzzle Tag genannt wird. Es hat nichts damit zu tun, Informatik per se, aber mit über Problem allgemein zu lösen. Und wenn man so wählen, teilzunehmen, pro einige der Einladungen, Sie haben Tür vielleicht gesehen hier fallen gelassen oder auf der Bühne, es ist eine Gelegenheit, in Teams von zwei oder drei oder vier, für Rätsel und Pizza zu beteiligen und Preise und more-- an diesem Samstag, Bleibt dran. Sie werden auch feststellen, dass jeder Freitag, um Feuer und Eis, CS50 bringt ein ganze Reihe von Studenten zum Mittagessen, eine große zu machen fühlen Klasse intimer, und in der Regel zusammen zu bringen Alumni und Freunde aus der Industrie reden über das, was sie haben gewesen zu seit dem Abschluss. In ähnlicher Weise wird in diesem Jahr wir einweihen CS50 die erste 50 Codierung contest-- einen mittleren Semester Gelegenheit, damit jeder auf einer Opt-in-Basis, ein zu haben Herausforderung der Verstand gegen Mitschüler, wieder in Teams von zwei oder drei oder vier, nur dass die Programmierung mit kapieren, dass man dann unter Gürtel nach nur sechs oder sieben Wochen der Klasse, und die Teilnahme in dieser Art von Wettbewerb online-- wenn Sie möchten, dass Ihre eigenen zu schärfen Fähigkeiten umso mehr in dieser Herausforderung. Am Ende des Semesters ist die sogenannte CS50 Hackathon-- eine Gelegenheit, die um 7:00 Uhr beginnt PM endet um 7:00 Uhr, und auf dem Weg sind 12 Abendstunden, in denen zu tauchen in die endgültige project-- Kurs eine Gelegenheit zu entwerfen und die meisten etwas von Interesse durch Sie mit Ihrem Unterricht Kollegen Führung. Rund um 9.00 Uhr der Regel tun wir servieren Pizza, 01.00, Philippe, und die wenigen von uns die um 5:00 Uhr noch wach sind, sind Shuttle-Bussen nach unten die Straße nach IHOP zum Frühstück. Und dann ein paar Tage später ist die sogenannte CS50 fare-- ein Ende der Semesterausstellung Fest nur, wie weit so viele von CS50 haben Studenten kommen aus Woche Null den ganzen Weg zu Woche, und wenn man bedenkt, dass 73% der Befragten, Mitschüler und Ihnen in diesem Jahr haben noch nie eine CS-Klasse übernommen. In der Tat, wie viel noch einmal hervorzuheben, hier ist ein paar von CS50 Mitarbeiter mehr Gesichter. Lautsprecher 4: [unverständlich]. Lautsprecher 5: [unverständlich]. Lautsprecher 6: [unverständlich]. Lautsprecher 7: [unverständlich]. Lautsprecher 8: [unverständlich] Lautsprecher 9: [unverständlich]. Lautsprecher 4: [unverständlich]. 10 SPRECHER: [unverständlich]. 11 SPRECHER: [unverständlich]. 12 SPRECHER: [unverständlich]. 13 SPRECHER: [unverständlich] 14 SPRECHER: [unverständlich]. 13 SPRECHER: [unverständlich]. 15 SPRECHER: [unverständlich] 16 SPRECHER: [unverständlich]. 11 SPRECHER: [unverständlich] Lautsprecher 5: [unverständlich]. DAVID MALAN: Ein Teil der Mannschaft selbst einkaufen Klassen. Aber wenn diejenigen Mitglieder hier von CS50 Mitarbeiter sind, kommen konnte nur für einen Moment. CS50 TFS und CAs und [? Personal?] Mitglieder hier-- das sind nur ein paar der faces-- von denen nur Sie sah, und ein paar other-- und ein paar andere immer noch. Warum gehen wir nicht weiter und erlauben euch fünf Minuten Pause. Wenn Sie sich zu ducken, um Shop Klassen, das ist in Ordnung. Und in fünf Minuten, wir werden wieder aufnehmen, einen Blick auf Scratch-- Einnahme der ersten unserer Programmiersprache, treffen den Kurs der Mitarbeiter hier etwas mehr, und konzentrieren sich letztlich auf Problem auf Null gesetzt. Also werden wir zurück in fünf Minuten. [BEIFALL] Gut. So sind wir zurück. Und in unserer verbleibenden Zeit heute, ist das Ziel ist das Spielfeld Ebene in Bezug auf einige Terminologie, in Bezug auf einige Ideen. Denn in der Tat, wie pro einige der Charts früher, es geht um eine Reihe von zu sein Ebenen der Erfahrung in der Klasse, einige von deren Studenten einige Programmierung vor genommen, von denen einige nicht. Und so mit diesem ersten Problem gesetzt und mit dieser ersten Sprache haben wir die Möglichkeit haben, zu starten für nach dem heutigen Tag bewilligt zu nehmen einige gemeinsames Vokabular und Idee. Und wir werden dies tun haft den Kurs des ersten languages-- zusätzlich zu C und Python und JavaScript und SQL und HTML und CSS, wir werden zunächst konzentrieren und nur für Problem auf Null gesetzt auf dieser grafischen Sprache, die so genannte Scratch, entwickelt von Media Lab des MIT auf der Straße, zu helfen, Studenten und Kinder besonders äußern sich algorithmically-- in einer Art und Weise mehr im Einklang mit dem, was wir könnten rechnerische Denken nennen. Und es ist eine nützliche Sprache, weil sehr schnell nächste Woche in der ersten Woche, Sie über wir zu einer traditionelle und obskure Sprache genannt C, die rein textliche ist. Sie verwenden Ihre Tastatur in um Anweisungen zu schreiben wie diese auf dem Bildschirm. Aber auch wenn Sie noch nie gesehen eine Programmiersprache vor, in nur einem Blick auf dies alles sei es kryptisch, Sie können sich wahrscheinlich vorstellen, dass wahrscheinlich druckt Hallo Welt. Aber es gibt eine Menge von syntaktischen Kopf dort. Es ist die seltsame Hash Symbol oder Hash-Tag bis oben. Es gibt die spitzen Klammern, einige Klammern, geschweifte Klammern, halb colon-- es gibt nur so viel visuelle Syntax, die in die Quere kommt. Wir beginnen den Kurs mit Scratch, um zu bekommen vorbei an all derer, intellektuell uninteressant Ablenkungen, und konzentrieren sich stattdessen auf die Ideen. In der Tat könnte dies zuvor. Dies hierfür Woche wird nach sein. Damit in dieser grafischen Sprache Scratch, ist, wie Sie das gleiche implementieren würde program-- ein Programm, das bei der Ausführung, einfach sagt hallo Welt. Und was ist schön, über Scratch ist dass es diese grafische Programmierung Umgebung, die Puzzleteile verwendet oder Blöcke, die nur miteinander verzahnen wenn es logisch, sinnvoll ist, dies zu tun. Und mit Scratch können Sie entwickeln Animationen und interaktive Spiele und Kunst, und eine beliebige Anzahl von Dingen, die Sie können in Ihrem eigenen Verstand vorstellen, und setzen sie einfach durch Ziehen und Puzzleteile fallen. Und in der Tat, haben wir die Möglichkeit, einige der gleichen Ideen auszudrücken dass ich bereits erwähnt nur einen Moment vor im Rahmen von Mike Smith und die Suche eines Telefons book-- Dinge wie Funktionen, nur Aktionen, Dinge wie Schleifen, die tun Dinge wieder und wieder, Variablen, die ist etwas wir vorstellen, aber es ist bekannt vielleicht aus algebra-- nur eine Art Platzhalter einen gewissen Wert zu speichern Sie könnte müssen later-- Booleschen Ausdrücken, wo diejenigen, ja nein oder wahr Falsch-Fragen aus der Zeit vor. Die Bedingungen sind diese Gabeln in der road-- diejenigen Zweige sozusagen. Und dann gibt es einige ausgefallenere Funktionen, die wir heute noch sehen werden, genannt Arrays und Fäden und Veranstaltungen, dass wir dann erneut über Zeit in verschiedenen Sprachen. Aber Scratch ermöglicht es uns, alle diese zu erkunden. Also hier in Scratch, diese lila Block ist, was eine Funktion ist typischerweise gehen aussehen. Dieser lila Puzzlestück, das einige hat Wort wie sagen wir, die die Aktion, und dann könnte es haben ein Argument oder eine parameter-- irgendeine Weise der Art von Customizing was das Block tut so, dass es durch nicht vorherbestimmt MIT, was diese lila Block sagt. In der Tat, werden Sie in einem sehen Moment, dass ich bin in der Lage zu geben Wörter wie hallo Welt, oder Hallo David, oder hallo Zamayla, oder was auch immer ich will, in dem Argument zu diesem Puzzle piece-- das weiße Feld Dort. Inzwischen, wenn ich eine Schleife wollen, werden wir sehen, dass Puzzleteile gibt es, dass schauen ein wenig Orange wie diese. Und ihre Form Art schlägt vor, davon etwas passiert immer wieder in einem Zyklus. Also, wenn ich sagen wickeln ein Hallo Welt Block mit einem für immer in Scratch blockieren, es ist nur zu sagen, gehen zu halten hallo Welt für immer, ganz wörtlich. Inzwischen gibt es eine andere Art der Schleife in Scratch dass wir see-- eine Wiederholung BLOCK-- wo, wenn Sie im Voraus wissen, wie oft Sie wollen, dass die Schleife ausgeführt eine endliche Anzahl von Malen in fact-- Sie angeben, dass in einer Reihe durch Eingabe von oder sogar in einer variablen Einstecken, wie x oder y wie wir sehen werden. In der Tat, Variablen wie i in diesem Fall die ist ein gemeinsamer Name für eine Integer-Variable, nur speichert eine number-- eine ganze Zahl auch sein mag, Diese orange-Block zu verwenden hier eine Variable, wie ich auf Null. Hier ist ein Beispiel in Grün ein Booleschen Ausdruck in Scratch. Auch wenn dies sieht aus wie ein Mathe Formel, Mathematik Ungleichheiten wie diese wirklich sind Boolesche Ausdrücke. Dies ist entweder wahr oder falsch. I weniger als 50. Es ist entweder ein Ja oder keine Antwort oder wahr oder falsch Antwort. Und wir werden in der Regel rufen diese Booleschen Ausdrücken. Und es muss nicht 50 sein. Es kann als y x weniger, größer als y, gleich Y- eine beliebige Anzahl anderer Fragen sollten geprüft werden. Nun, auf den ersten Blick könnte dies aussehen plötzlich ganz fett hier, und es ist. Aber Konzept weise, es ist ziemlich vertraut aus der Zeit vor. Wenn x kleiner als y ist, als sagen, wie viel. Else, wenn x größer ist als y, sagen dann so viel. Else sagen x zu y gleich ist. So haben wir ein Beispiel dort einer dritten scenario-- die einzige dritte possibility-- x entweder größer als, kleiner als oder gleich. So haben wir eine Drei-Wege-Gabel in der Straße. Und bemerken, was ist cool hier-- Scratch, wie es scheint, hat nur ein Puzzle Stück, in diesem Fall, wenn auch Block. Und doch wäre das scheint Sie zu implizieren nur haben eine Zwei-Wege-Gabel in der Straße. Sie können links oder rechts gehen, aber was ist mit dem dritten Szenario? Was ist, wenn x gleich y? Keine große Sache. Nehmen Sie ein Puzzleteil, setzen ein anderer in der es die semantische Äquivalent zu schaffen Sie if, else, wenn else-- und jetzt haben Ihre Drei-Wege-Gabel in der Straße. sehen und wie wir, die Scratch Puzzleteile gestreckt werden und wachsen können, so wie, um mehr Sachen in ihnen stopfen. Sie müssen nicht passen alles in seiner Standardgröße. Das ist etwas, wir werden Bis bald wird ein Array bezeichnet. Es ist wie ein list-- ein Weg gefunden Speichern von mehreren Informationen in einer Variablen, nicht nur eine Reihe. Diese werden wir sehen, ein Vertreter der so genannte Multi-Threading. In der Tat, alle Ihre Macs und PCs in diesen Tagen Unterstützung für Multi-Threading, Das bedeutet, Sie können buchstäblich tun mehrere Dinge auf einmal. Sie können Microsoft Word haben bis in die Vordergrund, auf einige Essay arbeiten. Sie könnten einen Browser im Hintergrund Öffnung G-Mail oder Facebook oder dergleichen. Ihr Computer kann mehrere Dinge tun heute, weil es multi-threaded ist, und Programme, die sie sind in in Insbesondere sind auch mit mehreren Threads. Es gibt Dinge genannt Ereignisse wie gut in der Welt von Scratch, und dann gibt es eine Möglichkeit, auch zu machen unsere eigene Puzzle-Teile, wenn die Dinge eigentlich gar nicht im Voraus existieren. Also lassen Sie uns dies motivieren wie folgt. Vor einigen Jahren, als ich zuerst entdeckt Scratch, als ich war eigentlich ein Doktorand am MIT, wir uns wurden zu machen Hausaufgaben beauftragt. Und ich implemented-- die im Nachhinein eine sehr schlechte Entscheidung war, weil es das ärgerliche Lied der Welt bis acht Stunden hört während der Arbeit an Ihrem homework-- aber etwas, das ich hatte Oscar Zeit genannt, Das ist vielleicht ein bekanntes Lied. CS50s besitzen Jordan Hayashi, von unsere mehr leitende Mitarbeiter, hat es für das Jahr 2015 aktualisiert und jetzt 2016, da wieder in den Tag, Ich hatte alles, was gerade los in Mülleimer Oscar. Jetzt unterstützen wir das Recycling und Kompostierung. Aber malen das Bild von dem, was wir hier tun und zu motivieren, einige die untere Ebene Beispiele, könnten wir eine andere bekommen Freiwilliger nur kommen auf bis und spielen meine erste Hausaufgabe aller Zeiten? Komm rauf. Wie heißen Sie? HENRY: Henry. DAVID MALAN: Henry, kommen auf. Komm rauf. Gehen Sie so oder so, und Sie werden in einem Moment zu sehen, Ich gehe voran zu gehen und drücken Sie die grüne Fahne in der rechten oberen Ecke, was bedeutet, zu gehen. Der kleine Stop-Schild-Symbol geht Stopp zu sagen, und das ist, wenn Sie beginnen, und das Programm zu stoppen. Schön dich zu treffen. Gut. So werden wir die Anweisungen zu sehen auf dem Bildschirm in nur einem Augenblick. Und gerade durch dieses Spiel zu spielen für ein paar mich seconds-- vertrauen, wir gehen zu wollen, nicht zu spielen den ganzen Weg zum end-- werden Sie bekommen ein Gefühl von dem, was das Programm macht. Und mehr als nur auf Henry konzentrieren gut oder schlecht an diesem Spiel Fokus und wie wurde es von mir umgesetzt ursprünglich und dann von Jordan. Mit anderen Worten, wo die Variablen? Wo sind die Schleifen? Wo sind die Funktionen? Und wir werden sehen, ob wir nicht sehen diejenigen unter der Haube. Klicken und Ziehen Sie einfach Müll an den entsprechenden Behälter. [MUSIK SPIELEN] Gut. Das ist sehr gut. Warum wir es nicht dort zu stoppen. Vielen Dank. Herzlichen Glückwunsch an Henry. Vielen Dank. [BEIFALL] Man stelle sich vor, das Programm debuggen. Wenn es ein Problem gibt zwei Minuten in die song-- aber so was geht hier wirklich auf? So kompliziert, wie es könnte beginnen zu scheinen im Laufe der Zeit zu bekommen, tatsächlich mehr und mehr Sachen zu fallen begannen, was ist interessant diese Art von example-- und wir werden ein paar sehen Andere-- ist, dass, wenn Sie schauen Sie vorbei an der Komplexität oder die Komplexität des Spiels, es ist ein sehr einfaches Gebäude Blöcke, von denen alle play--, wenn Sie destillieren sie denen Bausteine ​​sind sehr zugänglich und implementierbar zu sich selbst. Zum Beispiel ist es einige Zeit, aber ich bin ziemlich sicher, was anfangs tat ich, als machen dieses Spiel zum ersten Mal vollständig procrastinated wie ich war. Ich habe überhaupt nicht auf das konzentrieren Logik oder die Puzzleteile, Ich konzentrierte mich auf die Grafik und Finden die Straße Post und die Mülleimer und das alles. Aber das waren erforderlichen Zutaten auf den ersten. Und sobald ich fertig zaudern und Auslegen der übergeordneten Rahmen, Ich beschloss, lassen Sie mich nur eine machen Stück Abfall vom Himmel fallen. Und wir werden sehen, Scratch unterstützt die Dinge genannt sprites-- Zeichen, die haben unterschiedliche Kostüme auf, so dass sie anders aussehen. Und so habe ich einen Müll Kostüm auf einem solchen Sprite. Und ich es brauchte nur vom Himmel zu fallen. Und so stellt sich heraus, Scratch, wie die meisten Programmiersprachen, unterstützt Zufallszahlen oder technisch Pseudozufallszahlen, so dass durch Ziehen und fallen bestimmte Puzzleteile, Ich war in der Lage, den Müll zu haben kommen von der linken Seite auf den ersten. Und dann das nächste Mal, es fiel aus rechts und dann von der Mitte. Und das ganze Spiel tat, war nur haben Müll vom Himmel fallen. Man konnte sich nicht auf sie oder klicken Sie darauf hinweisen. Sie könnten den Mülleimer nicht öffnen. Sie konnte nichts tun. Aber es war ein Baby Schritt zu meiner ultimative Vision. Und danach, habe ich eigentlich eine Art umgesetzt des Erfassens, so dass, wenn Sie klicken haben und ziehen Sie auf das Stück Müll über den Mülleimer, Oscar Deckel würde öffnen und schließen. Nichts würde passieren, in den Papierkorb, aber zumindest würde sich der Deckel öffnen und schließen. So prüfen Sie, Schritt zwei von zwei Kindern. Und das ist, was los zu sein Schlüssel in beide Problem auf Null gesetzt und in der Programmierung allgemeiner ist nehmen diese sehr bewusste Baby-Schritte. Denn nicht nur, dass es ermöglicht es Ihnen, wirklich das Gefühl, erreicht viel mehr quickly-- es ist die Schlimmste, was in der Welt zu versuchen, alle Oscar-Zeit zu implementieren, dann traf Stunden später die grüne Fahne, und nichts funktioniert wie erwartet denn wo tun Sie auch beginnen zu debuggen oder zu das Programm zu beheben? Es ist einfach überwältigend. Und so wirklich umarmen diese Idee der Einnahme steps-- Baby-Schritte wieder und again-- Aufbau etwas, das, am Ende ist, wirklich beeindruckend und komplex, aber Zunächst ist bei weitem nicht so sehr. In der Tat, lassen Sie uns dies tun. Lassen Sie mich gehen Sie voran und- sich Scratch existiert im Internet unter Scratch.MIT.edu, und Sie werden gesagt, als viel wieder in Problem auf Null gesetzt, die Spezifikation für die bereits auf CS50-Website. Aber das ist, was Scratch selbst ist. Und es ist wirklich nur drei Hauptbereiche. An der Spitze gibt links ist die sogenannte Phase. Dies ist Scratch. Die Standard-Kostüm ist eine Katze. Und dies ist der rechteckige Welt welche Sie move-- kann, unten, links, Recht und einige andere Sachen. In der Mitte hier sind unsere Kategorien oder unsere Paletten der Puzzleteile, und verschiedenen Farben verschiedene Dinge bedeuten. Und wenn man sich stoßen, werden Sie sehen, Dinge wie Schleifen und Bedingungen und Variablen und anderen Zutaten. Und dann hier über die Skripte Bereich. Dies ist, wo ich ziehen und fallen lassen diese Puzzleteile Dinge zu tun. Also lassen Sie uns eine solche Sache zu tun. Lassen Sie mich voran gehen und- und ich weiß, wo es ist. Also werde ich sofort an zu klicken wo ich weiß, sind die Dinge bereit zu sein, aber Zeigen und Klicken und Stossen sind um unvermeidlich. Also, wenn grüne Fahne geklickt haben, Was will ich tun? Ich werde dies zu tun. Ich werde diese lila Rätsel zu ziehen Stück, sagen hallo zwei Sekunden, und lassen Sie mich zoomen. Und ich werde dies zu ändern zu sein, was ich will es be-- Hallo Welt zwei Sekunden ist in Ordnung. Nun, ich werde das zu klicken grüne Flagge, oder wenn ich wirklich will, Ich kann es den gesamten Bildschirm und kommen dann zurück. Es wird nur halten alles in einem Fenster. Grüne flag-- Hallo Welt. Gut. Nicht alles, was interessant. Also lassen Sie mich gehen Sie vor und tun dies. Lassen Sie mich ein anderes versuchen. Wenn grüne Flagge clicked-- lasst uns tun so etwas wie ein Ton. Und feststellen, dass aus die Box kostenlos Sie erhalten eine Katze Sound, wie die Standard-Sprite. Also lassen Sie mich jetzt gehen Sie vor und schlagen jetzt die grüne Fahne. [Miauen] Aw. Das ist bezaubernd. Ich programmiere. Also, was habe ich getan? Dies ist das Äquivalent eines Programms. Es ist natürlich super einfach. Es dauerte wirklich nicht nehmen so viel Aufwand und MIT haben die meiste Arbeit, aber ich habe eine Funktion aufgerufen. Ich habe eine Funktion verwendet. Ich habe eine Aktion gemacht, mit nur dass ein lila Puzzleteil. Nun, wenn ich tun möchte, drei miaut in einer Reihe? Lassen Sie mich gehen Sie vor und tun zwei und drei. Und feststellen, dass, wenn Sie schweben in der Nähe ein Puzzleteil, eine kleine weiße Linie erscheint Art von magnetisch, und es wird Snap zusammen, wenn Sie loslassen. Mal sehen, was hier passiert. [Miauen] Es ist ein Fehler. Ich höre nur ein miauen. Warum könnte das sein? Ja? Ja. Wir wissen nicht wirklich hören, aber das ist eine gute Intuition. Sie sind alle in der gleichen Zeit zu spielen. Warum? Nun ist der Computer nur gehen zu tun, was Sie es zu tun erzählen. Also, wenn Sie sagen, spielen Sound, Ton abspielen, spielen Sound, aber Sie sagen, dass es nicht zu spielen, bis Sie fertig sind, spielen, bis Sie fertig sind, es geht zu durchblasen das Programm wirklich schnell und tun nur das, was Sie sagen, es zu tun. Also muss ich eigentlich zu beheben dies in einer Reihe von Möglichkeiten. Ich konnte dies nur tun, loszuwerden diese. Lassen Sie mich das andere Rätsel versuchen piece-- spielen Sound miauen, bis getan, und ziehen Sie dann drei diese und klicken Sie auf Wiedergabe. [Miauen] Es ist nicht wirklich very-- Dank Sie-- sehr natürlich. Also warum i-- lassen Sie sich nicht mich gehen hier steuern. Nett. Warten Sie eine Sekunde, und mich jetzt loslassen zurück auf Geräusche und Sound abspielen, bis getan, und lassen Sie mich dann 1 Sekunde warten zu bekommen. Und dann lassen Sie mich zu gehen und einen bekommen mehr Sound, und hier gehen wir. [Miauen] Ein wenig mehr natürlich, aber Dies ist nicht sehr effizient. Wie ich war langweilig, alle sein Anklicken kurz hin und her und wirklich duplizieren meine work-- so ziemlich das Kopieren und Einfügen. Ja, wenn ich Steuern geklickt oder rechts geklickt haben, Ich hätte einfach kopiert und eingefügt. Was wäre ein zu verwenden, besser konstruieren? Was Idee aus der Zeit vor? Ja, so eine Schleife. Und in der Tat, wenn wir stocherte, wir können feststellen, genau das. Lassen Sie mich an Ereignisse oder eher Kontrolle gehen. So repeat-- ich nicht wollen sie 10-mal sein. Das wird ärgerlich schnell. Aber ich werde dreimal wiederholen. Lassen Sie mich gehen zurück zu klingen und spielen den Ton, bis es fertig ist. Lassen Sie mich an Kontrolle zurück und nur eine Sekunde warten. Und beachten Sie, könnten Sie denke, es nicht passt, aber wieder magnetisch, wenn Sie es zulassen Snap an Ort und Stelle, wird wachsen, um sie zu füllen. Was ist es jetzt spielen? [Miauen] OK. Nett. Und das ist, was man würde ein Programm, das auch richtig ist. Es miaute dreimal ziemlich natürlich, aber es ist besser gestaltet. Ich bin mit weniger Redundanz. Ich habe nicht kopieren und etwas einfügen. Früher habe ich nur eine bessere Idee. Nun, dies ist noch nicht alles, was interessant, mit Scratch nicht zu tun etwas. Also lassen Sie uns stattdessen etwas anderes zu tun. Lassen Sie uns immer etwas tun. Und weisst du was? Bewegung scheint interessant. Lassen Sie uns haben ihn 10 bewegen Schritte und treffen jetzt zu spielen. OK. Nun können wir Art von Drag ihn zurück, und er ist immer noch Laufen, weil er dies für immer tun wird. So wird die Schleife zu tun was es sagt zu tun, aber dies ist nicht so interessant. Lass uns das machen. Lassen Sie mich einen Steuerblock hinzufügen, und verwenden Sie ein dieser Bedingungen zum ersten Mal. Also es geht um 10 steps-- zu bewegen 10 Punkte, 10 Punkte auf dem screen-- dann werde es diese Frage stellen. Wenn etwas wahr ist, dann tun etwas in diesem Block. So stellt sich heraus Sensing hat eine ganze Bündel von Booleschen expressions-- Fragen der ja nein oder wahr falsche form-- lassen mich das tun. Wenn touching-- und dann gibt es dieser kleine Drop-Down-Menü. Ich kann es parametrieren. Wenn die Berührung edge-- lasst uns tun so etwas. Also, wenn berühren edge-- Lassen Sie mich auf die Bewegung zurück. Und warum tun wir nicht einfach drehen sich um 180 Grad? Gut. Also immer, 10 Stufen bewegen. Wenn Sie berühren die Kante, um 180 Grad drehen. Und das ist nicht das Ende des Programms weil Sie in einem für immer blockieren sind, so es geht, wieder zu gehen und wieder und wieder und wieder. Also mal sehen, was passiert. OK. Ein kleiner Buggy, aber irgendwie cool. Und wir können einige dumme Dinge diesem hinzufügen Das sind nicht alles, was intellektuell interessant. Aber wenn wir schlagen diese kleine Mikrofon button-- autsch. Lassen Sie mich diese aufzuräumen. Lassen Sie mich verbessern dies als sie würden im Fernsehen sagen. Reinigen Sie, dass bis, Speichern und jetzt gehen, um Skripts auf. Und jetzt lassen Sie mich klingen zu gehen. Lassen Sie mich es einen Namen geben. Ich werde diese ouch nennen. Und jetzt Sound autsch spielen. Beachten Sie es in das erscheint wenig Drop-Down-Menü. Mal schauen. [AUTSCH] [LACHEN] Aber wir können im laufenden Betrieb t seine ändern. Wir können doppelt so lästig sein. [AUTSCH] Oder wenn wir es wie 1000 Stufen auf Zeit-- OK. Wir werden also, dass man in Ruhe zu lassen. Also noch einmal, den Bau blocks-- I begann mit etwas super einfach, und dann habe ich eine Funktion, hinzugefügt, um eine Funktion, eine Funktion hinzugefügt. Und ich brauche nicht mehr zu befürchten wie die erste dieser Merkmale als ich realisiert fortsetzen Dinge auf der Oberseite der Schicht. Also in der Tat, lassen Sie mich hier ein anderer tun. Lassen Sie mich gehen Sie vor und eine Datei öffnen, Ich habe im Voraus, die so genannte Schafe. So hat es eine etwas andere Zeichen, das wie folgt aussieht. Und lassen Sie mich sehen, wenn ich kann nicht etwas zu tun mit einem Zähler in dieser Fall-- eine sogenannte Variable. Ich werde weitermachen und unter Events-- lassen Sie mich eine grüne Fahne geklickt bekommen. Dann lassen Sie mich auf Daten gehen, die ich kenne, vom Spielen um kurz vor, ist, wo Variablen sind. Und ich werde weitermachen und diese ziehen. So eine Variable namens Zähler, und Ich werde es auf Null zu initialisieren. Ich kann es nennen anything-- x oder y oder z-- aber in der Programmierung, etwas in einem semantisch Aufruf nützliche Art und Weise, wie Zähler, das beschreibt, was es ist, es ist ein viel einfacher, Ihren Code später zu lesen. Lassen Sie mich gehen Sie vor und bekommen ein für immer blockieren hier. Und lassen Sie mich zu den Blicken gehen Seite und machen Sie einen Say Block. Aber was Variablen cool ist I haben nicht nur in etwas zu geben wie hallo Welt, die wir bereits haben getan, kann ich Daten gehen statt und ziehen Sie meine Variable und sogar obwohl die Form nicht ganz wie es aussehen sollte passen, es wird wachsen zu füllen. Und ich werde einfach sagen, den Zähler für ein second-- spoiler-- er wird zu zählen. Wir sagen es noch für eine Sekunde. Ich werde dann gehen und haben ihn für eine Sekunde warten, so es zählt nicht zu schnell nach oben. Und dann schließlich ändern Zähler durch one-- in anderen Worten, inkrementiert den Zähler um eins Mehrwert und machen immer dies. So ist es auch die Schafe, wie ein Programmierer, zählt von 0. Und wenn wir lange genug warten, Er wird dies für immer. Aber das ist nicht ganz richtig, denn in der Tat, wie wir in der Woche entdecken werden ein, ganze Zahlen und Computer allgemeiner technisch nur finite-- gut ein, eher Computer, wenn sie ganze Zahlen, nur eine endliche Anzahl von Bits. Diese Glühbirnen gibt kann nur so hoch, zählen bevor Sie von Glühbirnen sind. Und ein Computer an, nur so viel Speicher, nur so viele Transistoren hat, so kann es nur so hoch zu zählen. So stellt sich heraus, dass die Schafe, Ich denke, kann bis zu 2 Milliarden rechnen oder etwas ziemlich groß. So gehen wir nicht zu warten damit dies geschehen kann. Aber irgendwann werden einige Fehler passieren das kann eine sehr reale Welt Verzweigungen. Aber über die Schafe, dass stellt nur eine Variable. Fahren wir fort und eröffnen etwas habe ich im Voraus hier genannt Pet die Cat-- Pet die Katze hier. Und hier bemerken es wenige Blöcke, aber wenn grüne Flagge geklickt haben, immer die folgende tun. Wenn Sie berühren die Maus pointer-- so den Cursor auf dem Bildschirm, die arrow-- Spiel Sound miauen und dann zwei Sekunden warten. Und dies ist nur für immer tun. Nur ständig warten wenn der pointer-- zu sehen wenn die Katze berührt den Zeiger. Also schlug ich zu spielen. Nichts passiert. Aber als ich den Cursor über die Katze bewegen, [Miauen] Und wenn ich es weg bewegen, nicht die Katze Petting mehr. So einige bedingte Logik innerhalb einer Schleife verschachtelt sind. Wie wäre es dieses Beispiel absichtlich Haustier Sie nicht die Katze genannt? Was geht dies zu tun? [Miauen] Warum sollten Sie nicht die Katze streicheln? [Miauen] OK. So ist dies ein Beispiel für eine if-else. Es ist ein Entscheidungspunkt und weil es in der Schleife sitzt, sie sind beide überprüft zu werden. Ist das wahr? Ist das wahr? Ist das wahr? Ist das wahr? Und schließlich, einer der diejenigen geht anwenden und so hören Sie entweder die miauen oder das Gebrüll des Löwen in diesem Fall. Nun, lassen Sie uns tun, um eine etwas mehr Phantasie ein dass ich im Voraus too-- Themen erstellt. So ein Thread ist nur ein was ein Computer tun kann. So ein Multi-Threaded-Programm ist ein Programm, dass können mehrere Dinge zu tun. Und all diese Beispiele bisher hatten nur ein Skript, so zu speak-- ein Programm wie dieses hier oben. Beachten Sie aber, hat dieses Programm zwei Sprites, zwei Zeichen. Eines ist ein Vogel. Eine davon ist eine Katze. Und bemerken, wenn ich auf diese nach unten klicken links, sie haben jeweils ihre eigenen Skripts oder Programme, die mit ihnen verbunden. Und diese beiden Programme, bemerken, Start mit, wenn grüne Flagge clicked-- schauen wir uns die cat-- aussehen wenn grüne Fahne geklickt. Und so in der Tat, wenn ich traf jetzt spielen, zwei Dinge sind auf einmal geschehen. Die Katze und der Vogel sind beide gehen gleichzeitig in Betrieb genommen diesen Effekt zu erzeugen. Und Sie könnten sich vorstellen, was passiert. Es gibt eine Schleife und der Vogel und die Katze sind in einer Schleife. Der Vogel hüpft wie Ich war vorher, als ich sagte, autsch. Aber die Katze hat eindeutig einen Vorteil. Es gibt einen weiteren Erfassungsblock dass die Punkte, die Katze absichtlich Hier in diesem Fall auf den Vogel. So konnten wir necken auseinander, indem Sie diese Blöcke durch, was passiert. Aber die wichtigste Zutat ist hier ein. Der Vogel, so dass dieses Spiel ist nicht vollständig boring-- oder diese animation-- beginnt bei einer zufällige Richtung. Und der Computer Kommissionierung eine Zahl zwischen 90 und 180 im Wesentlichen, so dass es eine leicht verschiedene Animations jedes Mal. Und dann hier bemerken, wenn die Katze berührt den Vogel, dann spielen den Löwen vier sound-- das Brüllen. Aber in der Zwischenzeit in der Vogel Palette, haben wir diese. Immer, wenn die Katze nicht zu berühren, halten nur drei Schritten zu bewegen. Und dann ist hier ein weiteres Puzzleteil. Wenn Sie am Rand sind, prallen. So ist der Vogel nur irgendwie seine eigenen Gedanken versunken, nur herumfliegen und Prellen, und es ist wirklich die Katze, die die bedingte Logik hatte zu bestimmen, ob er den Vogel gefangen hatte. Gut. So ist eine andere lassen hier tun, dieses wird Hallo Hallo Hallo genannt. Und dieser hier gerade tut dies in einer Endlosschleife. Aber notice-- wie wir stoppen dies sehr ärgerlich Programm? Hit der Leertaste. Denn wenn ich das tue, die linke Hand program-- bemerken, es ist ständig listening-- ist der Schlüsselraum drücken. Wenn die Leertaste gedrückt, und wenn ja, was tut sie? Es hat eine sehr verbreitete Technik. Es setzt eine Variable gleich auf einen bestimmten Wert. Aber es schaltet diesen Wert. [? So Aussehen?] basierend auf der shape-- I haben eine Variable, die ich im Voraus geschrieben genannt Gedämpfte, das sagt nur ja oder nein. Ist der Ton stumm geschaltet oder nicht? Richtig oder falsch? Und beachten Sie, ich sage this-- wenn stumm geschaltet ist Null, dann zu einem ändern, sonst stumm es auf Null gesetzt. So spiegeln nur den Wert von Null auf Eins. Ich hätte done-- es ändern von zwei auf drei und drei vor zwei oder vier fünf bzw. vier auf sechs. Aber es spielt keine Rolle, welche Zahlen ich benutze, so lange, wie ich halten Ändern sie das Gegenteil. Und die meisten jeder Programmierer würde nur wählen Null und one-- wahr und falsch, ab und on-- dies darzustellen. Und das läuft noch. Wenn ich wieder traf die Leertaste [SEAL SOUNDS] Das Programm läuft noch. Weil es das andere Skript das sagt, für immer die folgende tun. Wenn die gedämpfte Variable gleich zero-- also, wenn Sie nicht stumm geschaltet es ist die logic-- wenn falsch oder nein, spielen dann den Ton, weil Sie nicht stumm geschaltet sind. Sie sollten den Ton spielen und dann denken hallo hallo hallo zwei Sekunden und dann warten, und tun es wieder und wieder und wieder. Und so auf diese Weise haben wir einen Weg für Menschen zu-- für Programme zu interagieren. Und sie haben nicht zu werden wie andere datiert. In der Tat, Stossen herum-- kein Wortspiel beabsichtigt-- jemand verbrachte eine riesige Menge an Zeit im Internet Umsetzung PokemonGo in Scratch. Es geolocates Sie auch in Cambridge oder hier Allston. Also, wenn Sie wollen, auch was die Leute sehen tun können, ist this-- sehr extravagant Menü. Klicken Sie hier auf. Das bin ich mit meiner Pfeiltasten jetzt. Ich werde danach zu gehen. Klicken. Und jetzt klicken Sie auf die pokeball. Ich meine, ich glaube, du bist soll die pokeball klicken. Gut. Also tat ich das. Ich kann hier gehen. Und diese Person implementiert etwas mehr Pokeballs über hier-- drei Pokeballs. Wir werden einen Link zu diesem Beitrag online, so dass Sie spielen können. Beachten Sie aber es gibt einfach einige grundlegende Bausteine. Es sieht viel schicker, und es ist. Das ist beeindruckend und mehr als würden wir normalerweise erwarten, natürlich für Problem auf Null gesetzt. Ich habe keine Ahnung, wie lange diese Person Online verbracht. Aber es ist alles nur eine Schleife. Es gibt einen Ton zu spielen. Es gibt eine Art Schleife Hören dafür, ob ich bin Drücken der Pfeil nach oben oder den nach unten Pfeil oder die linke und die rechte, und dann, wenn dem so ist, es bewegt sich es irgendeine Anzahl von Pixeln. Und dann, wenn ich auf ein anderes Sprite, gibt es eine Art von dort, wenn die Bedingung. Ja, das ist immer zu intensiv. Wir gehen zu stoppen. Es ist all die grundlegenden Bausteine. Es gibt keine anderen Bestandteile, als die, die wir haben auf bereits aussah. Und doch hier, lass mich tun einen letzten Satz von Beispielen dass malt ein Bild zu von dem, was Sie hier tun können. Hier ist ein sehr einfaches Programm, das gerade tut this-- Husten, Husten, Husten. Und auf der Grundlage nur auf das, was wir haben bei bisher sah, wo ist die offensichtliche Chance für Verbesserungen. Dieses Programm ist korrekt. Es husten dreimal was ist das, was ich wollte. Aber es ist schlecht umgesetzt. Es ist schlecht konzipiert. Warum? Ja. Es ist nicht eine Schleife. Und es ist nicht so viel dass es nicht eine Schleife ist, es ist, dass eine Menge Redundanz gibt. Es wird kopiert und klebte Code sozusagen. Und die Lösung wahrscheinlich ist in der Tat eine Schleife. Lassen Sie mich gehen Sie voran und verbessern auf, dass. Und ich werde diese hier zu ziehen. Lassen Sie mich gehen Sie vor und erhalten eine Wiederholung Block, ändern Sie dies auf drei. Ich gehe weg zu werfen einige dieser Blöcke. Und Sie werden feststellen, es ist ziemlich intuitiv. Sie per Drag & Drop und Dinge erscheinen und verschwinden schließlich. Und ich kann diese einfach per Drag in hier und jetzt habe ich eine sauberere Version noch. Aber weißt du was? Es gibt diese Möglichkeit jetzt abstraction-- zu starten neues Vokabular zu definieren dass MIT nicht gerechnet hatten. Es gibt warten und wiederholen und für immer und wenn, aber was ist, wenn ich will einführen das Wort Husten als Block? Was, wenn ich ein Puzzleteil deren Zweck im Leben ist, zu husten? Nun, lassen Sie uns bei dieser Version aussehen hier, die ich wie folgt hergestellt. Magisch, ich habe erstellt Dieses Puzzle-Stück hier, die Scratch ermöglicht es Ihnen, zu tun. Und in der Tat C und Python und JavaScript sind gehen, damit Sie dies auch zu tun. Sie können Ihre eigenen erstellen Stücke, die Sie nennen, was Sie wollen. In diesem Fall fühlt sich Husten wie eine vernünftige Definition. Und dann mit diesen Stücken nach unten Hier können Sie definieren, was es bedeutet. Ich per Drag & Drop aus diese Palette hier-- mehr blocks-- dieses große lila Block, wo ich in Husten getippt wie der Name meines neuen Puzzle-Stück. Und dann sagen, ich bin jedes Mal, wenn ein Benutzer nennt diese neue Husten Puzzleteil, tun ein Mitspracherecht und eine Wartezeit. Und so hier oben in meinem Wiederholungsblock, Ich kann nur dreimal husten. Und ich würde behaupten, vor allem wenn jetzt verstecken Sie dieses Detail. Wer kümmert sich, wie Husten umgesetzt wird? Alles, was ich über als Pflege Programmierer, die ich husten kann. Ich interessiere mich nicht, wie sagen, umgesetzt wird. Ich kümmere nur, dass die Katze kann etwas sagen. Ich kann abstrahieren, die detailliert und nur auf das konzentrieren, was hier auf dem Bildschirm ist. Aber ich kann weiter noch einen Schritt nehmen. Beachten Sie, dass hier, ich habe die Schleife dreimal umgesetzt. Aber was, wenn ich stattdessen diese Version greifen? Und was, wenn statt in dieser Version hier, Ich ändere nur mein Puzzle-Stück zu nehmen ein Argument, und Input zu sich selbst? Und das Eingang kann sein eine Zahl wie drei. So, jetzt, wenn ich ein Programm schreibe und ich möchte, dass die Katze zu husten, Ich kann das Rätsel eigentlich sagen piece wie oft husten, denn am Ende hier ein schicker Version dieser benutzerdefinierten Puzzleteile mich festlegen können, dass Husten tatsächlich nimmt ein input-- ein Argument wie dieses. Und weisst du was? Vielleicht merke ich, eine Minute warten. Husten ist die same-- es ist im Grunde die gleiche Idee wie Niesen. Es ist nur eine andere Wort auf dem Bildschirm. Ich kann abstrahieren weiter und implementieren Diese endgültige Version ein Husten, der auf den ersten Blick ist viel komplexer suchen. Beachten Sie aber, was ich getan habe. Ich habe jetzt generalized-- genericized really-- dieses Puzzleteil genannt sagen Wort n-mal werden. Und jetzt habe ich zwei neue Puzzleteile definieren hier unten Husten n-mal. Und was macht die Husten-Funktion? Was ist meine Art Puzzle-Stück tun? Er fordert nur das Sagen Block, in dem Wort vorbei, ich möchte sagen, in der Anzahl vorbei Mal möchte ich sagen. Denn jetzt kann ich implementieren niesen indem Sie einfach sagen achoo, in diesem Fall eine gewisse Anzahl von Malen. Und so bin ich Schichtung und Überlagerung. Und wieder, hier ist der Schlüssel nicht wie ich umgesetzt, aber die Tatsache, dass, wenn ich buchstäblich nur bewegen diese aus dem Bildschirm, schauen Sie, wie einfach, wenn nicht ziemlich mein Programm sieht jetzt. Da tut es, was es sagt, ich habe abstrahiert weg, was in dieser Black-Box ist. es geschieht hier ein lila Box zu sein, aber ich habe behindert weg, was drin ist da ist mir egal, wie es funktioniert. Ich kümmere mich gerade jetzt, dass es funktioniert. Und in der Tat, in Problem auf Null gesetzt, das ist genau das die Art der Schichtung von Ideen, die Sie werde haben die Möglichkeit, zu erkunden. Es ist genau die Möglichkeit, Problemlösungstechniken anzuwenden, zu dem, was wahrscheinlich ein ungewohnten Umgebung. Und ob Sie haben nicht programmiert vor oder vor programmiert, Sie werden feststellen, dass es ein kleines Etwas in dieser Umgebung für jedermann. Und mit Problem eingestellt ein in einer Woche, wir werden zu konzentrieren überführt werden auf einer höheren Ebene Sprache genannt C-- oder eher eine niedrigere Sprache genannt C-- das ist noch mehr kraftvoll, auch wenn es ein wenig mehr kryptisch auf den ersten Blick. Und Sie werden pro heutigen TL realisieren: DR, dass dieses Problem festgelegt hat eine kürzere Fenster der Zeit als Zukunft diejenigen, einfach da sollten Sie es finden, ziemlich zugänglich. Und keine Sorge, wenn Sie fügen die Klasse zu spät. Wir adressieren, dass es dauerte nicht lange. Und bevor wir für Kuchen vertagen, lassen Sie uns Abschluss mit nur zwei Minuten zu sehen auf das, was Sie hier in CS50 erwartet. [MUSIK SPIELEN] Gut. Das war es für CS50. Wir werden dich bald sehen. Kuchen wird jetzt serviert. [MUSIK SPIELEN] 17 SPRECHER: Haben Sie gehört, eines Sabbaticals, Chef? 18 SPRECHER: Vielleicht gibt es mehr unter der Haube.