[MUSIQUE LECTURE] [Applaudissements] DAVID J. Malan: C'est CS50, L'introduction de l'Université de Harvard à l'intellectuel entreprises de l'informatique et l'art de la programmation. Maintenant, si vous êtes parmi ceux qui chaque année sont assis ici avec un peu de nerfs dans votre esprit, comme que vous ne pensez pas que vous appartenez ici, vous pensez que la plupart quelqu'un assis près de vous sait beaucoup plus que vous, est en effet plus à l'aise que vous à l'ordinateur la science ou ordinateurs plus généralement, réaliser que 78% des étudiants qui ont maintenant prendre CS50 n'ont aucune expérience préalable. En effet, il ya 100 points il sur l'affichage, dont 78 sont en vert, ce qui signifie que vous, si vous êtes parmi ce groupe démographique, sont en très bonne compagnie de maintenant. Et si vous êtes à la place parmi les 22% des étudiants CS50 qui font effectivement avoir une expérience préalable, que ce soit dans haute école ou un autre programme, réaliser que vous aussi, vous être contestée dans le cadre. Non seulement nous avons différentes pistes pour les élèves moins à l'aise et plus l'aise aussi bien dans les sections, nous ont également dite éditions pirates de la plupart des modules de problèmes que mettra au défi les étudiants avec cette expérience supplémentaire d'explorer un matériau similaire mais d'un plus perspective sophistiquée. Mais ce qui est informatique? Eh bien, en fin de compte, ce qui se passe à question que vous explorez ce domaine n'est pas tant où vous vous retrouvez par rapport à vos camarades de classe, mais où vous vous se retrouvent dans semaine 12 par rapport à l'endroit où vous commencez ici en semaine zéro. Maintenant ordinateur science-- bien, nous allons appeler la science de computation-- où le calcul est vraiment juste une façon élégante de dire, en prenant certaines entrées, la production de certains de sortie, et faire en exécutant des algorithmes, jeux d'instructions pour résoudre un problème sur les entrées afin de produire de l'affichage ou solution dans laquelle vous êtes intéressé. Donc, nous avons récemment occasion de voyager sur en Californie pour rencontrer une ancienne. Son nom est Susan Wojcicki. Et elle aimerait parler vous ici en vidéo de témoigner à quel point applicable même juste un avant-goût de l'ordinateur la science au niveau d'introduction peut être. Même si vous n'allez pas à poursuivre informatique comme un champ, ou encore l'ingénierie, ou de la tige, plus généralement, vous verrez, en effet, comment un certain Bien sûr si influencé sa vie. Et elle ne fait que prit quand elle était une personne âgée ici à Harvard College. Si nous pouvions éteindre les lumières pour Susan. SUSAN Wójcicki: Bonjour tout le monde. Je suis Susan Wojcicki. Je suis le PDG de YouTube. Et j'ai pris CS50 quand j'étais une personne âgée à Harvard en 1990. J'étais en fait une histoire et la littérature importante. Et mon été junior, J'ai réalisé que peut-être je voulu apprendre quelque chose sur les ordinateurs. Et oui, je suis revenu. J'ai pris CS50. C'était dur, mais c'était la plus classe incroyable que j'ai pris. Il a changé la façon dont je pense à tout. Et quand je suis diplômé de Harvard en 1990, je suis allé à la Silicon Valley. Et j'ai obtenu un emploi. Et j'ai travaillé en technologie depuis. DAVID J. Malan: Maintenant, ce que Susan n'a pas mentionné dans cette vidéo, que c'était en fait dans son garage que Google lui-même était fondée par Larry Page et Sergey Brin. Maintenant, nous avons également tendu la main à nos amis à code.org, une organisation qui au cours de la dernière année a été amener les gens en particulier heureux de l'informatique et la programmation, en particulier. Mais il est intéressant de noter que la programmation n'est pas la science de l'ordinateur en soi. Informatique n'est pas la programmation. Plutôt programmation est juste un tool-- avec laquelle chacun d'entre vous sera trop bien familier par la end-- de semestre de telle sorte que vous pouvez s'applique pas juste pour les cours à venir dans CS mais quels que soient les domaines d'où vous venez, en sciences humaines, sciences sociales, naturelles science, ou similaire. En effet, permettre à quelques autres anciens élèves et leurs collègues de parler de l'applicabilité du champ qui attend. BILL GATES: J'avais 13 ans lorsque je la première a obtenu l'accès à un ordinateur. Jack Dorsey: Mes parents m'a acheté un Macintosh en 1984 quand j'étais huit ans. Mark Zuckerberg: j'étais dans la sixième année. ENCEINTE 1: j'ai appris à coder en collège. RUCHI Sanghvi: Première année, première semestre, Introduction à l'informatique. BILL GATES: J'ai écrit un programme qui a joué tic-tac-toe. DREW HOUSTON: Je pense que c'était assez humbles débuts. Je pense que le premier programme J'ai écrit des choses comme demandé, Quelle est votre couleur préférée? Ou quel âge êtes-vous? ELENA SILENOK: J'ai d'abord appris comment faire un cercle vert et un carré rouge apparaît sur l'écran. Gabe Newell: La première fois que j'ai eu quelque chose de venir et de dire, bonjour, monde. Et j'ai fait un ordinateur faire. C'était étonnant. Mark Zuckerberg: Apprendre le programme n'a pas commencer que de vouloir apprendre tout de l'informatique ou d'essayer de maîtriser cette discipline ou quelque chose comme ça. Il a juste commencé parce que je voulu faire une chose simple. Je voulais faire quelque chose qui C'était amusant pour moi et mes sœurs. Et j'ai écrit ce petit programme. Et puis tout simplement de ajouté un peu à elle. Et puis quand j'ai eu besoin d'apprendre quelque chose de nouveau, J'ai regardé, soit en un livre ou sur l'Internet, puis ajouter un peu à elle. DREW HOUSTON: Ce n'est vraiment pas la différence jouer d'un instrument ou quelque chose ou pratiquer un sport. DAVID J. Malan: Très bien. Alors laissez-nous maintenant effectivement plonger dans un peu plus profond. Quels sont ces entrées et sorties que nous parlons ici? Alors que diriez quelque chose de simple? Vous le savez sans doute, même si vous avez pas de familiarité avec l'informatique que ce soit, que les ordinateurs utilisent en quelque sorte et comprend que des zéros et des uns. Mais comment peut que éventuellement être donné la façon dont Les ordinateurs de bureau et ordinateurs portables de même de beaucoup aujourd'hui peut faire? L'ADN du jour, le seul alphabet qu'ils comprennent est un zéro ou un un. Eh bien, considérez ceci. Nous, les humains, avons tendance à utiliser la système décimal. "Dec" signifie 10. Et c'est 10 parce que nous avons 10 chiffres, de 0 à neuf. Maintenant, les ordinateurs, par contraste, ont tendance à utiliser binaire. "Bi" signifie deux. Donc, ils ont tendance à utiliser uniquement zéro et un. Mais il s'avère que, même juste avec zéros et de uns, que est suffisamment grand alphabet qui représente plus n'importe quel morceau de données que vous voulez, qu'il s'agisse d'un numéro, qu'il s'agisse d'une lettre, que ce soit un graphique ou une vidéo sur l'écran. Considérons, par exemple, la façon dont nous, les humains interpréter généralement ce nombre ici. C'est seulement trois chiffres, une, deux, trois. Mais nous savons que ce nombre innée maintenant 123. Mais pourquoi est-ce? Eh bien, si vous repensez peut-être à l'école primaire, vous avez probablement été appris à penser ces chiffres comme étant en colonnes, où l'on est dans les centaines lieu, les deux se trouve dans la position des dizaines, et les trois se trouve dans la position des unités. Pourquoi est-ce réellement utile? Eh bien, pensez à la super simple arithmétique que nous avons tous été faire depuis des années. En effet, si vous avez un un à la place des centaines, vous faites le calcul rapide 100 une fois plus 10 fois 2XX parce que deux est dans les dizaines place-- plus 1 fois 3-- parce que trois est dans la position des unités. Alors, bien sûr, si nous effectivement multiplier sur, ce que nous sommes vraiment représentant avec cette pattern-- une deux three-- est 100 plus 20 plus 3, qui, bien sûr, est de 123. Maintenant binaire, et les ordinateurs vraiment, parler fondamentalement la même langue ce que nous faisons. Ils ont juste un petit alphabet. Donc ordinateurs n'ont que des zéros et ceux à leur disposition. Ainsi, alors que nous, les humains ont essentiellement puissances de 10 dans chacun de ces places-- 10 au zéro, l'une à 10, dix pour les deux, vous donnant 110 et 100 respectivement. Parce que les ordinateurs n'ont que deux valeurs ils peuvent comprendre, zéro et un, ils doivent utiliser des valeurs différentes dans ces colonnes, un, deux, quatre. Et si nous avons continué, huit, 16, 32, 64, et ainsi de suite. Mais le motif et la mentalité est exactement le même. Donc, par cette logique, tout le monde, comment Je vais de représenter le nombre un en binaire? Si vous n'avez jamais pensé à auparavant, ce qui est votre intestin dire? PUBLIC: Un. DAVID J. Malan: One. Exactement. Nous avons juste besoin d'un un dans la celles lieu parce que les zéros suffire à nous donner ni un ni deux quatre. Donc une fois un égale un. Maintenant, les choses deviennent un peu intéressant. Si je veux représenter dans binaire, le nombre two-- mais, encore une fois, même si vous n'avez jamais parlé cette langue avant, comment pouvons-nous représentons en binaire La valeur que nous les humains savent que deux? Zéro un zéro. Il suffit de mettre l'une à l' colonne que vous voulez. Maintenant il devient assez facile probablement maintenant. Donc, si je veux représenter three-- il est la colonne de numéro trois. Donc, encore une fois, je peux maintenant ajouter ces valeurs ensemble en mettant une personne ici. Donc, 2 fois 1 plus 1 temps 1 est, bien sûr, 3. Maintenant, les choses deviennent un peu de plaisir dans ceux qui deviennent alors des zéros. Et pour représenter quatre, je reçois ce. Et si on incrémente lentement ici-- ce serait de cinq ans. Ce serait six. Ce serait de sept ans. Mais maintenant, il me semble avoir rencontrer un problème. Comment pourrais-je aller sur le représentant eight-- serait la valeur suivante. Ouais, donc nous avons besoin de nouveaux bits. Et, en effet, si vous avez entendu cette phrase avant, morceaux, c'est un peu moins pour chiffre binaire, zéro ou un. Et si je me trouve à représenter seulement trois de ces morceaux ici. Mais si j'avais un moyen de stocker pas trois différents bits, mais quatre, certes, je pourrais représenter huit, puis neuf, puis 10, et même plus haut. Mais qui appelle alors en question la façon dont nous pouvons aller de représenter ces les choses en premier lieu. C'est une chose à tirer -les ici sur une lame, mais comment voulez-vous les représentez si vous êtes un dispositif mécanique? Qu'est-ce qu'un ordinateur fait pour représenter les entrées et sorties définir fondamentalement calcul à la fin de la journée,? Eh bien, ce quelque chose super simple comme ça? C'est juste une ampoule. Et je peux déclencher ce ampoule à aller sur en tournant un peu d'électricité et en permettant à des électrons à s'écouler à travers, ce qui modifie sa état ou sa valeur, pour ainsi dire. Par exemple, il s'agit d' une lampe de bureau de la vieille école ici avec une telle ampoule à l'intérieur de celui-ci. Et en ce moment, ce n'est pas vraiment faire quelque chose d'utile. Mais dès que je le branche dans une prise électrique et ensuite utiliser cette switch-- ou nous pouvons même dire que c'est un transistor ou penser que c'est such-- Je peux maintenant représenter soit cette valeur, où l'ampoule de évidemment hors, ou cette valeur. Cette valeur ou cette valeur. Cette valeur et ainsi de suite. Ainsi, à l'intérieur d'un ordinateur, sans doute, sont beaucoup plus petites pièces de matériel, mais que, à la fin de la journée tout simplement à utiliser electricity-- peut-être capturer it-- et ensuite, soit garder quelque chose ou garder quelque chose sur. Bien sûr, ce n'est pas particulièrement intéressant de faire avec une seule ampoule. En fait, à quelle hauteur je peux compter en binaire avec cette lampe de bureau ici? PUBLIC: Un. DAVID J. Malan: un, non? J'ai besoin de plus de lampes de bureau si je voulez vraiment compter supérieur. Mais nous pouvons faire mieux que cela. Parce que les ampoules que nous avons mis en ces choses sont des ampoules fait fantaisistes que antan permettrait. Et ils sont en fait ampoules réseau. Et grappes d'entreprises faire ces choses ces jours-ci. Mais il s'avère que celui-ci en particulier est livré avec une fonction pour laquelle vous pouvez changer ses couleurs. Ainsi, par exemple, si vous orné votre chambre d'étudiant avec un peu de ces lumière ampoules, en fonction de votre humeur, en fonction de qui arrive, fonction de la météo, en fonction du temps de la journée, vous pouvez réellement changer les couleurs de les ampoules dans votre chambre. Et c'est parce que ceux-ci la lumière ampoules et d'autres comme lui ont ce qui est appelé une API, une application l'interface de programmation, qui est un sujet avec lequel vous serez bien familiariser avec la fin de l'semestre. Et ce n'est que fantaisie, manière cryptique de dire, vous pouvez les programmer lumière ampoules pour faire votre appel d'offres. Vous pouvez leur envoyer des messages tout comme vous, un être humain, peut envoyer un message à un serveur Web dire, donnez-moi les nouvelles d'aujourd'hui ou me donner mon e-mail. Vous pouvez envoyer plus mystérieux messages à ces ampoules à-dire, allumer et éteindre. Mais ce n'est pas tout ce qui intéressant. Vous pouvez dire, devient rouge, tourner sur le vert, tourner sur fond bleu, tous avec la même ampoule. Et vous pouvez même, avec un peu plus avertis, dire, tournez-vous vers le bleu quand c'est un jour sombre à l'extérieur, par exemple. Il peut effectivement patcher en une API météo et savoir le temps qu'il fait, ou le temps de la journée, ou d'autres déclencheurs. Donc, en fait, deux de Propres membres du personnel de CS50, Dan Bradley et Ansel Duff ici, veuillez procura nous tout un tas de ces ampoules. Et ils ont construit CS50 de premières ampoules jamais binaires, où nous avons représenté ici-- avec ces ludique peu magnets-- les différents espaces réservés nous fait allusion à il ya tout juste un peu. Donc, en venant ici est la les lieu, deux, quatre. Et nous n'avons pas vu plus que cela. Mais, bien sûr, ils sont des puissances de deux. Huit, 16, 32, 64, et 128. Donc, si je veux maintenant être un peu amateur que l'utilisation de ce vieux interrupteur de l'école, J'ai ici sur cet iPad une interface super simple que Dan Bradley, un ancien élève et collègue enseigne maintenant, programmé à l'aide du code HTML et JavaScript, qui sont balisage et de programmation langues respectivement. Et vous pouvez probablement see-- même dans le back-- il ya un gros plus et un gros inconvénient, plus un bouton pour chacun de ces ampoules. Et qu'est-ce que cela va me permettre de ne est, par exemple, cliquez sur le signe plus et représentent désormais, de Bien sûr, ce nombre? One. Et je peux frapper à nouveau. Deux. Trois. Quatre. Cinq. Six. Sept. Et voici maintenant que nous obtenons retournement, mais nous avons un quatrième bit ce temps, alors maintenant nous avons huit. Donc, nous pourrions le faire pour un certain temps. En fait, en passant, à quelle hauteur peut-on compter? N'importe qui? PUBLIC: 255. DAVID J. Malan: 255, non? Ne vous inquiétez pas trop sur le calcul pour maintenant, mais c'est un chiffre assez décente. Mais il ne fait lié seulement le nombre des éléments d'information, comme une lettre ou un graphique que nous pourrions représenter. Mais peu importe pour le moment. Je vais aller de l'avant et tournez-les tous. Et si je le pouvais, je voudrais poser pour un bénévole, notre premier volunteer-- oh, hello-- sur scène. Le hic, c'est que vous devez être apparaissant à l'aise, comme vous l'avez bien sont en face de tous vos camarades de classe, ainsi que sur l'internet. Et laissez-moi regarder un peu au-delà the-- que diriez-vous ici à la chemise blanche? Et remettre en place. Venez sur place. Quel est votre nom? PUBLIC: Jackie. DAVID J. Malan: Jackie. Jackie, venez sur place. Donc, ce qu'il ya aussi sur ce iPad, un bouton appelé Mode Jeu. Et ce mode de jeu est va me permettre d'entrer à l'avance une décimale particulière, nombre, les chiffres que nous les humains sont familier. Et puis, vous serez mis au défi ici pour utiliser les touches sur l'une de top-- chacun de ces bulbs-- pour réellement comprendre le modèle d'ampoules que représente le nombre en question. Et je suis désolé, mais quel est votre nom? PUBLIC: Jackie. DAVID J. Malan: Jackie. Bien. Heureux de vous rencontrer. Alors laissez-moi aller de l'avant et programme pour le monde pour voir le numéro 15. Nous allons continuer ce petit d'abord ici. Et je vais aller en Mode Jeu. Et je vais préciser, nous donner le numéro 15. Dáccord. Et maintenant, avec tout le monde si watching-- vous voulez vous démarquer peut-être de cette façon, car il sera en ligne up-- aller de l'avant et basculer les huit boutons sur le haut pour faire tourner les ampoules sur ou désactiver comme bon vous semble. PUBLIC: OK. DAVID J. Malan: Et pas de tricherie en frappant, plus de 15 fois. Oh, nous allons le faire. PUBLIC: Oh, attendez. Je suis tellement désolé. DAVID J. Malan: Vous pouvez également activer les ampoules sur individuellement à chacun de ces boutons sur le dessus. PUBLIC: Oh, OK. Donc, il serait like-- DAVID J. Malan: OK. Alors maintenant, nous avons huit. Donc, arrêtons-nous pour l' public à s'engager ici. Quel numéro est Jackie représentent actuellement? 11. Donc, nous y sommes presque. Et excellent. Donc, nous avons notre premier gagnant. Félicitations. Et nous avons pensé que nous aurions quelques cadeaux fabuleux. Si vous souhaitez être l'un de ces Dortoir ici sur le campus, vous pouvez avoir vous-même un projet final maintenant avec cette API, grâce à Jackie. Donc maintenant-- [Applaudissements] --si nous le pouvions, un plus autour de cet exemple. Oh, maintenant tout le monde veut des ampoules. Pour l'édition dite de pirate, nous allons offrir plus de spectacle un-- oh, oui, sans engagement. Je pense que vous venez maintenant si votre main va vers le bas. Quel est votre nom? PUBLIC: Alex. DAVID J. Malan: Alex, viens par ici. Donc, pour Alex, nous allons programme dans un nombre légèrement plus grand. Peut-être dans l'ordre. Le nombre de 50. PUBLIC: OK. DAVID J. Malan: Mais, comme Je dit-- et vous pourriez vouloir rester ici si que les boutons alignés comme vous le feriez expect-- mais je n'ai appeler cette édition pirate. Bonne chance So--! [Rires] Vous serez en mesure de tourner les si vous-- OK. Excellente. Magnifique. Félicitations. [Applaudissements] Je suppose que je devrais payer. Félicitations à Alex ainsi. Dáccord. Donc la livraison finale voici espérons-le, franchement, la simplicity-- la simplicité avec laquelle vous pouvez obtenir un peu de lumière agréable ampoules, apparemment en [inaudible]. Mais ils représentent, en fin de compte, les mêmes idées avec laquelle nous, les humains sont déjà que trop familier. Donc, ce qui pourrait la prochaine soit l'étape de la progression d'essayer de faire quelque chose intéressant avec des données et représentant les entrées qui ne sont pas seulement nombre, mais sont peut-être des lettres ou plus? Eh bien, il s'avère que la monde de l'informatique, depuis de nombreuses années, simplement adopté un arbitraire, mais un norme cohérente qui associe les numéros de lettres de l'alphabet. Par exemple, voici un extrait de cette cartographie. C'est ce qu'on appelle Ascii. A-S-C-I-I. Et c'est tout simplement un tableau qui associe les letters-- majuscule dans ce case-- nombres décimaux. Mais quelle est la conséquence? Eh bien, si vous voulez réellement représenter quelque chose comme un email ou un texte sur une page Web, vous veulent évidemment à montrer les lettres humaines de l' alphabet, pas des nombres. Ainsi, en fonction de la contexte du programme que l'utilisateur se sert, si c'est un navigateur Web ou un client de messagerie, numéros peuvent certainement être interprétés comme des lettres. C'est-à-dire, les modèles de bits peut facilement être interprété comme lettres. Et si ce que nous pouvons avoir est la lettre A être représentée comme 65, B étant représentée comme 66. Donc, si nous avons une super- à court terme, comme salut, ce qu'est un ordinateur finirait magasin en décimal mais vraiment en binaire, en utilisant une séquence de bits, en s'appuyant sur un bit de l'électricité d'une manière quelconque, seraient les deux nombres 72 et 73. Mais la configuration de bits que représente ces valeurs. Donc, voilà donc comment nous pouvons représenter nos entrées et sorties. Et il suffit de dire, nous pouvons faire des représentations plus complexes en fin de compte avec des choses comme graphiques, vidéos, musique et plus comme nous le verrons plus tard ce terme. Alors que tout laisse alors algorithmes, ces ensembles des instructions avec lesquelles nous tentons de résoudre des problèmes réels. Nous passons en intrants à des algorithmes. Et ces algorithmes produisent sorties, sorties espérons corriger et espérons-le, aussi, efficacement recueillies sorties. En d'autres termes, c'est une chose de mettre en œuvre correctement quelque chose. C'est une autre chose à mettre en œuvre quelque chose de bien ou efficacement. Par exemple, une démonstration que nous sommes friands de dans le cadre est celui-ci. Mais ces choses sont de de plus en plus difficile à trouver. Mais c'est effectivement une ancienne école annuaire téléphonique, à l'intérieur de laquelle sont 1000 pages, plus de noms et numéros de téléphone. Et si je voulais regarder quelqu'un dans ce répertoire, Je ne pouvais tout simplement faire un algorithme très naïf. Je pourrais ouvrir à la première page, et Je pourrais commencer à chercher, par exemple, quelqu'un du nom de Mike Smith. Et s'il n'est pas le premier Cette page, je progresse à la deuxième, et ensuite à la troisième, puis à la quatrième, et ainsi de suite, jusqu'à ce que je trouve enfin Mike Smith. C'est maintenant que l'algorithme correct? PUBLIC: Oui. DAVID J. Malan: Ouais. S'il est là, je vais finit par le trouver. Mais c'est sans doute pas très efficace, certainement pas rapide, parce que, mon Dieu, pourquoi suis-je perdre mon retournement de temps à travers toutes ces pages quand je le pouvais certainement le faire physiquement plus vite? Eh bien, une légère optimisation, ainsi parler, peut-être pas une page à la fois, mais deux, quatre, six, huit, 10. Toujours pas? PUBLIC: Non DAVID J. Malan: Donc pas si je pour exemple sauter sur Mike Smith. Mais tant que je soutiens pédale une page, si je le dépassement, nous pourrions corriger ce pourrait autrement être un gotcha. Mais est-ce mieux? Est-il plus rapide? Je veux dire, oui. Il est littéralement deux fois plus vite si je fais deux pages à la fois. Donc, si je devais à l'origine de 1000 pages, maintenant je n'ai plus qu'à retourner 500 fois, pas pleinement 1.000 pages pour obtenir potentiellement dans le pire des cas à la fin du téléphone livre, où quelqu'un comme Mike Smith ou quelqu'un avec un nom plus tard peut-être en réalité. Mais, bien sûr, nous les humains ne sont certainement pas va faire que, certainement pas à ce point dans nos vies. Ce qui est un délai raisonnable humain va probablement faire? PUBLIC: Allez directement à The9 S de. DAVID J. Malan: Allez tout droit pour les S? Comment puis-je aller directement à les S? PUBLIC: Rip en deux. DAVID J. Malan: Eh bien, il n'y a pas de marquage. Donc, oui, si il y avait en effet une étiquette ou un onglet collant pour S, nous devrions sauter là. Mais il est assez inoffensif. Donc le mieux que je puisse faire, c'est à peu près à la section S ou peut-être plus ou moins dans le milieu. Mais la livraison clé maintenant-- et l'intuition que vous avez pris pour accordée pour les années probably-- est que ce que vous faites maintenant savoir sur ce problème? PUBLIC: [inaudible] DAVID J. Malan: Mike Smith est certainement pas dans cette moitié du problème parce Smith vient après le milieu qui est à peu près la section M, il semble être. Donc, comme vous avez pu voir à Visitas, nous pouvons maintenant littéralement déchirer ce problème en deux. PUBLIC: Woo! DAVID J. Malan: C'est plus en plus facile. [Applaudissements] Là vous allez. [Rires] Et maintenant, je suis fondamentalement avoir le même problème, mais il est littéralement deux fois plus petit. Je suis toujours à la recherche de Mike Smith. Et j'ose dire, je peux encore regarder pour lui de la même manière, diviser le problème en deux nouveau, de déchirer le problème à nouveau en deux, ce qui me laisse maintenant avec un problème d'un quart de la taille, jeter de façon spectaculaire que la moitié de distance, et répéter encore et encore ce processus et encore, en regardant vers le bas à chaque point de voir si Mike Smith est sur la page en question. Et si je fais ce droit, finalement, je vais me trouve avec une seule page sur laquelle Mike Smith est si il est en effet dans l'annuaire téléphonique. Bien sûr, je pouvais jamais appeler à nouveau Mike. Mais le fait est que si nous avons commencé avec 1000 pages, mon premier algorithme, tourner la page, peut-être 1000 times-- nettement moins parce que c'est un nom de S et non pas un nom de Z, mais comme jusqu'à 1000 pages potentiellement. Deuxième algorithme, mieux c'est. 500 pages. Troisième algorithme, bien que, combien de pas ne serait-il prendre pour diviser une page 1000 annuaire de moitié comme ça? 10, donner ou prendre. Alors que par feuilletant que annuaire, la plongée et la conquête, pour ainsi dire, 10 fois, je ferai mon chemin vers le bas juste une seule page. Et si nous pouvons saisir cette intuition maintenant un peu graphiquement si vous considérez juste ce super simple graphique. Nous sommes sur l'axe des x, ou horizontale axe, est la taille de mon problème, le nombre de pages dans le livre de téléphone. Et les informaticiens en général comme pour appeler la taille d'un problème n, où n est juste une variable qui represents-- en ce case-- nombre de pages. L'axe vertical y, ou, ici, c'est va être le temps de résoudre, peut-être le nombre de pages à tour de rôle, peut-être que le nombre de secondes ou minutes, quel que soit votre unité de mesure est. Et si cette ligne rouge représente le premier algorithme, parce qu'il ya une une à une relation entre le nombre de pages et quantité de temps qu'il faut. Si Verizon double le nombre de pages dans le livre de téléphone de l'année prochaine, ma course time-- l' temps nécessaire pour exécuter cette première algorithm-- double dans le pire des cas. Mais le deuxième algorithme, où je suis renversant par deux, il faut moins de temps pour un problème de taille donnée. Donc, si j'ai ce nombre un préavis de pages que la ligne jaune suggère moins de temps à résoudre. Et en effet, il représente, nous dirons, n sur deux. Mais ce qui est la forme de la troisième et la courbe finale va ressembler? Ouais, il est en effet aller à look-- je vous ne savez pas ce que vous alliez dire. Mais voyons ce que vous alliez dire. PUBLIC: Comme ça. DAVID J. Malan: Ça va ressembler ce, un exactly-- slope-- logarithmique lequel vous avez cette pente curieux. Ce n'est plus une ligne droite. Et ce qui est convaincant à ce sujet, c'est que même si le graphique est maintenant coupé, vous pouvez extrapoler dans votre l'esprit que la ligne verte n'est pas va augmenter dans hauteur tant que ça que vous avancez encore bas que l'axe horizontal. En effet, Verizon, pour exemple, pourrait doubler le nombre de pages du téléphone livre entre cette année et l'année prochaine de 1000 à 2000 pages, mais pas grand-chose. Avec cette troisième et dernière, il ya un algorithme intuitif de diviser et conquérir. Il va me prendre combien de étapes l'année prochaine pour trouver quelqu'un comme Mike Smith? PUBLIC: Un. DAVID J. Malan: Il ya juste un. Et ils peuvent quadrupler, c'est va me prendre seulement deux autres étapes et ainsi de suite. Et si ce n'est témoigne à quel point une certaine conception minutieuse et une certaine appréciation pour ce vos entrées sont peut faire encore mieux. Maintenant, nous sommes une tricherie peu dans le sens que nous tirons parti de l'hypothèse. Quel est mon hypothèse sur notre annuaire cela m'a permis de diviser pour régner de cette manière intuitive et toujours correct? PUBLIC: [inaudible] DAVID J. Malan: Ouais. Ainsi, il a été ordonné. Il a été classée par ordre alphabétique la société de l'annuaire téléphonique. Si c'était dans un ordre aléatoire, que serait un enfer d'un livre de téléphone, mais il ne serait pas certainement se prêter à l'algorithme J'avais l'habitude, parce que vous le feriez jamais juste arriver sur Mike Smith si vous avez gardé divisant en la moitié de cette façon par hasard. Donc, nous allons formaliser maintenant ce qui est clairement intuitive. Donc, ce qu'on appelle pseudo est où nous allons commencer certains de nos problèmes initiaux. Et c'est une façon générique de décrire un algorithme ou d'un programme informatique, n'utilisant pas C, ou C ++, ou Java, ou n'importe quelle langue spécifique, mais juste en utilisant l'anglais, avec qui tout être humain peut connaître. Et nous pourrions écrire le pseudo pour résoudre ce problème de la manière suivante. La première étape, prendre le livre de téléphone. Deuxième étape, ouverte à mi-annuaire. Troisième étape, regardez les noms. Étape quatre, si Smith est parmi names-- Et maintenant, il s'agit d'une construction intéressante. C'est un point de décision. C'est une bifurcation de la route, si vous sera, une branche, pour ainsi dire. Je vais donc mettre en retrait juste par convention step-- five-- pas qui est à par exemple, je vais appeler Mike. Donc ce retrait, totalement convention arbitraire humain, mais il est simplement voulu exprimer sémantiquement Smith est que si les noms, alors je devrais appeler Mike. Pendant ce temps à l'étape six, avis que l'indentation est parti. Donc, le reste est l'autre fourchette dans la route, l'autre route que je pourrais voyager. Donc, d'autre si Smith est plus tôt dans le livre, ce qui est ma prochaine étape va probablement être ici? PUBLIC: Vous allez à gauche. DAVID J. Malan: Ouais, donc aller à la moitié gauche de l'annuaire. Jeter la moitié droite si Smith est tôt dans le livre. Donc, ouvert au milieu de la moitié gauche de l'ouvrage. Et puis l'étape huit, allez à la ligne de trois. Et c'est une boucle curieux je suis induisant une récurrence pour ainsi dire. Mais plus que dans l'avenir. J'utilise ma même algorithme, mon pseudo même, pour résoudre le même problème parce que la seule chose qui a changé est la taille du problème, ne mon objectif, et non la personne Je suis à la recherche. Donc, je peux réutiliser l'algorithme que j'ai déjà défini. Sinon, si Smith est plus tard dans book-- vous pourriez guess-- ouvert au milieu de la moitié droite de l'ouvrage. Et encore une fois, allez à la ligne de trois. Else-- ce qui est la dernière ligne dans ce programme va être? Si il n'est pas parmi les noms sur la page je suis sur, si il n'est pas plus tôt dans le livre, et il n'est pas tard dans le livre, ce que je sais est vrai à propos de Mike Smith maintenant? PUBLIC: Il n'est pas dans le livre. DAVID J. Malan: Il n'est pas dans le livre. Donc le mieux que je puisse faire est simplement abandonner et arrêter ce programme. Bien. Donc, à ce stade, nous allons jeter un Visite rapide de certains de ce qui attend. Et en fait, je suis accompagné par un certain nombre de personnel CS50. Si ces gens pouvaient tout me rejoindre ici sur scène. [Applaudissements] Rappelez-vous, ce n'est que un sous-ensemble du personnel CS50, puisque chaque année, nous avons près de 100 personnes membres dans des rôles d'assistants de cours, enseignement boursiers, et plus encore. Venez sur place. Alors, ils se joindront à nous ici maladroitement pendant un moment que nous donnons une visite éclair de ce vous devriez vous attendre ici dans le cours. Alors d'abord et avant tout, nous avons SAT / UNS que l'option de classement en cours. Cette initiative vise délibérément être une option selon laquelle si vous êtes un peu mal à l'aise à être en cours, et vous ne craignez failure-- même si franchement signifie l'échec de blesser votre GPA, obtenir un B et non un A-- qui est précisément ce qui, certainement pour une passerelle Bien sûr, comme CS50 et d'autres cours d'introduction, cette option de classement vise à permettre. J'encourage de tout cœur students-- particulier si sur le fence-- pour démarrer le Bien sûr SAT / UNS, même restent SAT / UNS. Mais vous pouvez certainement passer à une lettre année par le cinquième lundi dans la durée. Franchement, quand je était un étudiant de première année en 1995, Je me n'ai même pas pris CS50 parce que je n'ai pas eu le courage pour réellement mettre les pieds dans la salle de classe. Il semblait un domaine trop inconnu pour moi et je n'avais vraiment pour ceux de mes amis, franchement, qui avait été la programmation car ils étaient six ou peut-être 10-ans. Et c'est seulement parce que j'étais en mesure de prendre CS50 dans ma journée dans la version équivalente d' SAT / passe UNS-- / échec de retour dans le day-- que j'ai même pris 50. Et d'une certaine manière ou d'une autre, je suis ici avec vous aujourd'hui. Maintenant, quant à ce que vous devraient garder à l'esprit à propos de 50 est l'inscription simultanée. Contrairement aux rumeurs qui vous avez pu entendre, vous pouvez, en effet, en même temps s'inscrire dans CS50 et une autre classe qui répond au même niveau ou un certain chevauchement temps que les conférences de CS50 ici. Voir le programme pour les détails de la mise en œuvre de celui-ci. Conférences, quant à lui, contrairement à ce qui est officiellement dans le catalogue, sera généralement seulement répondre à seulement une heure. À l'occasion, nous pouvons lancer un peu long. Mais gardez à l'esprit que la but dans les conférences de CS50 est de vous fournir une vue d'ensemble conceptuelle, j'espère que certaines manifestations, peut-être même quelques cadeaux, de ce qui attend pour la semaine qui suit. Et si en cours, nous allons explorer ces sujets et des exemples, ainsi que amener les élèves sur scène, et personnel sur scène aussi souvent que nous le pouvons, pour seulement quelques heures chaque semaine. Les articles, quant à lui, sera offert par ces gens ici-- nombreux d'entre eux boursiers, certains l'enseignement d'entre eux bien sûr assistants-- se produire chaque semaine. Et ce qui est essentiel pour maintenir à l'esprit, c'est que nous ne have-- pas contrairement à d'abord Nuits, la musique class-- différentes pistes de sections pour les élèves les moins confortables, plus confortable, et quelque part entre les deux. Et franchement, vous savez si vous êtes moins à l'aise. Et vous le savez probablement si vous êtes plus à l'aise. Et si vous n'êtes pas vraiment sûr, vous êtes par définition, quelque part entre les deux. Alors, quand vient le temps de section dans une semaine ou deux, par le programme, nous vous posons cette question. Et vous pouvez choisir eux-based sur votre propre niveau de confort et d'être avec students-- être vert dots-- similaire du niveau de confort pour vous. Pendant ce temps, nous avons problème fixe, qui sera en fin de compte définir votre expérience dans ce cours. Ils sont offerts généralement dans de multiples éditions. Une édition standard que nous attendons plus chaque élève au cours de s'attaquer mais aussi une édition dite de pirate qui n'offre aucune forme de crédit supplémentaire pure et simple, mais vraiment les droits de vantardise à-dire que vous avez essayé et abordez Les éditions de pirates du cours que approcher le matériau semblable mais sous un angle plus sophistiqué. Ce que nous offrons pour l' édition standard, pour, encore une fois, une majorité super- des étudiants, ne sont pas seulement des visites virtuelles, qui sont vidéos dirigés par le personnel de l'cours que vous marchez vraiment à travers la les problèmes de cours et la conception possible implémentations. Et nous avons aussi, après la fait, offrir des autopsies, sorte que, si vous vous demandez comment vous pourriez avoir ou doivent résoudre un certain problème, le personnel enseignant vous guidera à travers ceux sur la vidéo ainsi. Pendant ce temps, ce qui attend trop sont cinq jours de retard et le fait que nous allons laisser tomber votre plus bas problème réglé score. Nous apprécions certainement que, en échange de la charge de travail qui attend 50 de vous, la vie est dans la manière parfois, sinon cinq fois. Et si ce offrira vous un peu de souplesse, prolonger votre délai de, par exemple, un Jeudi midi à vendredi à midi. Voir le programme de la détails de mise en œuvre de celui-ci. Maintenant ce qui l'attend maintenant? Et ça ne se produit pour moi maintenant combien de temps Je vais avoir les gars sommes ici sur scène. [Rires] DAVID J. Malan: Mais nous y reviendrons l'arrivée à son apogée avant longtemps. Donc ce qui l'attend en termes des ensembles de problèmes? Eh bien, peut-être un teaser de ce que nous a fait l'année dernière avec vos prédécesseurs. Dans la première série de problème l'année dernière, nous avons lancé Scratch, un graphique langage de programmation qui vous permet de programmer littéralement par glisser-déposer les pièces du puzzle, comme ceux-ci, qui sont rappelle les constructions verra une semaine donc, quand on passe à une plus traditionnelle langue, ou C. L'année dernière, nous avons procédé à cet ensemble de problèmes, impliquant pour la cryptographie, le brouillage de l'information pour l'empêcher de gouvernements ou entre amis ' yeux que vous ne voulez pas le voir. Codé en voici une un message que bientôt vous sera en mesure de décrypter ou de-mêlée. Breakout est un problème établi l'an dernier, dans laquelle vous utilisez ces nouveaux programmes trouvés compétences à mettre en œuvre effectivement un jeu que vous wherein-- peut rappeler de childhood-- l'objectif était de frapper l' briques qui sont au-dessus de l'écran ici, l'accumulation d'une marquer le long du chemin, et mettre en œuvre vos propres algorithmes avec laquelle cette solution en fin de compte vous permet de jouer le jeu. Pendant ce temps, plus tard dans le semestre, nous vous donnerons un dictionnaire de 143 091 mots anglais. Et vous serez mis au défi d'écrire un programme qui vérification de l'orthographe, les documents, par chargement que beaucoup de mots en mémoire aussi efficacement que possible. En général, vous opposant contre vos camarades de classe si vous optez dans un peu d'un défi à bord de chef de file pour voir qui peut utiliser le moins secondes de temps de fonctionnement, et le plus petit nombre de méga-octets de mémoire, et effectivement affiner vos programmes être incroyablement efficace des ressources non juste le temps. L'année dernière, aussi, nous avons examiné à la fin du semestre à la programmation web. Et en effet, ce que nous ferons à nouveau cette année avec plusieurs séries de problèmes, vous présenter les techniques et l'état d'esprit avec lequel vous pouvez appliquer ces compétences en programmation à sites Web, des sites Web dynamiques, sites qui permettent de résoudre effectivement problèmes et se comporter différemment et ne sont pas simplement statique sites avec des informations statiques. Le projet final en fin de compte définira, si, le point culminant du cours pour les étudiants, dans laquelle vous serez mis au défi de mettre en œuvre plus rien d'intéressant à vous, tant qu'il en quelque sorte s'appuie sur les leçons du cours. Et comme vous l'avez vu dans le vidéo au début, nous allons conclure le semestre avec la CS50 Hackathon, qui si, inconnu, débutera à 19h00 une nuit et terminer à 7h00 le lendemain matin. Autour de 21h00, nous allons Pour en premier dîner. Autour de 01h00, nous allons Pour la deuxième dîner. Et si vous êtes encore debout à 5h00, nous feront la navette bus vous IHOP pour le petit déjeuner. Le CS50 Fair, quant à lui, est un événement pour qui 2000 ainsi que les professeurs, les étudiants, et le personnel de l'ensemble du campus sera venir voir vos réalisations dans le cours et la finale projets et réalisations que vous créez sur votre ordinateur portable, ordinateurs de bureau, ou peut-être même les ampoules lumineuses. Pendant ce temps, les heures de bureau et la structure de support. Et maintenant, ça aurait été un meilleur moment pour vous tous élever. Heures d'ouverture auront lieu quatre nuits une semaine pour plusieurs heures chaque nuit avec en général de 20 à 30 de la Le personnel de cours sur le devoir à la fois de vous fournir intime tête-à-un les possibilités de soutien avec les ensembles de problèmes du cours. Tutorat aussi sera disponibles, en particulier pour les étudiants de moins comfortable-- ou oser dire moins comfortable-- pour qui les heures de bureau ne sont pas les plus environnement favorable et ne sont certainement pas le plus sans stress. Surtout quand les délais sont pressants, nous vous coupler de manière proactive nous avec un membre du personnel à travailler avec sur certaines horaire régulier de vos besoins et leur horaire le permet. Et le personnel. Permettez-moi de vous présenter Davon, Rob, et Gabriel, les chefs de cette année. Si vous voulez chaque say-- [Applaudissements] mot --a. [Applaudissements] Davon ici est la le directeur de cours, qui veut dire dans son rôle à temps plein il aide à l'exécution et de la logistique de CS50. DAVON: Ouais, salut les gars. Vous verrez beaucoup pour moi à des heures de bureau. Je vais enseigner sections. Et si vous prenez des e-mails à venir, Je vais probablement répondrai. Donc je vais voir beaucoup d'entre vous tous semestre. Et bienvenue à CS50. DAVID J. Malan: Et maintenant, Gabriel, qui lui-même était juste un étudiant de première année l'an dernier, mais pour les deux dernières années a été l'exploitation de son propre version du CS50 au Brésil, où il a téléchargé tout le content-- de cours qui est d'être clairement filmé et placé online-- afin qu'il puisse le traduire en Portugais, puis enseigner plus de 100 de ses camarades de classe au cours de la cours d'une couple d'années, l'enseignement dans sa langue maternelle Le programme du cours. GABRIEL: Bonjour. [Applaudissements] GABRIEL: Salut, je suis Gabriel. Je suis le chef TF du cours. Et j'espère que vous aimerez CS50. C'est CS50. DAVID J. Malan: Maintenant pour Rob. Oh, vous voulez l'introduction? ROB: Non, je ne sais pas. [Rires] DAVID J. Malan: Et Rob Boden. [Rires] ROB: Salut, je suis Rob. C'est ma cinquième année impliqué dans le cours. Chaque année, c'est juste une de mieux en mieux la classe, si vous les gars sont clairement va être génial. J'espère que vous avez du plaisir avec elle. Je vais avoir du plaisir avec elle. Donc, vous voyez autour. DAVID J. Malan: Et temps ne permettra pas us-- [Applaudissements] Le temps nous permet pas à présenter tout le monde sur la scène et l'ensemble de leurs collègues qui sont les classes des courses aujourd'hui. Mais permettez-moi de vous présenter Belinda et CS50 Puzzle Jour, qui attend ce Samedi prochain, qui est le premier de l' événements de grande envergure de cours. Celui-ci en particulier signifiait à marteler le point que l'informatique est en fin de compte pas de programmation, mais plutôt sur la résolution de problèmes en général. Et Puzzle Jour, que vous aurez voir, vous apportera et vos camarades de classe together-- nous espérons que ce samedi. BELINDA: OK. Salut, les gars. Alors merci. Alors que notre illustre capitaine dit, Belinda de mon nom. Je suis un étudiant en deuxième année à Quincy House. Je, comme vous les gars, pris CS50 l'année dernière, vraiment aimé. J'ai un faible pour les vous les gars dans la troisième rangée. Et je suis fier de dire que je suis maintenant dans une relation engagée avec CS50 [inaudible]. Dáccord. C'était ma version boiteux d'une blague. Quoi qu'il en soit, si émouvant sur, je voulais juste d'inviter vous les gars tout à l'i-lab, ou de l'urticaire HBS. Nous allons avoir Puzzle jours de 12h00 à 3:00. Et c'est une grande opportunité pour vous les gars pour répondre à vos amis et compagnons CS, résoudre des énigmes non-CS, comme le capitaine mentionné, et aussi manger de la nourriture gratuite, gagner des prix exceptionnels, comme des cartes-cadeaux, 75 $ par personne, et also-- quoi s'agissait-il? Wii U ou quelque chose? Wii U? Oui. Pour notre tirage au sort. Impressionnant. Donc, je vais rester après la classe. Et si vous les gars ont tout questions, faites le moi savoir. DAVID J. Malan: Et vous allez voir, au-delà cela, il n'y a rien à faire aujourd'hui. Le premier problème réglé sortira vendredi. Mais pour nous ramener à la maison aujourd'hui, je voudrais vous présenter plus précisément un plus membre du personnel, Colton Ogden ici, dont les mains sont maintenant protégée au dessus de vous avec ce contrôleur MIDI à marteler le point plus que l'informatique, aussi, a applicabilité au-delà de l'ingénierie SOUCHES et de l'informatique elle-même, s'étendant même à des domaines tels que la musique. Colton a gentiment offered-- je pensais l'un d'eux allait fixer la mise au point. Andrew, si nous pouvions invoquer accent ici pendant un moment. Qu'est-ce que Colton a fait à l'avance est le programme ce dispositif, ce bloc de touches que vous voyez décriviez ici, un contrôleur MIDI, moyennant quoi chacun de ces boutons est branché à une note de musique particulier ou un solide, et plus généralement d'un enregistrement, de telle sorte que par la lecture de ces modes boutons, un peu comme motifs de bits, peut représenter d'autres concepts plus niveau. Il pourra en fin de compte nous ramener à la maison aujourd'hui? Sans plus tarder, si nous pourrions éteindre les lumières, et tourner sur l'écran derrière Colton. PUBLIC: Woo! DAVID J. Malan: C'est CS50. [MUSIQUE LECTURE] [Applaudissements] C'est tout pour CS50. Nous vous voir vendredi. Certains gâteau vous attend dans le transept. [MUSIQUE LECTURE]