[Jouer de la musique] [MUSIQUE - ROSSINI, "Ranz des VACHES "de Guillaume Tell] [MUSIQUE - THE BEAT ANGLAIS, "MARS DES CHEFS Swivel "] [Applaudissements et des acclamations] DAVID MALAN: Donc, c'est CS50. Mon nom est David Malan. Et 73% d'entre vous n'ont aucune expérience préalable avec l'informatique, contrairement à ce que vous pourriez penser. Donc, aujourd'hui, nous avons pensé gruger à ce manque de connaissance, mais aussi vous donner une idée de, pour ceux d'entre vous avec plus de confort, quelles directions vous pouvez aller ce semestre. Donc, nous allons commencer avec ça. Je n'ai vraiment aucune idée de ce qui est à l'intérieur de un ordinateur, même si, comme vous, je utiliser tous les jours. Mais c'est une sorte de boîte, et il ya pas beaucoup d'entrées en elle. Au minimum, il ya, quoi? Probablement un cordon d'alimentation. Et en effet, avec ce seul ingrédient, électricité, nous semblons être capables de faire un peu ces jours-ci. Mais à la fin de la journée, nous avoir à représenter les choses que nous nous soucions. Nous devons représenter l'information dans une certaine forme. Et vous êtes probablement au moins vaguement familiarisés avec l'idée de binaire ou morceaux raison ou une autre, les ordinateurs réduit à zéros et de uns. Mais pouvons-nous accepter cela et au moins mettre un peu de lumière à ce sujet? Je n'ai donc ces petits lampes de bureau ici. J'ai une prise électrique ici. Et je vais proposer que l'intérieur mon ordinateur est au moins l'un des ces choses, quelque chose capable d'être activé ou désactivé. Dans ce cas, c'est en effet une lampe de bureau, mais au niveau inférieur, c'est quelque chose un transistor appelé. Mais dans notre monde, c'est une lampe de bureau, de sorte Je vais aller de l'avant et brancher ce dans mon électricité ici. Et je prétends que l'utilisation de cette simple, dispositif simple, cet interrupteur simple, je peut représenter l'information. Par exemple, en ce moment, je suis représente rien, non? Je représente ce que j'appellerai 0 ou faux, à l'opposé de quelque chose réellement être présent. Mais si je retourne simplement ce commutateur, maintenant j'ai représenté un 1. Donc, en utilisant cette très simple morceau de mémoire, si vous voulez, je peux représenter informations. Maintenant, malheureusement, mon ordinateur ne peut pas faire que ça. Il ne peut représenter deux valeurs dans le monde entier - 0 ou 1. Mais ce qui est une solution évidente, maintenant, si nous voulons élargir notre ordinateur de la mémoire et représenter plus pas seulement 0 et 1? Eh bien, nous allons prendre un autre exemple bit. Nous allons prendre un autre interrupteur, un autre transistor, mais que vous aimeriez penser. Permettez-moi d'aller de l'avant et le brancher dans mon ordinateur ainsi. Et je vais demander, maintenant, que par avec un peu plus d'électricité et tournant plus de ces commutateurs et off, je peux représenter plus comme informations. Alors maintenant, c'est 1. Si je veux représenter maintenant 2, je pouvais le faire. Mais généralement, convention, comme nous le verrons finalement voir, aura-moi faire. Donc, c'est 0, c'est 1. Ce serait 2. Et sans surprise, ce serait 3. C'est de cette façon, encore, peut nous comptons vous encore? Si je reçois un troisième bit, un troisième commutateur, quel est le nombre le plus élevé Je peux maintenant compter jusqu'à de 0? Donc 7 si je commence à 0, non? Parce que si je tourne cette lumière et effectivement brancher cette troisième et dernière Lumière dans ma prise de courant ici, alors j'ai la capacité à représenter aucun des deux valeurs ici, deux valeurs ici, deux valeurs ici - et si je peux représenter 2 fois 2 fois 2, ou huit valeurs possibles. Et si je commence comptabilité à 0, alors c'est 0, 1, 2, 3, 4, 5, 6, 7. Donc, ce binaire. C'est vraiment aussi simple que cela. Et je dirais que c'est en fait tout à fait familier à la plupart tout le monde dans cette salle. Permettez-moi d'aller de l'avant et d'ouvrir une petit éditeur de texte ici. Et vous souvenez peut-être de l'école primaire que nous avions des choses comme les centaines , le lieu des dizaines, et celles endroit. Et rappeler que si vous aviez quelque décimal nombre, comme quelque chose au hasard comme 123, vous le feriez essentiellement écrire que dans la forme de ces trois colonnes. Et pourquoi est 1, 2, 3 ce qui nous savons que 123? Eh bien, dans la colonne de gauche, nous avons un 100 plus deux 10s, donc c'est 120, plus trois 1s, de sorte que c'est 123. Maintenant, ce monde que nous venons illuminés est exactement le même que vous avez été au courant depuis des années, Sauf que maintenant, nos colonnes ne sont pas des puissances de 10. Ils sont juste des puissances de 2. Ainsi, alors que c'est la position des unités, ce va être l'endroit deux, c'est va être la place des pattes. Et parce que je suis seulement en utilisant le plus simple de mécanismes visant à faire changer les choses sur et en dehors - électricité coule ou de l'électricité ne circule pas - Je n'ai pas tout à fait la même expression gamme de 0 à neuf. Nous allons garder super simple dans ce monde de l'informatique. J'ai seulement 0 ou 1 - éteint ou allumé, vrai ou faux. Et donc ce que je représente en ce moment est égal à 1, 1, 1, parce que chacun de ceux-ci lumières sont allumées. Eh bien, cela me donne une 4 plus un 2, donc c'est 6, plus un 1, et c'est 7. Et ergo fait cette séquence de trois bits représentent le nombre 7. Donc, tout ce temps, à l'intérieur de votre ordinateur, ont été un certain nombre de transistors, un nombre de bits. Mais à la fin de la journée, nous peut représenter l'information aussi simple que cela. Maintenant, malheureusement, nous avons seulement compté jusqu'à 7 CS50 jusqu'ici, mais j'espère que nous pourrons faire un peu mieux que cela. Et en effet, nous le pouvons. Supposons que nous, les humains juste arbitrairement décidé que nous allons d'associer les nombres comme 1 et 2, 3, 4, 5, 6, 7, par des lettres particulières de l'alphabet. Et pour des raisons historiques, je vais commence quelque peu arbitraire, mais je suis allez dire, les humains, nous allons décider d'une norme à l'échelle mondiale, qui 65 représente le nombre de la lettre A. 66 représentera B. Dot, point, point. 90 représentera la lettre Z. Et supposons que, si nous mettons vraiment quelque pensée en elle, nous pourrions venir avec des numéros de points d'exclamation et les minuscules, et en effet, d'autres personnes l'ont fait pour nous. Alors maintenant, nous avons eu des bits avec laquelle nous pouvons Les chiffres représentent, les numéros avec lesquels nous pouvons représenter les lettres, et avec lettres peuvent nous maintenant commencer à composer e-mails et des caractères d'imprimerie sur l'écran. Alors laissez-moi vous invite, si je le pouvais, huit courageux bénévoles - qui ne me dérange pas apparaître non seulement devant la caméra, mais sur l'internet - de venir ici et de représenter huit tels bits, plutôt que trois. Alors que diriez-vous d'une, deux? Que diriez-vous trois? Que diriez-quatre à la lumière bleu, cinq à la fin? À propos de quelqu'un ici? Six en face, sept en avant, et huit en avant, aussi bien. Donc, je viens donc arrivé de se préparer avec tout un tas de bouts de papier. Et sur ces morceaux de papier sont des nombres qui représentent les colonnes vous les gars vont représenter. Ainsi, vous serez - quel est ton nom? ETUDIANT: Anna Leah. DAVID MALAN: Anna Leah, vous sera la colonne 128s. Vous êtes? ETUDIANT: Chris. DAVID MALAN: Chris être la colonne 64s. Vous êtes? ETUDIANT: Dan. DAVID MALAN: Dan être la colonne 32s. ETUDIANT: Pramit. DAVID MALAN: Pramit volonté la colonne de 16s. ETUDIANT: Lillian. DAVID MALAN: Lillian sera le 8s. ETUDIANT: Jill. DAVID MALAN: Jill la colonne 4s. ETUDIANT: Marie. DAVID MALAN: Marie seront les 2s, et? ETUDIANT: David. DAVID MALAN: David volonté la colonne 1 s. Donc, si vous pouviez intervenir un peu avant de sorte que tout le monde peut voir. Que vous les gars ne voyez pas, c'est que sur le Fort de ces bouts de papier est une petite antisèche qui est sur le point d' instruire ces huit bits soit lever la main ou pas lever la main. Si leur part augmente, ils sont représentant un 1. Si la main reste en bas, ils sont ce qui représente un 0. En attendant, nous devrions être le public en mesure de déterminer, sur la base de cette la cartographie, ce mot de trois lettres ces les gens sont sur le point d'épeler. Donc, en un instant, vous allez lire la première ligne de l'arrière d' votre feuille de triche, et vous êtes soit va augmenter ou pas, levez la main. Si vous êtes un 1, vous soulevez, si vous êtes un 0, vous vous tenez là maladroitement, juste comme ça. Allez. Quel numéro, d'abord et avant tout, sont ces gars-là représentent? 66. 66, non? Nous avons un 1 dans la colonne 64s, un 1 dans la colonne de 2s. Cela me donne 66, de sorte que semble de représenter B. Donc, vous les gars ont précisé - OK, ça suffit. B. Alors maintenant, passons sur notre deuxième lettre. Allez. Qui est le plus rapide en maths ici? Donc 79. Encore une fois, si l'on additionne toutes les colonnes dans lequel il ya un 1, actuellement, seulement comme nous l'avons fait auparavant avec le plus simple d'exemples de 7, nous maintenant obtenir le nombre 79. Qui, selon notre cartographie est l' lettre O. Donc, nous y sommes presque. B, O. Enfin, allez. Que représentent-ils maintenant? Moins consensus. C'est juste un murmure absolue. Oui, c'est en fait 87. Bon. Donc, si nous traçons maintenant remonté à - disons commencer à appeler notre table ASCII, Code américain normalisé pour L'échange d'information. Cela nous donne la lettre - pas "bo" mais "arc". Et c'est un parfait cue pour vous les gars de Take A Bow et la tête sur le dos. Merci beaucoup. [Applaudissements] DAVID MALAN: Vous pouvez les garder. Bien en fait, serait-on comme une lampe de bureau, aussi? [HOOT de l'auditoire] DAVID MALAN: Lampe de bureau? [Rires] DAVID MALAN: Vraiment? Lampes de bureau pour tout le monde? Très bien. Donc, en commençant par le plus simple des principes, nous avons maintenant non seulement compté à partir de 0 tout le chemin jusqu'à 7, nous avons supposé que, tout en jetant plus bits ou plus lumières ou plusieurs transistors à ce problème, nous pouvons représenter des nombres plus en plus gros, et Ergo, gammes de plus en plus gros alphabets, comme l'anglais. Et prenons la foi pour aujourd'hui qui pourrait même nous commençons à représenter graphiques et vidéo et tout certain nombre d'autres médias avec lesquels nous sommes connaissent aujourd'hui. Donc, c'est CS50, et dans cette classe à côté de vous sont, encore une fois, un très grand nombre camarades de classe qui ont le moins l'expérience que vous. Et je dis cela seulement parce que très souvent, notamment en tant que récemment comme l'un des la première année et à conseiller les événements La deuxième année du printemps dernier conseil événement, nous entendons souvent des étudiants déclinent en venant à la table CS, eh bien, J'ai pensé à prendre ce classe intro, mais je ne suis pas vraiment un La personne à l'ordinateur. Or, tout le monde, mais sûrement sait plus que moi. Et j'ai mis cela dans la plus grande police possible, de transmettre ce message que ce n'est pas vraiment le cas. Et si vous vous demandez, si J'ai, en effet, d'être ici? Sachez que non seulement il est de ce cours titre Introduction à l'informatique Science, il est Introduction à l'informatique Sciences I. Donc, il est en effet une seconde une telle introduction. Donc vous n'êtes pas, en fait, au mauvais endroit. Et parmi les objectifs que j'ai pour aujourd'hui sont pour apaiser ces inquiétudes vous pourrait avoir, mais aussi de dresser un image de ce qui est en magasin pour étudiants de moins et plus confortable Identique dans ce cours. Mais d'abord, un mot sur l'un des documents vous avez aujourd'hui, parmi lesquels Un certain nombre de questions fréquentes. Ça a été une vision qui est le nôtre depuis un certain temps maintenant d'introduire un nouveau classement possibilité dans ce cours - à savoir, SAT / UNSAT. Philosophiquement, pour moi, c'est beaucoup, beaucoup, beaucoup plus important que le élèves de cette classe s'engager avec le matériel, être contestée par le matériel, et s'inquiéter beaucoup, beaucoup moins sur la mécanique des scores réels et les notes en lettres au semestre de fin, mais vraiment embrasser l' cours et son matériel. Et vraiment cela se sent, plus généralement, pour ce qui est intéressant pour eux, se sentir menacés et récompensés mais sans peur de l'échec. Et en effet, cela aussi est un thème récurrent dans ce thème et d'autres d'introduction cours dans d'autres domaines, que vous avez cette appréhension quand il s'agit de mettre ses orteils dans des eaux inconnues. Moi-même, en 1995, était un étudiant de première année. J'étais très concentrée à être un concentrateur Gov ici. Et pourtant, j'ai toujours grandi avec un peu d'une participation dans l'informatique. J'ai toujours été curieux. Mais à l'époque, même, j'ai eu cette peur de même de mettre le pied dans CS50, tellement de sorte que je n'ai même pas des emplettes il première année. Et la seule raison pour laquelle j'ai mis un pied dans la porte l'année de sophomore parce que je a été autorisé à prendre réussite / échec. Mais même réussite / échec exigé que je reçois le courage de prendre rendez-vous avec le professeur Kernehan à l'époque, apporter cette grande feuille de papier et demandez lui pour sa signature et son permission d'explorer ces eaux inconnues. Et il n'a pas aidé ces dernières années que quand vous le faites en CS50, lorsque nous l'habitude d'être de réussite / échec, même serait des dizaines ou des centaines de vos camarades de classe avoir à venir, à Dieu ne plaise, à l' devant Sanders avec ce formulaire, qui dans certains esprits représente une incapacité, J'ose le dire, pour effectuer sont le niveau de vos pairs. Ce qui est ridicule, mais je ne pense il ya cette mentalité. Et il n'ya jamais eu dans cette culture de SAT / UNSAT ou réussite / échec plus généralement, dans ce cours, ou vraiment sur ce campus. Ainsi, cette année nous avons changé cela. Je serais ravi de moitié cette classe ou plus fin par prendre CS50 SAT / UNSAT. Dans un délai d'un an, ce serait merveilleux si presque tout le monde est. Par la suite, peut-être que nous allons travailler sur les notes en lettres à Harvard Collège manière plus générale. Mais pour l'instant, nous allons faire cela au sein de notre propre sphère, et je voudrais chaleureusement vous invitons à consulter les FAQ et poser des questions comme bon vous semble, de sorte que j'espère que vous, contrairement à moi, ne sera pas tout à fait avoir le même facteur de la peur lorsque explorer ce qui est probablement un lieu inconnu. Alors, quelle est CS50? Il s'agit d'une introduction à l' entreprises intellectuelles de l'ordinateur la science et l'art de la programmation. Mais qu'est-ce que cela signifie vraiment? Eh bien, jusqu'à présent, nous avons parlé très brièvement de représenter l'information. Mais supposons que nous voulons réellement de faire quelque chose avec elle. Nous avons besoin d'introduire la notion de ce que nous appellerons un algorithme. Un algorithme est une procédure, d'un processus, un ensemble d'instructions pour faire quelque chose. Et un algorithme peut être quelque chose super simple. Par exemple, un exemple que certains d'entre vous connaissent peut-être est-ce chose ici. Alors ce livre est ici de plus en plus daté, mais il était une fois, il contenue tout un tas de noms et numéros de téléphone. Et en effet, si je voulais trouver quelqu'un dans ce répertoire - dire, quelqu'un du nom de Mike Smith - Je ne pouvais trouver Mike Smith dans un certain nombre des moyens assez simples. Je pourrais commencer par le commencement et passer à la page 1, pas là. Page 2, pas là. Page 3. Est-ce que l'algorithme est que processus, c'est exact? Donc, il est correct, non? Je suis un peu un idiot pour faire en de cette manière, mais finalement je vais trouver le nom de famille S, et nous espérons que Mike C'est dans cette section, et je deviendrai fait avec mon algorithme. Mais assurément ce n'est pas intuitive. La plupart de chaque homme raisonnable dans ce chambre n'aurait pas fait cela. Qu'auriez-vous fait? Vous auriez allé directement au milieu, à droite? À peu près au milieu. Et vous vous rendez compte, oh, ce sont les Mme Donc, Mike Smith, le dernier nom étant Smith, n'est pas, de toute évidence, puis dans l' la moitié gauche de l'ouvrage. Il doit être orienté vers le S est dans la droite. Et à ce stade, même si la plupart d'entre nous ne faites pas cela dans la réalité, nous pouvons littéralement déchirer ce problème en deux. [Acclamations et applaudissements] DAVID MALAN: Merci. [Acclamations et applaudissements] DAVID MALAN: Vous pouvez littéralement déchirer cette problème dans la moitié, me laissant avec, littéralement, un problème à moitié aussi grand. Donc, si ce livre de téléphone était - et il était probablement - environ 1.000 pages, maintenant c'est seulement 500. Si je fais ça encore une fois et je me rends compte, oh, putain, je suis allé trop loin, je suis dans le Ts section, je ne peux même - au sens figuré ou littéralement - déchirer le livre de téléphone - c'était en fait beaucoup plus facile que le temps. Je peux littéralement déchirer l'annuaire dans la moitié, me laissant maintenant avec pas 1000, pas 500 - 250 pages. Et je peux aller 125, et la moitié de cela, et la moitié, et la moitié de ce que, jusqu'à ce que finalement je serai parti avec juste une seule page. [Rires] DAVID MALAN: C'est l' partie j'échoue sur. Une seule page sur laquelle Mike est plein d'espoir. Maintenant, ces différents algorithmes peuvent être sorte de mesuré et évalué en manières différentes. Le premier était très linéaire, non? Tourner la page, pour trouver Mike. Tourner la page, pour trouver Mike. Il est très linéaire. S'il ya une page de plus dans le téléphone livre, il va probablement me prendre une seconde de plus, une unité de temps plus, Cependant, nous sommes temps de calcul. Donc je pourrais tirer comme ça cette ligne ici, de sorte que lorsque la taille de l' problème augmente de gauche à droite - annuaire téléphonique devient plus petit au plus grand - et le temps va augmenter le l'axe vertical, le plus grand le livre de téléphone est. Donc n est juste une variable générale qui les informaticiens utilisent pour représenter une certaine valeur, un certain nombre. Alors n va augmenter de façon linéaire. Doubler la taille de l'annuaire, c'est va me prendre deux fois plus de temps, très probablement, de trouver Mike. Maintenant, j'aurais pu être intelligent à ce sujet, non? Je m'ennuyais rapidement. Aurait pu faire cela en deux. Donc, deux pages, puis quatre, puis six, puis huit. Et je pourrais commencer à voler à travers un peu plus vite, mais à risque minime d' dépassement Mike, mais cette courbe n'est pas va être très différente. Il va toujours être une ligne droite La ligne, mais un peu plus rapide. Mais qu'ai-je fait? En fait, j'ai fait quelque chose fondamentalement mieux. J'ai réalisé ce que nous appellerons logarithmique temps, le journal de n, où ce vert ligne a beaucoup, beaucoup, beaucoup bord inférieur droit au but. Et au contraire, il suggère, comme il sorte de tend vers l'infini tant soit peu à peu, que je pouvais prendre une page de 1000 annuaire, doubler sa taille l'année prochaine - supposons que parce que beaucoup plus de gens se déplacent en ville. Alors maintenant, je dois 2.000 pages, mais comment De nombreuses mesures sont que plus intelligent algorithme va prendre? Juste une. Je veux dire, c'est une chose puissante. Si nous allons à 4.000 pages l'année prochaine, qui va me prendre seulement deux étapes. Ainsi, vous pouvez jeter plus en plus gros problèmes à moi, un peu comme le web est jetant des problèmes toujours plus grands tous les jours à Googles et Facebooks d' le monde, et ce n'est pas une grosse affaire. Parce que j'ai mis plus de réflexion et de soins en mon algorithme qui pour résoudre les problèmes efficacement. Et en effet, ce sera l'un des les objectifs de ce cours. Vous aurez, le long du chemin, apprendre à programmer. Vous allez apprendre à programmer en n'importe quel nombre de langues. Mais à la fin de la journée, le cours est de résoudre des problèmes et d'obtenir mieux à résoudre les problèmes - et, comme dans des cas comme cela, la résolution de problèmes de manière plus efficace. Maintenant, à ce jour, nous avons fait ce assez intuitive. Rajoutons quelque chose d'assez générique appelé pseudo. Donc, nous finirons par arriver, Dans ce cours, à divers langages de programmation. Mais aujourd'hui, nous le ferons en anglais comme syntaxe, où vous venez de genre de dire ce que vous voulez dire, mais vous êtes toujours si succincte et vous ne vous inquiétez pas la grammaire et des phrases complètes. Vous venez de vous exprimer en tant que concise que possible. Donc pseudo est en anglais comme syntaxe qui représente un langage de programmation. Et à cette fin, je vous propose que nous maintenant modéliser le processus que nous venons de décrit de compter quelque chose d'un peu différemment, en prenant cette fois un regardez cette vidéo de cinq minutes produite par nos amis de TED qui définit ce pseudo est, définit ce pensée algorithmique est, et même si l'exemple que vous êtes sur le point de voir est, en soi, super simple, c'est va commencer à nous donner le mental modèle, le vocabulaire, avec lequel faire beaucoup, beaucoup plus complexe algorithmes assez rapidement. [Commencer la lecture de VIDEO] [Jouer de la musique] Narrateur: Qu'est-ce qu'un algorithme? En informatique, un algorithme est une ensemble d'instructions pour résoudre certains l'étape de problème par étape. En règle générale, les algorithmes sont exécutés par les ordinateurs, mais nous, les humains ont algorithmes, aussi bien. Par exemple, comment feriez-vous de compter le nombre des personnes dans une chambre? Eh bien, si vous êtes comme moi, vous seriez probablement point à chaque personne, un à un temps, et à compter à partir de 0. 1, 2, 3, 4, et ainsi de suite. Eh bien, c'est un algorithme. En fait, nous allons essayer d'exprimer une peu plus formellement en pseudo - La syntaxe anglaise qui ressemble au un langage de programmation. Soit N égale à 0. Pour chaque personne dans la salle, régler N égal à N + 1. Comment interpréter ce pseudo? Eh bien, d'une ligne déclare, pour ainsi dire, une variable appelée N et initialise sa valeur à 0. Cela signifie simplement que, au début de notre algorithme, la chose avec laquelle nous comptons a une valeur de 0. Après tout, avant de commencer le comptage, nous n'avons pas encore compté rien. L'appel de cette variable de N c'est juste une convention. J'aurais pu appeler cela plus rien. Maintenant ligne deux Demarks le début d'une boucle, une séquence d'étapes qui répéter certain nombre de fois. Ainsi, dans notre exemple, l'étape que nous prenons est comptage de personnes dans la salle. Sous la deuxième ligne est la ligne trois, qui décrit exactement comment nous irons sur le comptage. L'indentation implique qu'il est trois lignes qui se répétera. Alors que le pseudo-dit est qu'après commençant à 0 pour chaque personne dans la salle, nous allons N augmenter de 1. C'est maintenant cet algorithme correct? Eh bien, nous allons taper sur un peu. Est-ce qu'il fonctionnera que s'il n'y deux personnes dans la salle? Voyons voir. À la première ligne, on initialise N à 0. Pour chacune de ces deux personnes, Nous avons ensuite incrémente N en 1. Ainsi, sur le premier voyage à travers l' boucle, nous mettons à jour N 0-1. Sur le deuxième voyage à travers cette même boucle, nous mettons à jour N 1-2. Et si à la fin de cet algorithme, n est 2, qui correspond en effet le nombre de personnes dans la salle. Jusqu'ici, tout va bien. Que diriez-vous d'un cas d'angle, si? Supposons qu'il ya 0 personnes dans la salle - en dehors de moi, Qui fait le décompte. À la première ligne, on initialise N à 0. Cette fois, cependant, la troisième ligne ne exécuter du tout car il n'y a pas un personne dans la pièce. Et si N reste à 0, ce qui correspond à la nombre de personnes dans la salle. Assez simple, non? Mais le comptage de personnes une à la fois est assez inefficace, trop, non? Nous pouvons certainement faire mieux. Pourquoi ne pas compter deux personnes à la fois? Au lieu de compter 1, 2, 3, 4, 5, 6, 7, 8, et ainsi de suite, pourquoi ne pas compter, 2, 4, 6, 8, et ainsi de suite? Il semble encore plus rapide, et ce n'est sûrement. Exprimons cette optimisation en pseudo-code. Soit N égale à 0. Pour chaque paire de personnes dans la salle, Jeu N égal à N + 2. Changement assez simple, non? Plutôt que de compter les gens un à un moment, nous comptons place les deux à la fois. Cet algorithme est donc deux fois plus vite que le précédent. Mais est-il exact? Voyons voir. Est-ce qu'il fonctionnera que s'il n'y deux personnes dans la salle? À la première ligne, on initialise N à 0. Pour qu'une paire de personnes, Nous avons ensuite incrémente N par deux. Et si à la fin de cet algorithme, N 2, qui correspond en effet le nombre de personnes dans la salle. Supposons ensuite que, il ya 0 personnes dans la salle. À la première ligne, on initialise N à 0. Comme précédemment, la ligne de trois n'exécute pas du tout, car il n'y a pas de paires de personnes dans la salle. Et si N reste à 0, ce qui en fait correspond au nombre de personnes dans la salle. Mais que faire si il ya trois personnes dans la salle? Comment cela tarif algorithme? Voyons voir. À la première ligne, on initialise N à 0. Pour une paire de ces personnes, Nous avons ensuite incrémente N par 2. Mais alors quoi? Il n'y a pas une autre paire plein de gens dans la chambre, alors la ligne deux pas s'applique plus. Et si à la fin de cet algorithme, N est toujours de 2, ce qui n'est pas correct. En effet, cet algorithme est dit être poussette, parce qu'il a commis une erreur. Permet de réparation avec un nouveau pseudo. Soit n égal à 0 pour chaque paire de personnes dans la salle. Réglez N égal à N + 2. Si une personne reste non apparié, Jeu N égal à N + 1. Pour résoudre ce problème, nous avons introduit, dans la quatrième ligne, une état, autrement connu comme une branche qui ne s'exécute que s'il ya une personne que nous ne pouvions pas paire avec l'autre. Et maintenant, si il ya un ou trois ou tout nombre impair de personnes dans la chambre, cet algorithme seront désormais compter. Pouvons-nous faire mieux? Eh bien, nous pouvions compter dans 3s ou 4s ou même 5 et 10, mais au-delà, c'est allez obtenir un peu difficile à pointer. A la fin de la journée, que ce soit exécuté par des ordinateurs ou des humains, algorithmes sont juste un ensemble des instructions avec qui pour résoudre les problèmes. Ce sont seulement trois. Quel problème souhaitez-vous résoudre avec un algorithme? [FIN LECTURE VIDÉO] DAVID MALAN: C'est la seule fois Je vais apparaître sous forme de bande dessinée. Mais là où cette histoire s'arrête, la maintenant, est de savoir comment pouvons-nous faire mieux? Trois et quatre, nous revendiquons, nous pouvons compter personnes beaucoup plus rapide, mais pouvons-nous faire fondamentalement mieux que ça? Et je parie que nous pouvons. Si nous introduisons un peu de notre propre pseudo ici, je vais proposer que nous pouvons réaliser une ligne de ce genre. Nous n'allons pas compter les gens un, deux, trois, quatre. Nous n'allons pas aller deux, quatre, six, huit. Nous allons faire fondamentalement mieux en repensant le problème, et dans ce cas, en s'appuyant sur un autre sous-utilisés ressource. Dans un instant, j'espère que vous me pardonnerez et nous complaire en se tenant debout dans lieu, à quel point nous allons demander à chacun de vous de prendre dans votre esprit le numéro 1. Vous êtes alors aller de plus en plus maladroitement, comme le temps passe, trouver quelqu'un qui se tient debout, se combinent vos numéros ainsi en les additionnant. L'un de vous va alors courir pour s'asseoir en premier, et l'autre personne qui va se répéter. Donc, en d'autres termes, en semant tous vous avec le numéro 1, puis combinant ceux 1s 2s et dans ces 2s en 4s, avec tout le monde de plus en plus assis, nous devrions, à la fin de cet algorithme, ont juste un prêt âme qui ne s'est pas assis assez rapidement mais qui a toute la numération des audiences dans son esprit. Donc, si vous le voulez bien, nous allons aller de l'avant et - Première étape - se lever en place. Et à exécuter. [Foule murmurant] DAVID MALAN: Savez-vous où Lauren est? 729? [Foule murmurant] DAVID MALAN: Tout va bien? [Foule murmurant] DAVID MALAN: Très bien, nous devrions être approchent de la fin. On voit un gars debout ici encore. Qui a besoin d'autre pour être appareillé? Si vous voulez les gars à appareiller. Quelqu'un là-haut. Pourquoi ne pas donner un coup de main ici. Pour les rares personnes qui sont encore debout, ce chiffres ne vous avoir dans votre esprit? ETUDIANT: 78. DAVID MALAN: 78 plus - qui est debout ici? ETUDIANT: 39. DAVID MALAN: plus 39. De plus qui d'autre est toujours debout? 81? OK, qui d'autre? Un autre 81? Wow. Et puis ce qui est en arrière? ETUDIANT: 49. DAVID MALAN: 49, plus? ETUDIANT: 98. DAVID MALAN: 98 Plus? Est-ce que quelqu'un d'autre? 12? Good job. [Rires] DAVID MALAN: Oh, 112 - oh. Good job! [Rires] [Applaudissements] DAVID MALAN: Quelqu'un d'autre encore debout? Désolé? ETUDIANT: 99. DAVID MALAN: 99. N'importe qui d'autre encore debout? Et le nombre total d'étudiants ici est en réalité, selon - avez-vous un numéro? Oh, le nombre réel de personnes dans le chambre, selon le compte que les boursiers de l'enseignement faisaient sur le chemin de tout le monde dans, était 729. Ainsi, sur un parterre d'étudiants de Harvard qui se compté, le réponse est 637. [Rires] DAVID MALAN: So close. Mais tout de même. OK, donc c'est un enseignement moment, non? C'est maintenant ce que nous décrivons comme un bug. Quelque part le long du chemin, nous avons fait quelques arithmétique mal, ou quelqu'un s'assit, ou à gauche, ou quelque chose n'allait pas. Mais c'est très bien. Parce que même encore, nous eu assez proche. Et je dirais que nous sommes arrivés à la mauvaise répondre beaucoup plus vite que je n'aurais en utilisant mon approche plus linéaire. Donc, supposons que nous n'avons en fait obtenons que corriger, mais maintenant penser à ce que qui se passait à chaque fois, par rapport à mon propre algorithme pointant naïf. Un, deux, trois. Si il ya bien 729 ou 637 personnes ici, qui m'aurait pris littéralement 637 ou 729 pointages du doigt et incrémentation mon décompte total. Et je pourrais faire un peu mieux par aller à deux, quatre, six, huit et doubler cette vitesse, peut-être même triple ou quadruple, selon la façon dont je peux faire compter dans ma tête. Mais cette approche que vous avez pris était fondamentalement différente. Parce qu'au début, chacun d'entre vous se sont levés. Donc, les 729. Et puis littéralement la moitié de vous vous êtes assis. Et après cela, un autre la moitié d'entre vous assis. Et après cela, un autre la moitié d'entre vous assis. Et le nombre total de fois que vous les gars auraient pu s'asseoir est à peu près huit ou neuf ou dix fois au total, en fonction de ce que notre nombre total est. Et nous pouvons trier de faire dans l'autre sens. Si nous avions 1.024 personnes dans la salle, l' nombre total de fois où vous pourriez réduire de moitié 1.024 personnes est de 10. Maintenant, pensez à ce sujet dans l'autre sens. Supposons, ridiculement, que nous avons eu, par exemple quatre milliards de personnes dans cette salle, ou une pièce un peu plus grande. Combien de fois nous sommes allés grâce à cet algorithme, telle que la moitié de cette classe s'assoit? Il va seulement prendre 32 comme opérations, même dans une classe de taille quatre milliards. Pourquoi? Parce que quatre milliards va à deux milliards d'euros, va à un million, va à 500 millions, va à 250 M, point, point, point. Je ne peux que faire cette division quelque 32 fois, à quel point, tout le monde sauf une personne serait laissé au repos. Et cela, aussi, est une sorte de puissant idée que de plus en plus, nous allons essayer d' tirer parti de ce cours, et dans programmation et l'informatique plus généralement, ces germes d'une idée avec que nous pourrons résoudre les problèmes beaucoup, beaucoup plus puissamment. Nous avons donc commencé assez simple avec qui pseudo et un gars dans une chambre, mais maintenant avec une pièce remplie de personnes avons-nous fait fondamentalement mieux. Eh bien, nous allons maintenant transition pseudo à un code réelle. Cette langue que vous êtes sur le point de voir arriver d'être appelé JavaScript, et Nous reviendrons sur ce vers la fin de semestre. C'est un langage de programmation que vous utiliser pour rendre les sites Web et d'autres logiciel de nos jours. Et nous l'avons utilisé, grâce à un ami qui est le nôtre à Stanford, pour encoder certaines informations cachées ici. C'est l'art de la stéganographie, pour ainsi dire, où vous pouvez cacher informations dans ce qui semble contraire à être un bruit ou un tout autre l'image tout à fait. Mais embarqué dans cette image particulière est en effet un message secret de toutes sortes. Alors laissez-moi aller de l'avant et tirez ici la même image, ce temps dans un navigateur Web. Et je vais brandir ma main à quelques-uns des les détails d'aujourd'hui, en particulier Pour ceux d'entre vous qui ce ressemble non seulement le JavaScript, mais grec, comme un complètement langue inconnue. Mais ceci est un exemple de un langage de programmation. Et pour l'instant, prendre sur la foi que cette première ligne de code - et par code, je viens de dire du texte. Le texte que je pouvais littéralement tapé dans Microsoft Word, si j'avais l' bon logiciel pour ensuite faire quelque chose avec elle. le code source de programmation, la programmation code, est vraiment juste texte, et il semble différent en fonction de ce langage que vous utilisez, pas contrairement à l'anglais et Espagnol et russe tout regard différent lorsque vous tapez au clavier. Donc, cette première ligne, pour l'instant prendre foi, ouvre simplement un graphique à partir de la Internet, ce graphique bruyant nous venons de voir. Cette ligne suivante Voici un exemple de boucle, et nous avons effectivement vu que même jargon dans la vidéo TED. Une boucle est quelque chose qui arrive à nouveau et encore, et même si cette semble tout à fait énigmatique, avec l' mot-clé pour, et quelques parenthèses, et certains points-virgules. Nous allons revenir à ce que d'ici peu, mais que la boucle il n'y a essentiellement dire le programme, itérer sur tous les de ces points bruyants, de gauche à droite, de haut en bas. Parce qu'à la fin de la journée, une image comme cela - et vous pouvez réellement sorte de le voir sur ce projecteur - C'est vraiment juste une grille de points. Ainsi, nous pouvons identifier chacun de ces points par une coordonnée x, y, et avec cette programme, maintenant nous pouvons commencer à faire quelque chose pour ces points. Donc ce que je vais aller de l'avant ici et faire, c'est que je vais faire quelques changements. D'abord, je vais aller de l'avant et de se débarrasser de tout cela verdâtre et bleuâtre bruit, et je vais aller de l'avant et tapez la commande suivante Certes syntaxe cryptique. im pour l'image. mis en bleu à l'emplacement x, virgule, emplacement y à 0. En d'autres termes, je veux juste éteindre toutes les bleu points dans cette image. Je vais aller de l'avant maintenant et cliquez sur Cette touche Run / Save, et vous remarquer sur le côté droit, l'image apparaît. Maintenant son écrin de verdure superbe, mais ce n'est pas surprenant, parce que je me suis littéralement tourné off, en faisant un 1 a 0, l'ensemble des le bleu dans cette image. Eh bien, maintenant nous allons faire un peu plus. im pour l'image, point setGreen, x, y. Et cela signifie juste itération de gauche à droite et de haut en bas. Éteindre ça avec une valeur de 0, ainsi. Enregistrer. Et sur le projecteur, vous ne pouvez pas réellement vraiment rien voir du tout. Sur mon écran d'ordinateur, si je les pairs dans tout le droit chemin, je peux voir un peu d'un l'image, parce qu'ils sont toujours un peu de rouge à l'intérieur. Si vous avez déjà entendu l'acronyme RGB - rouge, vert, bleu - il fait référence à cette composition d'une image en utilisant seulement ces trois couleurs. Et maintenant, nous avons jeté tout vert, tout bleu, mais il n'y a pas beaucoup de rouge. Alors laissez-moi monter le rouge. Comment puis-je faire cela? Eh bien, d'abord, je vais demander à ce programme une question. Je vais aller de l'avant et que nous appellerons une variable, comme en algèbre. Vous pouvez avoir x, y ou z. Je vais déclarer une variable et dire, mettre de cette variable, provisoirement, la valeur de l' images getRed valeur à x, y. Et encore une fois, nous reviendrons à tous de ce détail dans l'avenir. Mais pour l'instant, il suffit de prendre sur la foi que cette ligne demande au programme, ce qui est la valeur de rouge à x, y? A ce point particulier? Ensuite, je vais faire quelque chose pour elle. Alors je vais faire image de points ensemble rouge à x, y, y, mais cette fois, je vais booster en faisant fois en rouge, disons, 10. Donc l'augmenter par un facteur de 10. Permettez-moi de faire un zoom arrière maintenant et Cliquez pourrait Run / Enregistrer. Et voila, qui était là tout le temps, même si nos yeux humains ne pouvait pas vraiment voir. Encore une fois, ce moment est vrai code, un exemple d'une langue que nous viendrons d'avant longtemps. Mais se rendre compte, en particulier ceux d'entre vous avec une telle expérience, il est tout à fait Dès que nous nous serons écrire du code comme celui là. En fait, un outil avec lequel vous êtes tous un peu familier, peut-être, est CS50 de propre outil sûr-shopping, qui était en fait redémarré cet été par certains de ses propres anciens étudiants CS50, maintenant tourner FO. Donc ce qui se passe pour être un site web construit dans un langage appelé PHP. Il utilise une base de données appelée MySQL, les choses avec qui nous aurons entre nos mains sale tard dans le semestre. Mais croyez-le ou non, même chose comme cela réduit finalement à la simple de boucles et conditions et branches, comme ceux que nous avons vu qu'un Il ya actuellement dans la vidéo TED. Ce que je pensais que je fais maintenant est part pas juste quelque chose que nous avons fait le personnel pour le campus, mais plutôt quelque chose un ancien étudiant - trois étudiants, en fait - fait de cette dernière année, Sierra, Daniel, et Sam, le dernier d'entre eux n'avait pas avant expérience de programmation quand il a pris CS50. Et pour leur projet final, ils expose à la Foire CS50, un application appelée wrdly, qui est un programme basé sur le Web pour lequel ils ont fait cette vidéo que j'ai pensé que je partagerais à vous donner une idée de tout ce qui est possible à la fin de terme. [Jouer de la musique] DAVID MALAN: C'est à partir de la semaine zéro à la semaine 12 de cette année écoulée. [Applaudissements] DAVID MALAN: Comme un teaser, trop, vraiment pour aiguiser votre appétit pour ce qui est possible, vous avez peut-être déjà vu, ou peut-être bientôt voir, market.cs50.net, un nouvel outil que l'équipe du cours a travaille sur, cette fois dans collaboration avec Harvard Student Des organismes tels que dès cette année et j'espère continuer dans cette l'été à venir, vous aurez une norme occasion sur le campus d'acheter et de vendre des choses qui vous intéressent. Et avec le partenariat à travers HSA, vous aurez également être en mesure de déposer des éléments hors dans l'un des magasins physiques de HSA à un point dans le futur, de façon à choses proxy, notamment en vous diplôme et ne veulent pas nécessairement jeter des choses, mais en fait payer transmettre à des gens qui pourraient vous suivre ici sur le campus. Donc, plus sur cela pour venir. Mais un peu plus concrètement, un outil qui est sorti de CS50 au cours des dernières ans, avec laquelle certains d'entre vous pourraient être familier et d'autres d'entre vous pourraient être googler maintenant, à CS50.net/2x, vous trouver un lien vers une extension Chrome qui est démonstratif de la façon dont vous pouvez utiliser JavaScript, ce même langage que nous utilisée avec la tour Eiffel il ya un moment, pour mettre en œuvre la vitesse de lecture 2x pour toutes les vidéos Harvard iSites. C'est quelque chose qui est construit dans son propre lecteur vidéo CS50. Mais cela, aussi, si vous commencez à creuser dans le code source, que nous allons heureusement rendre disponible, vous verrez comment vous pouvez même résoudre des problèmes tels que l'accélération de widgets dans les sites Web avec que vous êtes déjà bien familier. Ainsi, un mot maintenant sur le parcours et attentes et ce qui nous attend. En général, nous allons en effet réunis ici les lundis et mercredis - si ce vendredi, nous rassemblons parce que de la Semaine de Shopping - 1 heures 00-14h00, mais parfois jusqu'à 2h30. Étant donné que vous voudrez donc ou avoir à prendre un peu de classe à 14h00 avant, ou même avant, ne réaliser l' est bien sûr favorable à ce qu'on appelle inscription simultanée, par laquelle nous allons soutenir une pétition au conseil des annonces votre résidence doyens en votre nom si vous avez un conflit quelque part dans ce 1:00-2:30 gamme. Dirigez-vous vers cette URL en ligne pour plus de détails. Mais en termes de structure de soutien qui caractérise le CS50, pour les étudiants plus et moins à l'aise aussi bien, nous offrir des pistes distinctes de sections. Et c'est un couple de semaines de congé, mais Avant longtemps, vous serez invité à votre niveau de confort. Êtes-vous parmi ceux qui sont moins à l'aise, plus à l'aise, ou quelque part entre les deux? Et nous avons trois groupes distincts pistes qui répondent aux précisément ces audiences. Donc, à aucun moment dans le terme devrait vous même l'impression que vous êtes en compétition contre tout étudiant avec plus ou moins fond de vous. En effet, le cours est censé être beaucoup plus collaborative et plus plus ouverte que celle. En ce qui concerne les ensembles de problèmes, vous aurez trouver, aussi, qu'en plus de l' édition standard du problème de chaque semaine défini, il ya souvent un "hacker édition "qui est destiné à être ciblés à l'extrémité 5% à 10%, ou de l' démographique qui est en effet parmi ceux plus à l'aise et que vous souhaitez plus d' un défi que la norme édition de cette pset attend. Plus de détails sur celles qui seront trouvé dans le programme. Mais aussi dans on peut trouver les détails sur les cours fin des jours. Typiquement problème fixe sont dus tous les jeudis. Cependant, vous pouvez prolonger la plupart de vos échéances cet automne du jeudi au Vendredi simplement en nous rencontrant à mi-chemin, pour ainsi dire, en répondant à quelques warm-up questions dans une certaine du problème de la semaine ensembles, qui sera automatiquement puis vous donner un supplément de 24 heures. Nous allons aussi déposer votre plus bas score, selon le programme. Pour vous donner une idée de ce que le problème ensembles sont - car il s'agit bien d' le problème du cours fixe qui finalement définir presque tous les L'expérience de l'élève, plus que conférences, plus que les sections, plus de sorte que la plupart des autres aspect de la formation. L'année dernière, par exemple, nous avons commencé, comme nous allons commencer cette année, avec Scratch. En particulier, ce vendredi, nous allons utiliser, pour le temps juste un jour, un graphique langage de programmation, avec lequel on commencer la programmation par glisser- tomber des pièces de puzzle qui ne assembler physiquement si elle fait sens à faire de manière logique. La semaine prochaine, nous allons passer rapidement à C, un assez vieux mais très petite et un langage simple qui nous permettra d' vraiment aller de 0 à 60 au cours de quelques semaines, puis Parlay ces mêmes compétences et les connaissances des constructions de programmation de base dans langages de haut niveau tels que PHP, JavaScript, et encore d'autres encore. L'an dernier, le troisième ensemble de processeurs dans le cadre était celle de la cryptographie, une domaine d'application spécifique à laquelle nous les étudiants au défi de mettre en œuvre une les programmes de nombre de chiffres, avec lequel pour brouiller ou décrypter l'information, à chiffrer. Pour l'édition de pirate, en revanche, nous avons donné aux étudiants de piratage d'un fichier partir d'un ordinateur Unix standard contenant noms d'utilisateur et mots de passe, ce dernier ayant été crypté, et nous avons contesté ceux pirate étudiants à décrypter, tant bien que mal, ces mots de passe, toujours sur cette même domaine. Scramble, un jeu avec lequel certains vous êtes peut-être familier. Un morceau de médecine légale, où nous demandons aux étudiants pour récupérer les données qui avaient été sinon supprimé de mon propre numérique carte compact flash de l'appareil photo, par en fait l'écriture de logiciels à comprendre, où étaient les zéros et de uns dans cette caméra numérique qui, auparavant, composé d'un graphique JPEG? L'année dernière Un défi de toutes sortes impliquant écrit le plus rapide correcteur orthographique possible, en concurrence contre des amis et camarades de classe si qu'ils aimeraient. La mise en œuvre Huff 'n Puff, un programme de compression. Et puis fin du semestre avec CS50 Finance, une application basée sur le Web avec que vous créez un site eTrade-like d'acheter et de vendre des actions, ainsi dire, en fait, tirant presque cotations en temps réel Yahoo! Finances. Ce que nous n'avons pas fait l'année dernière était un ensemble de problèmes que reste néanmoins un favori. Si vous n'avez jamais allé à shuttle.cs50.net, vous verrez un utilisateur interfacer un peu comme ça. Mais il ya deux ans, la classe mis en œuvre, en utilisant Google Maps et la Google Earth plug-in et un peu de savvy avec la conduite sur le campus, de sorte que l'objectif de ce jeu est, comme vous pouvez le voir sur les visages, est de conduire sur le campus à la recherche d' personnel, les boursiers de l'enseignement et des AR, et Quand vous faites, de les mettre sur votre navette. Aucun d'entre eux semblent réellement d'être ici, Nous allons donc entrer un code de triche. [Rires] DAVID MALAN: Nous y voilà. Très bien. Et voici maintenant le personnel lacé à travers le campus. Et comme vous pouvez le voir, sur la droite côté de l'écran, la navette a des sièges vides. Et l'objectif était d'écrire l' code avec lequel pour simuler cette conduire et ramasser et déposer hors de passagers. Celui-là, aussi, en utilisant un langage appelé JavaScript. Donc, comprendre que les programmes de ce genre va soit sur notre trajectoire même cette année, aussi bien. En ce qui concerne, maintenant, d'un soutien supplémentaire, nous avons des heures de bureau. Comme vous l'avez vu dans votre propre maison salle à manger ou dans Annenberg, nous serons dans la salle de la maison halls quatre nuits par semaine - Leverett, Pfoho, Eliot et Annenberg cette année, 20:00-23:00. Et ce que nous avons pensé que nous faisons cette année C'est quelque chose d'un peu différent. Si vous avez entendu des rumeurs que l'an dernier il était un peu trop stressant, Les heures d'ouverture de l'année, que nous décrirons la semaine prochaine, sera plus organique, où à l'arrivée, vous serez expédiés vers une table particulière où plusieurs membres du personnel attendent, et nous ferons les choses beaucoup plus organiquement. Pas plus la file d'attente, pas plus iPad, mais plutôt avoir plus intime conversations autour d'une table de juste environ huit élèves, afin que nous environ la sensation de ce qui autrement serait une classe beaucoup plus petit. Nous vous proposons, ainsi, ces choses que nous appelé soluces, des vidéos filmées dans avancer par l'un des enseignements du cours boursiers, Zamyla, dans lequel elle vous guide à travers le problème de la semaine ensembles, offrant des conseils et astuces pour le défis qui l'attendent. Et inversement, après ensembles de problèmes sont en raison, cette année, nous allons également communiquer petits clips appellent autopsies qui en fait vous guidera à travers solutions de représentation, à la fois bon et mauvais, via lequel vous pouvez déduire comment vous pourriez avoir ou aurait dû mis en place votre propre solution. Et ce que nous vous offrirons pour la première fois cette année aussi, en particulier pour les étudiants qui se prévalent du cours de autre ressources, mais néanmoins luttez beaucoup trop, le cours elle permet de jumeler les étudiants, les ressources le permettent, avec les tuteurs afin que vous avez une bien plus intime possibilité de maison salles à manger permettre une-à-une assistance. Maintenant, un aperçu final à certains des jeux de fin en vue. Vous connaissez peut-être le CS50 Hackathon. Eh bien, à venir en Décembre, à partir de 08h00 PM à 07h00, au début de Période de lecture, sera l'occasion de se réunir avec ses camarades de classe - ce serait autour de 9:00 PM - au cours de laquelle vous plongez dans votre finale la mise en œuvre du projet aux côtés de camarades de classe, amis, et de la nourriture. Ce serait vers 1h00 du matin, lorsque le premier lot de nourriture est arrivé. Et c'est environ 4h00 qui année donnée à la CS50 Hackathon. Mais le vrai point culminant du cours est destiné à la Foire CS50, un campus à l'échelle exposition de vos propres projets définitifs, à laquelle la famille et les amis sont tous invité, comme nos recruteurs et nos amis de l'industrie. C'est, par exemple, est un aperçu de l' 2.000 personnes et plus qui ont assisté dernières années. De telles expressions ne sont pas rares, et faire de même votre camarades de classe se plaisent dans les choses vous avez accompli. Et effectivement, à cette fin, nous avons un événement de début de mandat, aussi bien. Si ce genre de choses vous plaisent, ou vous êtes au moins curieux de ce que ce, sachez qu'une nouvelle tradition de l' cours est appelé CS50 Journée Puzzle. Et cela a été institué un couple de années pour vraiment signaler au campus que l'informatique n'est pas une question programmation, et ce n'est certainement pas d'embrasser seuls les élèves qui ont une expérience préalable. Il s'agit vraiment de la résolution de problèmes plus généralement. Et si Puzzle Day, au cours des dernières années, a évolué pour devenir une belle partenariat avec nos amis de Facebook, par lequel il va être fabuleux prix et de la pizza à travers le fleuve à le i-lab ce samedi. Dirigez-vous vers cette URL avec deux ou trois amis, si vous souhaitez participer dans cette nouvelle tradition. Donc, je voudrais vous demander de garder une chose à l'esprit, et nous avons juste un deux clips minute sur lequel de fermer aujourd'hui. 73% est le numéro à retenir. Gâteau, elle aussi, au rendez-vous en dehors de cette transept que nous levions en un quelques instants, ce qui est une tradition de la formation, aussi bien. Mais c'est la citation clé de l' Le syllabus de cours à garder à l'esprit. Ce qui importe en fin de compte dans ce cours n'est pas tellement où vous vous retrouvez par rapport à vos camarades de classe, mais où vous, en semaine 12, finissez par rapport à vous dans la semaine 0. Mais l'aperçu que nous vous laisserons avec ici aujourd'hui, c'est cette dernière ici par notre même Daniel, qui a fait l' vidéo wrdly il ya quelques instants. Je vous laisse avec cet aperçu de ce qui nous attend. Et comme nous le faisons, si nous pouvions avoir CS50 Le personnel de l'avant de la salle à venir sur place au stade de peindre tous plus d'une image visuelle à ce qui vous attend cette année - obtenir maladroit. Nous allons conclure avec cette ici à l'écran. [Jouer de la musique] DAVID MALAN: C'est CS50. [MUSIQUE - MATT & KIM, "Tout va bien"] ENCEINTE 1: J'aime CS50 plus de chats. ENCEINTE 2: whoaaaa! [Rires] DAVID MALAN: Ce n'est donc CS50. Nous allons vous voir vendredi. [Applaudissements et des acclamations] Narrateur: Lors de la prochaine CS50, une scène démo ne va pas comme prévu. DAVID MALAN: nous voulons trouver Mike Smith dans cet annuaire. Eh bien, quelles sont vos instincts? Je pourrais sauter à peu près au milieu de l'annuaire téléphonique, le regard vers le bas, voir que Je suis à M, et je sais maintenant que Mike Smith n'est pas à gauche. Il doit être à droite. Et donc, à ce stade, nous peut littéralement déchirer - À ce stade, nous pouvons littéralement déchirer - À ce stade, nous pouvons au sens figuré déchirer le livre de téléphone de moitié. [Strumming UKELELE]