>> David: Bonjour, mon nom est David Malan et c'est CS50. Et, ce n'est pas votre typique cours scientifique de haute école d'informatique. Ce cours est un peu quelque chose de spécial. Et ce n'est pas parce que je suis de l'enseigner. c'est parce que c'est l'un des, nous aimons à penser, ces cours ont aimé effectivement rare que votre cerveau tellement et votre emploi du temps si bien que d'ici la fin du semestre vous avez vraiment se sentir plus intelligent. Alors, c'était la façon dont j'ai ressenti quand j'ai pris ce cours en 1996. J'ai été un grand gouvernement de l'époque ici vivant dans Mather Chambre. Et, I. [Acclamation] Comme les autres, les cinq autres là-bas. Donc, j'ai été un grand gouvernement de l'époque. Et j'ai été un grand gouvernement, parce que j'ai toujours aimé l'histoire. J'ai aimé le droit constitutionnel à l'école secondaire. Et oui, je pars sur le chemin étudiants de première année de cette année à faire ce que je fais le mieux, faire ce que je savais que j'aimais. Et j'ai toujours été un peu un geek, je serais toujours babillait avec des ordinateurs. Mais, moi-même, peut-être ironiquement, rétrospectivement, que j'avais toujours vu les gars qui prenaient en informatique dans mon lycée, mes amis les geeks réel. Et pourtant, a finalement fait, deuxième année je suivre ce cours peu CS50 qui appelle effectivement m'avait effrayé ma première année propres. Et j'ai été assistant de l'utilisateur à la fois. Donc, je n'étais certainement déjà qualifié, au moins, d'être parmi ceux qui, ces geeks qui je me suis moqué de l'école secondaire. Mais, j'avais peur. Il ya, il avait cette réputation à l'époque et peut-être encore en partie que c'était un, c'était un cours effrayant. Il a été beaucoup de travail. Il a été difficile et pourtant, c'est une de ces choses où, mon Dieu, l'écorce a été bien pire que sa morsure. Je me suis retrouvé sophomore année, pour la première fois, effectivement trouver les devoirs agréables. Et je ne dis pas cela juste à la hauteur de ce cours pour vous. Ce fut une véritable réalisation pour moi. Maintenant, je pense, à un moment donné, je n'ai franchi la ligne d'geekdum vrai lorsque j'ai effectivement utilisées pour la hâte de vendredi soir parce que je pouvais détendez-vous en face de mon MacBook et peu de travail sur les plateaux de problème CS50. Donc, à ce point, je crois que j'avais bien franchir la ligne. Et, notre objectif dans ce cours n'est pas de transformer tous de vous en cette personne, mais, juste pour dire qu'il ya un petit quelque chose sur ce cours, une science petit quelque chose sur l'ordinateur en général, surtout de nos jours. Et, plus acclimatés, nous avons tous dans les technologies, les jouets plus nous transporter dans nos poches qui se sont des ordinateurs. Je veux dire, mon iPhone est en fait un ordinateur plus performante que mon portable était au collège. Vous pouvez faire beaucoup de choses intéressantes avec ces choses. Et maintenant, la plupart d'entre nous dans cette salle, probablement juste utiliser les logiciels d'autres personnes, les outils des autres, les solutions d'autres personnes à des problèmes parce que nous allons vers iTunes, on télécharge un autre logiciel de l'App Store et Walla nous pouvons faire quelque chose de vraiment bien. Mais, d'ici la fin de ce semestre, vous pouvez être la personne qui fait que la résolution de problèmes. Vous pouvez être la personne la résolution de certains problèmes, immeuble app, ce morceau de logiciel, cet outil qui, soit, on s'amuse juste moi, vous amuse. par exemple, le contrôle, par exemple, votre bibliothèque iTunes à partir de vos appartements bien un soft qui existe déjà ou vous pouvez trouver les horaires des navettes plus facilement par exemple. Donc, en fait, l'une des premières choses que j'ai fait après la prise CS50 a été de nouveau, il a probablement été à ce point vendredi soir et samedi soir, il y avait cette possibilité au moment où Harvard courait navettes. Et, à ce jour, ils ont toujours horaires imprimés. Mais, il n'y avait vraiment aucun moyen de trouver en ligne quand la prochaine navette a été. Maintenant, je n'ai pas de soins, parce que même si je vivais dans Mather je n'étais pas parmi ceux qui ont généralement pris la navette. Mais, j'ai eu beaucoup d'amis dans Pfoho par exemple. Et l'un d'eux m'a demandé, je crois en un point. [Acclamation] Bon Pfoho mieux que Mather apparemment. Ainsi, un de mes amis de type m'a fait penser peut-être je peux écrire un petit programme pour le type d'aide mes amis vérifier les horaires de la navette. Et ainsi est né le garçon de navette maladroitement nommée, ce morceau de lexique qui a dormi dans un certain nombre d'années au moins chez quelques-uns des finissants. À l'époque, c'était ce programme petite ligne de commande dans un esprit similaire à Dos. Il a été exécuté dans un environnement UNIX. Donc, il n'était pas très sexy du tout. Vous venez de taper quelques commandes en couple et il vous dit quand les navettes ont été. Eh bien, ces jours-ci c'est un peu plus sophistiquée. Et, c'est en fait représenté de précision les types de projets que les étudiants dans ce cours jusqu'à la fin de décision par le mandat prend fin. Donc, ceci est une version quatre, quelque 15 ans plus tard, des Shuttleboy. Semble Google Maps est un peu lent là-bas. Mais, pour ceux d'entre vous qui doivent sortir d'ici après les cours et aller, par exemple, de la Memorial Hall et le besoin d'aller jusqu'à, disons, le Quad. Eh bien, vous pouvez soit laisser en deux minutes si, par, ce n'est vraiment pas travailler pour vous tout de suite, ou si vous avez comme beaucoup d'autres options que vous pourriez aimer. Et, bientôt, nous ne pouvons pas partir de ce CS50, ce sera la même capacité par SMS. Vous pouvez Shuttleboy texte par téléphone. Vous appelez Shuttleboy. numéro de téléphone CS50 cette année, eh bien, étonnamment présent était disponible, 617-BUG-CS50. Alors, qui fera ses débuts prochainement. Donc, ne pas l'appeler tout de suite parce que je suis devenu réprimandé pour avoir, en ce moment c'est d'être acheminés au téléphone cellulaire collègues de notre système d'enseignement de la tête. Ainsi, il vous suffit de le faire si vous avez des questions concernant l'horaire de la navette maintenant. Mais, qui sera bientôt mis en œuvre. Ainsi, d'autres choses, en fait, que nous nous sommes passé cet été sur réellement en préparation pour ce semestre a été tout un tas d'autres problèmes que nous voulions résoudre. Par exemple, il ya un tas de trucs qui se passe dans ce campus un jour donné. Et en fait, en d'autres termes, il ya un tas de trucs en cours à ce campus que je n'ai certainement jamais profiter. Et, même si je suis maintenant dépassés par le nombre de choses qui sont en cours, sur le campus, me semble encore de ne jamais trouver le temps. Mais, Walla, là encore, une conférence de CS50. C'est là que vous, c'était donc un, c'était un programme que nous avons écrit à regrouper tous les événements sur le campus. Et cela a été quelque chose que les autres élèves dans ce même cours ont abordé sur leurs propres. Et, nous avons de travailler avec d'autres entités sur le campus pour vraiment y arriver. Mais le point d'CS50 ce terme est que tous ces petits programmes que nous avons travaillé sur de savoir si celle-ci ou si l'un d'agrégation de l'ensemble des nouvelles de Harvard en un seul endroit, toutes les Nouvelles Google, toutes ces choses vont avoir ce sont appelées interfaces API, programmation d'applications. Et ce n'est que fantaisie parler au nom de la capacité de laisser d'autres personnes, les gens dans cette salle, en train de faire quelque chose avec ces mêmes données. Ainsi, en ce qui concerne la fin, si vous décidez de mettre en œuvre le projet final relatif à de nouvelles ou des événements ou des cartes, nous avons ainsi, au moins comme un cours, qui fera d'autant plus facile cette année en vous offrant une interface, une sorte de fonction, pour ainsi dire, un logiciel que vous pouvez utiliser dans vos propres projets pour aller au-delà où les élèves, peut-être, sont allés dans le passé parce que ce cadre n'a pas été mis en place pour eux. Et encore, tout cela a commencé, du moins pour moi, il ya 15 ans la mise en œuvre Shuttleboy. J'ai ensuite envoyé mon ami Ken en Pfoho. J'ai dit hey Que pensez-vous? Est-ce utile? Il postés sur la liste des Pfoho ouvert et Walla, après toutes ces années, je suis apparemment encore la traite de ce projet. Et la chose propre à ce sujet, et c'est là aussi un cours comme celui-ci en ingénierie et en informatique, je crois, est un peu particulière, c'est que, lorsque vous faites de votre maison et quand vous faites vos projets dans ce cours, vous le savez, beaucoup d'entre eux, oui, vous aurez mis de côté et pas vraiment utiliser à nouveau. Mais, certaines d'entre elles, vous. Et il ya cette chose vraiment puissant, du moins pour moi, cette chose vraiment excitant, quand vous faites quelque chose et d'autres personnes effectivement de soins, d'autres personnes ne font pas que sourire et votre Pat sur le dos et puis sorte de vaquer à leurs propres vies. Ils utilisent effectivement ce que vous faites dans leur propre vie, même si c'est pour quelque chose d'aussi stupide ou aussi simple que de trouver quand ils ne peuvent sortir de là pour prendre la navette à côté de la Quad. Ainsi, en ce qui concerne la fin, c'est l'un des objectifs de ce cours, à l'autonomisation des gars à un peu d'identifier un problème, que ce soit sur le campus ou nous l'espérons bien au-delà du campus, et en fait utiliser vos propres compétences, votre esprit et résoudre ce problème dans certains part, technologiquement. Donc, c'est aussi un cours comme on dit dans le programme et la description officielle des cours qui vous apprend à penser et il vous apprend à résoudre des problèmes plus efficacement. Eh bien, qu'est-ce que cela signifie? Eh bien, quand vous avez 600 mégahertz dans votre poche ou trois gigahertz sous votre bureau à la maison, vous pouvez résoudre beaucoup de problèmes de manière efficace seulement par la force brutale de cisaillement. Mais, il ya beaucoup de problèmes dans ce monde, si elle est à la recherche, par exemple, le réseau Facebook ou l'internet par Google, qu'il n'a pas d'importance rapidité de votre ordinateur est particulièrement, il n'existe aucun moyen dans l'enfer que vous allez à la recherche des milliards de pages Web rapidement à moins que vous aborder ce problème de façon intelligente. Vous ne vous contentez pas de recherche, par exemple, une énorme liste de toutes les pages web sur la terre de haut en bas la recherche de quelque chose lié à des termes de recherche que vous cherchez nous l'espérons Google et probablement Google et Facebook et l'une de ces grandes entités beaucoup de gens intelligents réfléchir comment ils peuvent trouver des données plus rapidement, comment ils peuvent traiter l'information plus efficacement, et comment ils peuvent généralement juste retour des résultats plus rapidement, de sorte que vous pouvez faire encore, des choses plus intéressantes de ces dispositifs. Et alors, qu'est-ce que nous entendons, mais, par la façon dont, enseigner aux gens comment réfléchir plus attentivement, plus algorithmique. Eh bien, cette petite visuelle semble toujours aller plus ainsi. Et, il semble être mémorable. Et j'ai même été demandé hier par un ancien élève, oh tu vas faire ce qui est nouveau répertoire. Et je suis assez sur place a décidé bien sûr que nous allons construire une chose répertoire. Et il m'a demandé quand vous le déchira en deux à droite, je me suis dit bien oui, techniquement, nous le déchira en deux, mais pas de la manière, dans la façon dont l'informatique ce que je pourrai pour arracher cette chose en deux. Et oui, voici le problème que nous avons présenté un certain temps. Donc, voici le répertoire. Il a obtenu au moins un millier de pages. Et le simple but à portée de main monde bien réel est de trouver, par exemple, une personne ici. Ainsi, Mike Smith, le nom de famille commençant par S. Donc, je suis un être humain typique, je ramasse ce livre téléphone. Et en at-il, que voulez-vous, une personne moyenne, faire pour commencer à trouver Mike Smith, évidemment pas savoir à l'avance quelle page il est effectivement en marche. Bon, alors vous allez à peu près au milieu, à droite. Et à ce stade de l'histoire, je suis probablement dans le N ou M, vous savez, à peu près à mi-chemin du répertoire. Il s'avère que, la dernière fois que j'ai fait cet exemple, je me suis retrouvé en quelque sorte dans la section d'escorte. Donc, c'est effectivement pas aussi équilibrée entre A à M et N à Z. Mais, aujourd'hui, nous sommes, en effet, dans le M's, ça va faire, maintenant je suis à la M. Mais quel est mon repas maintenant tout comme un arrêt normal de l'homme de la rue? Où puis-je aller ensuite pour Mike Smith. [Inaudible] Et si, juste sans doute sur cette moitié, à droite, parce que S vient après M. Et oui, c'est là que réside le drame visuel. Ce n'est pas vraiment déchirant elle de moitié, à droite. J'ai en quelque sorte trompés par le centre. Mais, nous savons maintenant que Mike est du moins pas dans cette partie. Nous pouvons littéralement jeter la moitié du problème de suite. Et je me retrouve avec le problème qui est fondamentalement toujours la même chose, trouver Mike Smith dans un livre vraiment grand. Mais, le problème est maintenant inférieure de moitié. Si elle avait un millier de pages avant, il comprend désormais 500. Vous savez quoi, je peux faire la même chose. Je ne peux sorte de manière récursive ou à plusieurs reprises faire la même chose. Maintenant, je ne suis pas tout à fait à S. Je suis à T. Et alors, oh je suis allé un peu trop loin. Mais, je sais maintenant que Mike n'est pas à droite, il va y avoir une certaine classe un jour où je ne peux pas déchirer le barrage chose, je parie. Mais maintenant, je sais qu'il n'est pas à droite. Donc, aujourd'hui, le problème a été écartelé. Donc, je suis passé d'un millier de 500 à 250 pages. Et encore, si vous continuez la logique, les mathématiques continuer, je suis à découper ce problème en deux, dans la moitié, dans la moitié jusqu'à ce que finalement je suis soit va pas trouvé de Smith à tous, peu probable, ou je vais trouver celui que je cherche. Mais, cela, alors, se poser la question, est-ce mieux que l'approche simple de dire simplement, vous le savez, A, nope, B, non, à partir de gauche à droite va aléatoirement dans le livre? Eh bien, oui, instinctivement. Il va être beaucoup plus rapide. Mais, combien de moins? Eh bien, si j'ai un livre de mille pages de téléphone ou disons 1024 pour ceux d'entre vous qui aiment les puissances de deux, combien de temps pourrais-je avoir à partager ce problème en deux avant la conclusion de M. Smith? >> Dix. >> David: Donc, dix, à droite. Si vous avez 1.024 pages et vous les couper en deux, dans la moitié, dans la moitié, dans la moitié, je le fais dix fois ce qui signifie que je vais de 1.000 pages à la personne que je suis à la recherche dans les pages seulement dix tours. Et c'est donner des résultats intéressants, mais, vous le savez, si vous pensez que vous avez fait cela toute votre vie. Ce n'est pas si dramatique. Mais maintenant, que le répertoire n'est pas seulement pour Boston, c'est pour l'ensemble des États-Unis ou le monde entier et cette chose a des milliards de pages en elle, alors imaginez un répertoire à quatre milliards de pages. Combien tourne la page que je vais avoir à faire au maximum pour trouver Mike Smith dans un répertoire de quatre milliards de pages? >> Journal de base deux. >> David: Alors oui, si vous êtes genre de type mathématique de ce journal est la base deux. Mais, si vous pensez que 4-2000000000 to un milliard, alors un demi-milliard. Je veux dire, qui va effectivement se Whittles à sacrément rapide. En fait, avec 32 halvings de l'annuaire, même à partir de quatre milliards, je vais descendre d'une page. Et c'est là que ce genre de choses se puissants, je pense. C'est lorsque ces idées sont convaincantes quand vous pouvez avoir un problème de quatre milliards de pages et en 32 étapes que vous pouvez trouver la personne que vous recherchez. Et oui, c'est ce que nous entendons lorsque nous disons que vous allez apprendre à réfléchir plus attentivement, plus algorithmique, de façon plus intelligente de résoudre les problèmes. Et les retours sont énormes quand on peut effectivement le faire, et encore, de ce point de l'Googles du monde, la Facebooks qui ont le luxe d'avoir des ensembles de données énormes. Il faut aborder ces problèmes de cette façon sinon c'est tout simplement pas aller au travail. Eh bien, qu'est-ce qu'est-ce que l'élève fait de rappel? Moi, nous aimons faire les choses qui sont un peu ridicules parfois sorte de prendre le dessus de ce qui est contraire beaucoup de nouveau matériel. Et alors, il fait, cet ancien élève m'a envoyé ce lien qui je suis en avance, juste pour le plaisir, puis il a regretté à la fin, tiré vers le haut sur utube ici. Alors, j'ai pensé partager ce un scientifique non-ordinateur veut dire quand il larmes un répertoire de moitié. [Rires] Silence] [ [Inaudible] >> Vous savez de plus de 200 pages, belle ligne propre, légitime larme. [Rires] >> David: oui, je suppose, de son mode de fonctionnement de trop. Donc, ce que je suis sorti de ce cours tous les ans est oui, Shuttleboy, puis sur Oui un diplôme en informatique, puis sur Oui un doctorat en sciences informatiques. Et ce n'est pas ce que nous essayons de tourner la plupart des étudiants dans ce cours en. La plupart d'entre vous dans ce cours ne vont pas aller sur une majeure en informatique. Certains d'entre vous pourrait mineur, mais pour certains d'entre vous ce sera un cours terminal. Et c'est parfaitement bien parce que ce cours est, en effet, structurées d'une manière où même si vous venez de payer votre cotisation pendant plusieurs mois et vous avez vraiment l'accent et vous vraiment prendre le maximum de ce cours que vous le pouvez, vous, en fait, être bien équipé pour revenir à votre monde de l'économie, biologie, psychologie, mathématiques appliquées, et faire un usage effectif de ce qui est finalement tout aussi intéressant que bien sûr nous espérons que sur le plan conceptuel, il est fondamentalement pratique. Et c'est aussi quelque chose qui est peut-être un peu rare à trouver. Je pensais part de quelques remarques que les étudiants de l'automne dernier, mis dans ce guide repère ces dernières années lorsqu'on les interroge sur ce que voulez-vous dire aux futurs étudiants. Eh bien, si vous n'avez pas déjà penchée sur ces commentaires, un élève a dit ce cours aura une bonne quantité de votre temps jusqu'à. mais, si vous mettez votre travail dans un tout nouveau monde, dans son ensemble, si vous mettez au travail, si vous mettez le travail en, ça va, si ce n'est pas la mienne sa grammaire, donc si vous avez mis, mettre au travail, un tout nouveau monde s'ouvre à vous. Amazing combien j'ai appris en seulement 12 semaines. Un autre étudiant a écrit, tu ferais mieux de prendre telle ou vous allez le regretter. Un autre écrit, un peu plus brutalement, il vous botter le cul et vous laisser le sentiment grande. Et puis finalement, celle-ci est peut-être quelque chose que je ne peut montrer, par écrit, mais, d'autre part par le bas ici. [Rires] Donc, je ne suis pas sûr si vous avez beaucoup d'amis qui ont pris ce cours, mais nous sorte de fait beaucoup de dommages aux étudiants l'an dernier. Nous avons introduit, au début, plusieurs conférences, un quiz années, un couple d'ensembles de problèmes, cette notion de lolcats. Vous ne pouvez pas voir ce que je vois ici, mais dans un moment vous verrez un jeune homme nommé chat heureux qui est le chef de l'lolcat dite. C'est l'un des attaquants internet stupide que je pense franchement que la dichotomie entre ces deux messieurs ici et ce que nous avons maintenant à l'écran est peut-être. [Rires] Une des utilisations les plus inappropriée de ce théâtre à ce jour. Et, pourquoi ne pas nous rendre un peu plus réel un peu plus personnelle de cette notion de fait pour résoudre un problème plus efficacement. Un simple problème d'un jour de toute l'école est de s'asseoir ou se lever et commencer à compter les étudiants, à l'appel le droit de toutes sortes. Eh bien, l'approche la plus naïve, mais néanmoins très correct qu'un enseignant peut prendre un, deux, trois, quatre, cinq, six, sept, et nous serions ici un certain temps. Alors, qu'est-ce qu'une amélioration marginale sur ce même que vous auriez pu faire un enfant? Comment comptez-vous les gens plus vite? Et, ne pas commencer à lire les instructions de mon propre? Qu'est-ce que vous auriez fait comme un enfant? Commencez deux à deux de comptage, le droit, comme je suis assez bon à deux, quatre, six, huit, dix, 12. Donc, c'est quelque chose de bien intéressant. Alors, combien d'amélioration, c'est que là-bas? Ainsi, il est évidemment un facteur de deux. Il me faut deux fois moins de temps. Mais, vous savez ce que, comme nous allons le trouver tout au long de ce semestre, gros problème, comme l'accélération de votre temps de fonctionnement seulement un facteur de deux n'est pas du tout intéressant parce que l'analogique ici dans le monde informatique, c'est que je suis un CPU Je suis un ordinateur, ainsi diable, si je viens d'attendre 12 mois, 18 mois, j'ai l'ordinateur simplement être en mesure, par nature, par le nombre de gigahertz j'ai en moi pour être en mesure de compter les gens dans cette salle plus vite. Donc, ce genre de, ce genre de accélérations linéaires comme facteur de deux facteur de trois, même facteur de dix, qui s'en soucie? Bon, on peut jeter le matériel sur le problème. Nous pouvons attendre les choses. Nous pouvons développer des machines plus rapides. Mais, intellectuellement, ouais C'est le genre de intelligent, mais ça n'a pas vraiment changer fondamentalement le problème. Je vais toujours de gauche à droite, avant / arrière. C'est vraiment le même algorithme. Mais, je vous propose que nous pouvons faire mieux. Nous pouvons faire plus intelligents que cela et ne fondamentalement une mise en œuvre plus rapide. Mais, pour démontrer cela, nous vous avez besoin pour nous d'humour pour un moment. Et c'est à ce point où il sera je parle moins et que vous parlez plus. Mais j'ai besoin d'exécuter la première étape ensemble, ce qui est de savoir si vous souhaitez que nous l'humour, s'il vous plaît se lever. Les orientations ici sur le plateau, vous savez, d'accord, un couple d'entre vous ont de s'asseoir. Ceux d'entre vous dans le dos, il nous allons, bien. Merci. Ainsi, le programme est ici devant vous. Vous êtes maintenant les ordinateurs exécutant ce programme. Il est assez explicites sur ce point. Oui, vous devriez être numéro un. Get it? A droite, beaucoup d'entre vous pensez probablement tout de même le déjà, première année en premier. Alors, pensez à vous-même, vous êtes le numéro un. Donc, voici la troisième étape, jumellera avec quelqu'un debout, ajoutez vos deux nombres et d'adopter cette somme que votre nouveau numéro et nous ferons un test de cohérence. [Bruits de foule] Savez-vous combien nous en avons? >> [Inaudible] >> Pas de [inaudible]. >> Nous avons besoin d'une clé de correction. Silence] [ >> Oui. [Bruits de foule] >> David: À ce stade, l'algorithme doit être à sa fin. [Bruits de foule] Peut-être que nous aurions dû aller à mon approche, après tout. >> 43. >> 163. >> David: arithmétique Ooh devant plus de 300 personnes. [Rires] Dans notre décompte final va être? >> 180. [Rires] >> 1200. >> 386. >> David: 386, et êtes-vous le dernier debout? Est-ce que tout le monde? Connaissez-vous la réponse? >> Qu'est-ce? >> David: Savez-vous quelle est la réponse? Nous n'avons pas apporté une touche de réponse avec nous pour, 386 est en fait exactement la bonne réponse pour la première fois. [Acclamation] [Applaudissements] Ce n'est pas grave. [Applaudissements] Très, très bien fait. Alors, quel était le repas parce que vraiment senti un peu plus lent que mon approche très simple mais néanmoins très correct de simplement se cache-couches et twosies et juste se fait avec de gauche à droite. Mais, qu'avons-nous vraiment tout faire? Eh bien, si il y avait à peu près, disons, 400 d'entre vous debout à un moment donné, et la moitié d'entre vous, très rapidement, d'après ce que j'ai pu dire, envie de s'asseoir. Ainsi, la moitié d'entre vous assis, nous sommes allés de 400 à 200 puis à 100 puis à 50 puis à 25. Encore une fois, il ya ce même clivage et la conquête de l'idée que nous avions avec le répertoire. Encore une fois, à chaque itération on réduit de moitié la taille du problème, nous l'avons divisé par deux, nous l'avons réduit de moitié. Donc, en théorie, votre algorithme aurait dû être beaucoup plus rapide que mon approche linéaire parce que mon approche serait avons pris dire 400 pas ou peut-être si je suis un peu habile de 200 marches. Mais, le vôtre serait avons pris beaucoup moins, à droite de 400 à 200, 100, 50, 25, 13, six, de sorte que moins de dix étapes à la fin par rapport à mes 200 ou 400. Et il ya le germe d'une idée très intéressante. Et oui, mathématiquement ce que vous venez de faire est quelque chose qui est un peu dans la nature logarithmique de base par deux journaux, nous avons divisé en deux et deux fois. Et nous allons revenir plus loin dans ce semestre. Mais c'est là encore une application très intelligent. Et, nous sommes juste de rayer la surface de la très habile des approches très intelligents efficaces aux problèmes que nous pourrions finalement résoudre. Alors, qui sont les personnes que vous venez de causer avec si brièvement? Une préoccupation commune à un cours comme celui-ci est que tout le monde à gauche de vous et tout le monde à le droit de vous doit clairement savoir plus que vous. Eh bien, ce n'est absolument pas le cas. Et en effet, ces dernières années, ce cours a fait un effort concerté pour atteindre les personnes les moins à l'aise, pour ainsi dire. Et par là, nous n'entendons pas les gens qui n'ont jamais touché un ordinateur avant parce que c'est vraiment difficile de trouver ici ces jours-ci, mais les gens qui utilisent le courrier électronique, utilisation de Facebook, peut-être même à l'heure actuelle, mais ne sont pas nécessairement très bien quoi faire quand quelque chose va mal ou quand ils sont interrogés sur quoi que ce soit technologique, vous le savez, les mains se lèvent ou qu'ils sorte de pousser le matériel à un ami qui est peut-être plus versé dans ce qu'eux. Eh bien, ce sont des statistiques de semestre de l'an dernier. Ainsi, lorsqu'on lui a demandé, quand nous avons demandé nos 400 de même l'an dernier les élèves, vous le savez, quel est votre niveau de confort à venir dans cette catégorie, ainsi 34% se écrivit que parmi ceux qui sont moins confortables. Donc, si vous êtes venu dans cette salle et pensent encore aujourd'hui, que, vous savez quoi, ce terme décrit moins à l'aise moi, sachez que vous êtes en très bonne compagnie. Mais, rendent compte aussi que, si vous venez dans ce cours avec une formation en informatique et vous avez été vraiment geek à l'école intermédiaire et secondaire qui était l'écriture de code et vous-mêmes l'enseignement des langues, ainsi que du bien aussi parce qu'il ya certainement un non triviale audience moyenne avec cette toile de fond, ainsi, environ 13%, la saison dernière. Et puis, il ya tout le monde, sorte de quelqu'un qui ne pense pas qu'ils soient moins à l'aise, ils ne le pense pas qu'ils sont plus confortables mais ils sont juste à un cours pour obtenir quelque chose hors de lui. Ainsi, ce cours ne compte tirer tout le spectre des étudiants. Et, pour mettre les choses en termes plus concrets, 71% des élèves, l'an dernier, n'avaient aucun cours derrière eux. Donc, si vous entrez dans ce cours la pensée oh tout le monde qui prend CS50 a été un as de l'informatique à l'école secondaire, ce n'est pas le cas. La plupart des gens sont sans doute peu intéressé. Et quelques-uns, oui, absolument avoir pris quelques cours, quelques-uns, ou au moins une personne l'an dernier avait pris cinq cours auparavant. Donc, nous avons certainement des valeurs aberrantes, mais encore une fois la viande de la courbe est dans les valeurs inférieures au total. Et une autre statistique intéressante, nous avons partagé au cours des deux dernières années est le rapport entre les sexes. Ainsi, historiquement, du moins en informatique, il ya un peu d'un biais masculin féminin. J'ai il ya quelques années il a été beaucoup plus marquée que l'an dernier. Donc, nous sommes maintenant à près de 40% de niveau. Et si je peux jeter un gantelet juste pour le plaisir d'avoir un diagramme circulaire troisième année prochaine, c'est encore plus équitable. Je tiens à souligner qu'il n'y a absolument aucune raison du point de vue des cours que les hommes et les femmes ne devraient pas être s'inscrire dans ce genre de cours. En relativement nombre égal et de réaliser à 38 pour cent, 48 pour cent, nous sommes en fait très heureux de voir que nous sommes presque au même, du moins, statistiquement, même valeur de 50%. Donc, si vous êtes, en effet, des femmes, ne reste trop assure que ce n'est pas, en effet, une classe dominée par les hommes. Eh bien, ce se trouve juste à être 20ème anniversaire du CS50. I, bien, merci. [Acclamation] [Applaudissements] C'est très gentil de vous parce que nous avons apporté gâteau pour vous effectivement. Et ainsi, lorsque vous quittez ici plus tard aujourd'hui, vous allez vraiment vous courez la chance de rencontrer beaucoup de l'enseignement de cours boursiers qui va s'attarder dans le couloir. Et oui ce sera une sorte de passage de Nice incités de la réunion des boursiers d'enseignement. Mais, nous prenons un voyage jusqu'à une petite boulangerie et de nouveau compatible avec les cours est la nature ludique tout est néanmoins attendre montant non négligeable de travail alors que nous sommes à avoir un tel plaisir. Mais, nous avons un de ces gâteaux pour vous. [Rires] Donc, si vous vous moquez c'est vraiment bon parce que même si vous faites partie de ceux moins à l'aise au moins vous êtes au courant. Ceux d'entre vous dans les 14 pour cent pourraient préférer cette saveur. [Rires] Et puis, si vous ne savez pas ce que l'enfer qui se passe en ce moment, nous avons également présent pour le reste d'entre vous. [Acclamation] [Applaudissements] Donc, ceux qui sont coupés en morceaux à l'extérieur que nous parlons. Encore une fois, nous allons prendre les choses d'un cran et au moins introduire des locataires de base que nous allons ensuite prendre pour acquis dans le reste de ce semestre. Donc, nous avons tous le savez sans doute que les ordinateurs en fin de compte se résument en quelque sorte de zéros et de uns, ces choses appelées bits. Qu'est-ce que cela signifie? Eh bien, vous pouvez penser à lui franchement comme une ampoule, un peu, c'est une ampoule qui est soit sur ou qu'il est éteint. C'est un commutateur, il est soit sur ou qu'il est éteint. Aujourd'hui, les scientifiques pensent généralement d'ordinateur à mesure que le nombre zéro arbitraire et la, et la notion de sur l'un. Donc, si vous jetez un interrupteur de lumière sur l'un que l'éteindre c'est un zéro. Ou, de façon équivalente, allumer la lumière qui est la valeur du tour vrai it Off c'est la valeur des faux. Donc, ce sont juste des synonymes. À la fin de la journée, oui, tous les calculs, toutes les choses qui se passe sous le capot d'un ordinateur ne reviennent en fin de zéros et de uns. Et, lorsque vous arrêtez d'y penser, il est assez remarquable dam ce que le monde l'a fait avec ces blocs de construction de base, y compris certains des dispositifs que vous tenez dans votre main. Eh bien, pourquoi zéros et de uns utile? Mon Dieu, même dans le monde réel nous avons au moins dix chiffres, de zéro à neuf. Pourquoi si peu? Eh bien en termes de matériel, il est très facile. Il est beaucoup plus facile de représenter deux Etats, à droite. Si les ordinateurs sont branchés dans le mur, en général, vous avez cette source facile de la nature binaire. Il est allumé ou éteint. L'électricité est fluide ou pas. Donc, c'est quand même de l'une des raisons initiales que le monde est allé avec juste zéros et de uns dans les ordinateurs. Mais, vous pouvez les utiliser comme des blocs de construction. Donc, c'est effectivement un peu petit sur l'écran ici, mais nous pouvons compter en binaire ou nous pouvons représenter tout ce que nous voulons en binaire comme nous pouvons, par exemple, décimal, comme on peut, même en fait, avec des lettres alphabétiques. Et oui, voici le système rapidement. En quelques minutes de temps en couple, vous savez maintenant comment compter, comment écrire, comment parler binaires un peu comme votre propre ordinateur portable. Eh bien, vous avez, dans le monde du binaire, en quelque sorte comme l'école primaire colonnes ou des valeurs. Ainsi, à l'école primaire, nous apprenons ce n'est les colonnes c'est la colonne des dizaines, des centaines de la colonne et ainsi de suite. En d'autres termes, pourquoi le nombre que nous savons que 123 le nombre 123? Eh bien, mon professeur m'a appris ce n'est les colonnes, ce fut les dizaines, les centaines c'était. Eh bien qu'est-ce que cela signifie? Eh bien, pour comprendre ce que la valeur totale est de ce qui est autrement de la chaîne de chiffres, il suffit de hachage marques sur la planche. Eh bien, nous avons un 100, donc c'est 1 fois 100, puis plus ce que deux 10 de sorte que de les 2 fois 10 plus trois, de sorte que de 3 fois 1, ok, alors il me semble avoir décidé de remonter à l'endroit où j'ai commencé. Mais, ce processus très simple qui consiste simplement en multipliant les chiffres par la valeur de la colonne est exactement ce binaire est tout au sujet. Mais, en binaire que vous utilisez des puissances de deux puissances de dix pas. Donc, voici une série de huit ampoules. Les informaticiens, comme d'utiliser des valeurs comme deux et huit et 16 et 24 et 32 parce qu'ils sont tous des valeurs généralement facile à utiliser. Ainsi, lorsque nous parlons de huit valeurs dans l'ordre, c'est comme appelé l'octet. Et ces jours, nous parlons rarement en octets seulement, on parle de giga-octets mégaoctets et des téraoctets de nos jours. Mais tout cela est finalement la même chose. Voici huit bits AKA un octet, tout jargon simple. Donc, toutes ces ampoules sont éteintes. Ainsi, le calcul est effectivement très facile. Il ya sur la droite, mais il est petit pour voir, est la colonne de l'un, le deux, le quatre pattes, le huit, le 16s, 32s, 64s, 128s. Bon, c'est peut-être difficile à mémoriser au début, mais c'est juste multiplié par deux de droite à gauche. Ainsi, vous pouvez toujours recréer ce. Eh bien, ils sont tous hors de sorte que la valeur de 0 espace réservé fois, 0 espace réservé fois. Donc, c'est le chiffre 0 représente en binaire. En d'autres termes, comment écrivez-vous le nombre que nous savons que 0 en binaire? Eh bien, un, deux, trois, quatre, cinq, six, sept, huit, et techniquement, tout comme en décimal, tous ces zéros, ils n'ajoutent rien à la formule qu'ils sont juste là parce que nous nous avons décidé arbitrairement voulez huit de ces choses dans une rangée, à droite. Si elles sont des objets physiques, nous avons huit Ils ont donc à tous de partir. Ainsi, nous pourrions viens pris la fuite avec un zéro. Eh bien comment vous représentez le numéro un? Eh bien, instinctivement vous allez jeter l'un des interrupteurs. Vous allez tourner une ampoule sur. Donc, il est le numéro un parce que nous mets un, une ampoule qui se trouve sur, dans la position de la personne. Comment allons-nous représentent deux? Eh bien, nous sommes effectivement aller jeter deux interrupteurs maintenant au moins par rapport à cet état, nous devons nous tourner sur les deux colonnes de désactiver les colonnes et nous avons maintenant la valeur d'un dans la colonne deux. Donc, c'est la valeur totale des deux. Maintenant, un exercice rapide mentale; ce qui va se passer avec la séquence suivante? Comment puis-je présenter le numéro trois? Eh bien, j'en ai besoin de la colonne par deux, celui de la colonne de trois et ah ha. Donc, maintenant, j'ai incrémenté celui-là. Et maintenant, ce même modèle de base se répète. Quel est le numéro quatre? Eh bien, voyons, j'ai juste besoin un dans la colonne de quatre zéros, puis dans les deux et les. Alors, elle continue de cette façon. Et, c'est tout simplement cette séquence d'étapes. Et dans la notion de binaire n'est vraiment pas si compliqué que ça. En haut il nous reste huit zéros. Voici que nous avons sept zéros et un. Voici que nous avons six zéros, un, et un zéro et que le binaire. Now, thankfully, we computer scientists, we programmers by terms end are not going to often be writing in binary, talking in binary, thinking in binary because we've built many layers of the traction on top of that. In fact, people rarely talk about bits except in a networking context they talk about bytes because one bit, not that useful, eight bits these days still not that useful, but at least eight bits, one byte is at least getting us toward more useful units of measure. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. But that's as of yet unclear. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. All right. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Dec for decimal. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Capital A. And the number 97? Lowercase A. All right. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Right. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [Rires] >> Seventy Nine. >> David: Can someone second that? Yes. All right. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. All right. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [Musique] >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [Applaudissements] ==== Transcribed by Automatic Sync Technologies ====