Donc, il est mon plus grand plaisir de vous accueillir tous ici aujourd'hui
pour la première conférence de bien, Présentation
à l'informatique et de la programmation.
Aussi connu comme CS50 ou bien, CPSC 100, officiellement ici à Yale.
>> Donc, nous ne pouvions pas être plus excité de vous accueillir tous ici.
Mon nom est Patrick Rebeschini.
Je suis l'instructeur en chef pour la classe.
Je représente un groupe d'environ 60 membres du personnel
qui va travailler avec vous tout au long du semestre.
Ce nombre est presque 60 d'entre nous.
Pourtant, le long de l'extraordinaire niveau des engagements
que nous mettons dans ce classe, fait CS50 la classe
à l'Université de Yale qui offre le plus grand niveau de soutien
à vous tous.
Et nous ne pouvions pas être plus fier de offrant ici encore cette classe.
>> En fait, comme vous allez bientôt découvrir, CS50 est bien plus qu'une classe.
Il est une communauté.
Et vous ferez partie bientôt de cette communauté.
Ceci est la deuxième année que Yale propose cette classe.
Nous misons sur l'extrême le succès de l'année dernière, où
pour la première fois, ici dans cette université,
premier cycle assistant d'apprentissage ont été adoptées dans les classes.
Tout a commencé avec cette classe l'an dernier.
>> Donc, comme vous le savez, la classe est enseignée conjointement avec l'Université Harvard.
Pour enseigner ce cours nous sommes relying-- nous pouvons
compter sur la grande expertise de David Malan et l'équipe de Harvard.
Ainsi David a été l'enseignement CS50 pour le bien, maintenant 10 ans.
Et chaque année, il a été repousser les limites
et l'amélioration de l'expérience en classe.
Encore une fois, nous ne pouvions pas être plus heureux de poursuivre cette collaboration avec eux.
>> En fait, l'un des la plupart des parties intéressantes,
Je vais dire de courir cette classe maintenant, à la fois à Harvard et à Yale ici,
est le vraiment incroyable fertilisation croisée
des idées, visant à améliorer la expérience d'apprentissage à vous tous.
Donc, à la suite de cette vaste la collaboration entre les deux
université, CS50 est fier de annoncer la nouvelle version de cette année
avec des changements notables.
David va tous nous en parler maintenant.
Donc please-- cet être dit, s'il vous plaît joindre à moi
et bienvenue à donner un salve d'applaudissements
d'accueillir David et Harvard équipe ici à Yale.
>> [APPLAUDISSEMENTS]
>> DAVID MALAN: Je vous remercie.
Merci.
Ceci est CS50, Harvard University de et l'introduction de l'Université Yale
à l'intellectuel entreprises de l'informatique
et l'art de la programmation.
Et ce que cela signifie est que ce cours en fin de compte, est sur la résolution de problèmes.
En effet, beaucoup d'entre vous pourrait sont sortis de l'école secondaire
ou ont passé les deux dernières années se demandant ce que certains de vos amis
a fait l'année dernière ou dans d'autres classes.
Et pourtant, la réalité est, peu importe ce que nous
faire à la fin de la journée dans cette classe, ça va être sur la résolution de problèmes.
>> Et en tant que telle, peut-être prendre rassurer dans le fait
que 73% des élèves prendre cette classe, ici
à Yale, ainsi qu'à Harvard, ont jamais pris une classe CS avant.
Donc, si vous êtes assis ici le public aujourd'hui se demandant
pourquoi vous êtes assis ici dans le public aujourd'hui,
ou peut-être que vous venez de suivi avec quelques amis,
ou peut-être vous avez été un peu curieux de ce que
informatique et programmation, réaliser
que la plupart de vos camarades de classe la gauche et à droite de vous
sont tout à fait dans ce même démographique.
>> Et en effet, si nous regardons les statistiques de dernière année
au sein du corps étudiant de CS50, à la fois ici et à Harvard, 58% des étudiants
se décrire comme moins confortable.
9% est plus confortable.
Et puis 33% se situe quelque part entre les deux.
Et il n'y a pas de définition officielle de ce que ces seaux moyens.
Vous savez que vous êtes en quelque sorte moins à l'aise si vous êtes.
Vous vous sentez un peu mal à l'aise avec peut-être être dans la classe.
Vous n'êtes pas tout à fait sûr si un ordinateur classe de la science est en fin de compte pour vous,
et se rendre compte que vous êtes en très bonne compagnie.
Et en effet, le classement, et l'évaluation,
et le retour, et tout cela Structure de support dans la classe
est finalement très individualisé.
Plus que la plupart tout autre classe par la conception.
Et en effet, ce qui en fin de compte questions dans cette classe est pas
tellement où vous finissez haut par rapport aux autres,
mais où vous, en semaine 11 ou la dernière, et par rapport à vous dans la semaine
0 ici notre première.
Alors qu'est-ce que cela signifie?
Eh bien, cela signifie des personnes 73% étudiants de dernière année qui n'a jamais pris
une classe CS avant, par le début du semestre, ils
ont été barboter dans une langue appelé Scratch, qui nous nous
verra ici aujourd'hui.
Et à la fin de la semestre avait-ils allés
à travers toute cette liste de défis.
A partir d'un langage appelé c.
La mise en œuvre, ce qui est à première vue, aller
être un peu un défi pour certains, mais assez gratifiant une fois que vous
obtenir Super Mario rebondir de haut en bas une pyramide
mis en oeuvre, bien que, avec juste quelque chose appelé l'art ASCII.
La mise en œuvre dernière année-- ce les étudiants l'année dernière alors
a fait après qui a été mise en oeuvre de leur propre chiffrement César et chiffrement vigenere.
Donc, les algorithmes de chiffrement avec laquelle vous pourriez
informations scramble puis unscramble informations pour envoyer des messages secrets.
Le jeu de 15.
Si vous vous souvenez de enfance ou d'une faveur du parti,
ce petit jeu en plastique où vous vous déplacez les numéros haut, bas, gauche et droite
pour essayer de les mettre en ordre, la mise en œuvre effectivement ce jeu
et la résolution de la logique là nécessaire.
Et puis nous avons touché à forensics l'an dernier.
>> Donc, à la mi-semestre, les étudiants qui avaient jamais
utilisé leurs claviers à cet effet avant,
ont été l'écriture de logiciels pour récupérer, pour ainsi dire,
JPEGs ou photographies que nous avions accidentellement
un convertisseur numérique retirés la carte mémoire à partir d'une caméra.
Récupération des messages secrets à l'intérieur d'une image bitmap,
et d'autres tels types des graphiques ainsi.
>> Nous avons ensuite passés à donner toute la classe un dictionnaire.
Juste un fichier vraiment grand texte avec 150.000 mots anglais.
Et tout le monde a été contestée en quelque sorte lire, pour ainsi dire,
ces mots dans la mémoire.
Dans la mémoire de l'ordinateur.
Et puis répondre à des questions de la forme, est-ce un mot?
Est-ce un mot?
Vraiment tout mettre en œuvre un correcteur orthographique.
Et puis contester chaque autre avec un grand board--
un tableau des leaders pour voir qui pourrait utiliser le moins de mémoire,
dans le moins de temps pour effectivement vérifier l'orthographe des documents volumineux.
>> Nous sommes passés à partir de là à la mise en œuvre sa propre serveur web.
Donc, ne pas faire des pages Web dans les langues comme le HTML et CSS, si vous êtes familier.
Mais en réalité, la mise en œuvre le serveur
écoute sur Internet pour les demandes de navigateurs
et ensuite répondre à ces demandes.
Ensuite, la mise en œuvre de notre propre e-commerce comme site, où
les élèves peuvent acheter et vendre des actions.
Dessin en temps réel presque cotations boursières de Yahoo Finance.
Et permettre aux étudiants de voir comment leur portefeuille se développe.
Et puis enfin un mash up de Google Nouvelles et Google
Cartes où les étudiants par terme en termes fin
avait la possibilité de cliquer, et rond, et la recherche sur une carte Google.
Et puis voir tous les articles de presse que
sont proximal à ces domaines particuliers.
Donc, vraiment aller de zéro à 60.
>> Et le long du chemin ayant ce que nous avions l'an dernier appelé, les ajouts de pirates.
Qui soulèvent la barre plus loin pour ceux d'entre vous
qui pourrait très bien avoir une bonne quantité d'expérience étant que 9%
de plus confortable.
Ainsi se rendent compte qu'il ya un plafond très élevé
même dans les défis pour les étudiants
provenant d'un fond différent.
Parce que, à la fin de le jour, nous sommes en fin de compte
concentré tout simplement à ce sujet.
>> Mais qu'est-ce dire, la résolution de problèmes?
Donc, nous allons proposer que nous distillons comme ça.
Donc, la résolution de problèmes est vraiment juste ce genre de photo.
Donc, vous avez entrées à un problème, quelque chose que vous voulez réellement résoudre.
Le but est d'obtenir des sorties, une solution à ce problème.
Et puis au milieu est ce que nous appellerons une boîte noire.
Vous ne savez pas nécessairement ou même soin ce qui est à l'intérieur de cette boîte noire.
Tout ce que vous savez est que lorsque vous nourrissez entrée en elle,
vous obtenez l'espérons sortie ou une solution de celui-ci.
Et alors qu'aujourd'hui nous allons regarder tant au niveau des entrées et sorties,
nous allons à long terme, et sur le cours de l'ensemble du semestre,
se concentrer sur ce qui est à l'intérieur de cette boîte.
>> Et celui-ci se situera ce qu'on appelle les algorithmes.
Des instructions étape par étape pour la résolution effectivement quelques problèmes.
Mais ce qui est un exemple de certains intrants?
Alors peut-être une chose simple au début de chaque année scolaire, quelqu'un
pourrait vouloir prendre les présences.
Donc, nous pourrions faire un, deux, trois, quatre, cinq, six,
et comment pourrais-je garder trace de cette information.
Je pourrais juste aller un, deux, trois, quatre, cinq, six.
Et il suffit d'utiliser sorte de chiffre.
>> Ou je pouvais enregistrer cela un peu plus long terme.
Et comment puis-je représenter tous les humains dans cette pièce?
Eh bien, je pourrais faire quelque chose comme, OK.
Je vois une personne.
D'accord.
Je vois une autre personne, un tierce personne, et ainsi de suite.
Mais personne ne compte les gens comme ça.
Donc, littéralement, la plupart d'entre nous si nous sommes allant même dessiner quoi que ce soit,
vont probablement aller un deux trois quatre,
peut-être obtenir un peu de fantaisie, cinq, six, sept, huit, neuf, dix et ainsi de suite.
>> Et c'est en fait un système appelé unaire.
Uno, comme uno impliquant un, où vous juste avoir une lettre de l'alphabet.
Vous avez juste cette marque de hachage.
Et moi, pour l'efficacité, tout simplement dessiné ces marques de hachage, en fin de compte
lignes droites.
Mais je les aurais dessiné comme les petits chiffres de bâton.
Où représenter une personne, une entrée,
Je viens de dessiner un bâton figure ou une marque de hachage.
Mais ce n'est pas tout ce qui expressive.
>> Si je n'ai que ces hachage marques, laissez bâton chiffres seuls,
comment pourrais-je représenter quelque chose comme le numéro 15?
Ou 15 personnes dans la salle?
Je pourrais avoir à faire quelque chose comme 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15.
Il n'a tout simplement pas à l'échelle très bien.
Comme les entrées deviennent grandes, nous besoin d'un meilleur système que celui-ci.
>> Et il se trouve que la système que les ordinateurs utilisent
est pas si différent de ce que vous et je sais.
En fait, la plupart des gens dans cette salle, même si vous êtes parmi ceux qui sont moins
confortable, ne savent pas nécessairement comment votre Mac ou votre PC fonctionne vraiment,
vous avez probablement au moins entendu, que sous le capot sont de 0 et de 1.
Le soi-disant système binaire.
Donc, en effet, les ordinateurs ont plus de juste des marques de hachage dans leur vocabulaire,
mais pas autant de vocabulaire comme nous les humains.
>> En effet, nous les humains n'utilisent pas binaire.
Bi-dire 2, 0 et 1.
Mais décimal, déca ce qui signifie 10, 0 à 9.
Donc, nous avons beaucoup plus expressif capacités dans notre monde humain normal.
Mais je dirais que ces systèmes, binaire et décimal, et tout
entre et au-delà, sont en fait tout tout à fait familier.
Par exemple, considérons cet exemple ici, 123.
Donc, ce qui est vraiment, bien sûr, un certain nombre nous savons que 123.
Mais tout ce que je dessinais était juste ce motif de symboles, glyphes pour ainsi dire.
Sorte de formes sur la carte à la craie.
>> Mais pourquoi avons-nous immédiatement et intuitivement saisir ce que 123?
Eh bien, si vous étiez comme moi à l'école primaire,
vous avez probablement appris que c'est la colonne 1 s, ceci est la colonne 10s,
ceci est la colonne 100s.
Et pourquoi est-ce utile?
Eh bien, il est simple arithmétique vous maintenant faire pour obtenir à partir d'un motif de symboles
à un certain nombre nous comprenons intuitivement.
Est ce que, 100 fois 1, puis 10 fois 2 et 1 fois 3,
ce qui bien sûr est à seulement 100, et ceci est 20, ce qui est trois.
Et si l'on ajoute ceux together-- ah.
Donc là que réside le genre de raisonnement derrière pourquoi cet ensemble de symboles
signifie quelque chose de réel et numérique.
>> Eh bien, les ordinateurs font exactement la même chose, mais ils ne peuvent compter aussi haut que l'un.
Alors que je suis en mesure de compter aussi haut que trois.
Et en fait, si je continuais, je vais pouvoir aller aussi haut que neuf dans ce système.
Les ordinateurs ont seulement des zéros et ceux de l'alphabet.
>> Alors qu'est-ce que cela signifie?
Eh bien, cela signifie simplement que si un ordinateur veut représenter, dire le nombre 0,
peut-être en utilisant trois trois characters-- lettres de l'alphabet pour ainsi dire,
voilà comment un ordinateur représente 0.
Donc, pas tout à fait effrayant jusqu'à présent.
Il est exactement ce que nous, les humains feraient.
Et en fait, la plupart d'entre nous serait tout simplement ignorer les zéros de toute façon.
>> Un ordinateur, si elle veut mémoriser le numéro 1,
se révèle va le faire.
Et un ordinateur pour stocker le numéro 2 est pas
va faire le système unaire, dont je parlais tout à l'heure.
Il va vraiment faire cela.
Et cela est probablement où le motif commence
pour devenir moins évident pour la plupart des gens.
Voilà 2, cela est 3.
Curieusement, cela est maintenant 4.
Et maintenant, il fait vraiment semblent être peut-être cryptique,
mais pas si l'on considère ce binaire signifie vraiment.
Cela signifie que vous avez deux lettres de votre alphabet.
Donc, deux caractères possibles pour chaque espace réservé.
>> Donc, cela signifie vraiment que nous allons à besoin d'un endroit 1s, ou le lieu 2s,
un lieu 4s puis 8, et 16, 32 et 64.
Et quelle est la différence là-bas?
Comme ceux-ci sont 1, 2, 4, 8, 16, 32, 64.
Et avant que nous avions 110, 100,000, 10,000.
Quelle est la similitude là?
Et quel est le motif?
Ouais.
ÉTUDIANTS: Pouvoirs du 2 au lieu de puissances de 10.
DAVID MALAN: Oui.
Pouvoirs du 2 au lieu de puissances de 10.
Et donc si je voulais garder aller, 8, 16s et ainsi forth--
mais maintenant, si vous avez ce genre d'indice, maintenant le système binaire
est en fait assez simple.
Pourquoi est-ce modèle de 0 de dans le monde des ordinateurs 0?
Eh bien parce que c'est 4 fois 0, 2 temps 0, 1 fois 0 et vous obtenez 0.
>> Pourquoi est-ce le numéro 1?
Même raisonnement, mais maintenant nous un 1 dans la colonne 1.
Pourquoi est-ce 2?
Nous avons un 1 dans la colonne 2s.
Et comment puis-je représente dire le numéro 7 en binaire?
Dites plus fort.
>> ÉTUDIANTS: Trois 1s.
>> DAVID MALAN: Trois 1s.
Donc, 1, 1, 1, parce que nous avons besoin 4 plus 2 plus 1 me donne 7.
D'accord.
Donc, à partir de là comment pouvons-nous représentent 8 avec 3 placeholders?
Ouais.
>> ÉTUDIANTS: 1, 0, 0, 0.
>> DAVID MALAN: Oui 1, 0, 0, 0.
Et pourtant, peut-être, je genre de techniquement besoin
pour ajouter un autre espace réservé à la carte.
Si je veux que je s'adapter bien besoin de faire quelque chose comme ça.
Donc je vraiment besoin d'utiliser maintenant la colonne 8s, et qui est très bien.
Mais ce qui est curieux dans l'informatique est que cela va nous coûter quelque chose.
Vous avez besoin de plus de RAM dans votre ordinateur maintenant.
Vous avez besoin de plus de mémoire parce que vous besoin de quelque chose
physique pour stocker que bit supplémentaire, pour ainsi dire.
chiffres binaires.
Et en effet, tout ce qui est arrivé ici, comme le système décimal,
si nous continuons d'ajouter des numéros et des et, nous passons à 5 à 6 pour 7 à 8
il est comme portant le 1, littéralement.
Et puis tout le reste redescend à zéro.
>> Mais comment pouvons-nous représentons réellement ces choses physiquement dans un ordinateur?
De plus, à la fin de la journée, le seul entrée physique d'entrer dans mon ordinateur
voici ce cordon d'alimentation, de sorte l'électricité ou des électrons de la paroi.
Et alors comment puis-je obtenir de quelque chose physique comme celle réellement
représentant une idée de ce type à la place.
>> Eh bien, que pourrions-nous faire?
Nous pourrions considérer que, tout droit, peut-être si l'électricité circule
Je pourrais le stocker et de tenir à elle.
Et si je suis sur la tenue à un peu d'électricité,
qui va juste représenter arbitrairement 1.
Et si je tire le bouchon et il n'y a rien,
vous savez que ça va juste pour représenter arbitrairement 0.
>> Donc, si quelque chose est là, 1.
Si rien est là, 0.
Ou vous pouvez faire ce un peu plus visuelle.
Voici un 0.
Il n'y a rien en cours intéressant sur sur le dos de mon téléphone.
Mais si je laisse un peu peu d'électricité de circuler,
même si elle est un peu brillante ici, ma lampe de poche a continué.
Je suis donc stocker une charge et ergo, ce téléphone représente maintenant un 1.
Donc 0 1.
>> Donc, avec 1 iPhone à quelle hauteur je peux compter en utilisant ce type d'approche?
Je veux dire à 1.
Il est pas tout à fait convaincante.
Alors, que pourrions-nous faire?
Eh bien, voyons, est une personne sur leur téléphone en ce moment que je pouvais emprunter?
Toute personne qui a un téléphone avec une lampe de poche intégrée dans?
Puis-je emprunter?
Je ne veux pas débloquer.
D'accord.
Je vous remercie.
Permettez-moi d'emprunter ce.
D'accord.
Donc, si je fais défiler maintenant et ici, ce que je représentais maintenant?
Ouais.
Il est donc trois parce que cela est dans le colonne 1 s, ceci est dans la colonne 2 secondes.
Donc, 1 plus 2 est 3.
Et puis, si nous essayons d'obtenir vraiment creative-- oh, je vous remercie.
Très préemptif.
D'accord.
J'ai maintenant trois iPhones.
D'accord.
>> Et maintenant this-- je ne vais pas faire plus loin que cela.
Que vais-je représentais maintenant?
Juste Sevens.
Mais il me fallait physiquement plus de mémoire dans ce cas.
Mais voilà tout ce qu'il est.
Vous pouvez penser à ce qui se passe on-- vous-- remercier l'intérieur de votre téléphone
comme étant simplement un interrupteur qui est étant activé et désactivé.
>> Et si vous avez jamais entendu le mot transistor.
Ou si vous avez déjà entendu parler de la le marketing parlent Intel à l'intérieur,
que ça parle du genre de matériel qui est à l'intérieur de votre ordinateur.
Intel rend les processeurs, les unités centrales de traitement,
qui sont comme les cerveaux à l'intérieur de votre ordinateur.
Et ces CPU et les choses qu'ils connectés
d'avoir beaucoup, beaucoup de commutateurs minuscules.
Des millions, des milliards de commutateurs qui peut être soit allumé ou éteint.
>> Donc, les ordinateurs, heureusement, comme nos Mac et PC,
peut compter moyen supérieur à 7 ou 8 parce qu'ils ont beaucoup plus que trois
ou quatre bits.
Bien plus que l'équivalent de la trois lampes de poche que nous venons d'avoir.
Mais maintenant cela commence à se assez inintéressante rapidement.
Si je veux maintenant être effectivement en mesure de faire quelque chose de plus intéressant,
Je veux être capable de sauter à quelque chose comme ça.
>> Donc ASCII, il est pas vraiment un utile acronyme, mais American Standard Code
pour l'échange d'information.
Cela signifie simplement que, quelques années il y a nous, les humains ont décidé,
Vous savez quoi, nous voulons être en mesure de le faire plus d'ordinateurs que de simples chiffres.
Nous ne voulons pas qu'ils juste être calculateurs coûteux,
nous aimerions être en mesure de faire des choses comme traitement de texte, quoique très simplement.
Plus tard, nous avions email et d'autres médias.
>> Et le monde a décidé quelques années Il y a selon cette ASCII du système,
vous savez quoi?
Dans certains types de programmes en tout temps vous
voir l'équivalent du nombre 65, comme le modèle de bits.
Et nous pourrions faire la mathématiques ici sur la carte.
Le motif de bits qui représentent 65.
Ne pensez pas comme 65 en décimal.
Pensez-y comme arbitraire, mais globalement, de manière cohérente comme la capitale
UNE.
Et puis le monde décidé, vous savez quoi?
Prenons un autre motif de bits.
Et si jamais nous voyons la Numéro 66, disons simplement
Supposons que ce soit le capitale B. Avance rapide H
et moi, si vous voyez 72 ou 73, que devrait être un H et un I, respectivement.
Et aussi longtemps que l'ensemble monde est d'accord sur ce point.
Alors que lorsque vous recevez un e-mail, ou vous obtiendrez un fichier sur une clé USB,
ou quelque chose comme that-- quand vous voyez ce modèle de bits,
vous savez qu'il devrait être présent lettre ou une autre lettre.
>> Mais il est contexte spécifique, à droite.
Un programme d'email pourrait interpréter ces choses comme des caractères,
mais une calculatrice graphique ou calculatrice pourrait représenter ou interpréter
ces choses, bien sûr, que des lettres.
>> Donc, avec cela dit, petite revue rapide.
Ceci est peut-être un trois caractères e-mail qui a été envoyé à moi.
Sous le capot, il est dans 0 et de 1, mais nous ne nous soucions pas.
Nous allons commencer à l'abstrait au-dessus des 0 et des 1 aux lettres.
Et si je vois un motif de 0 et de 1 qui représentent vraiment 72, indice, indice, 73,
puis 33, quel est le message?
>> ÉTUDIANTS: [Inaudible]
DAVID MALAN: Donc, si vous pensez il y a en arrière juste un moment, HI
était le message que je voulais communiquer ici parce que H est de 72,
I est 73, et maintenant 33-- vous ne seriez pas nécessairement savoir à l'avance,
mais il se trouve si vous avez réellement voir plus de la carte et le système
que l'humanité convenu ans il y a, il est juste un point d'exclamation.
Et en effet, il y a un modèle de symboles et des chiffres pour chaque caractère
que vous pourriez avoir sur votre clavier.
>> D'accord.
Résumé d'outre Let.
Si nous ne voulons pas d'avoir juste des choses comme des chiffres et des lettres,
nous voulons réellement mettre en œuvre des graphiques.
Eh bien, si vous avez déjà entendu l'acronyme RGB.
Il est une sorte de date maintenant, mais il est encore un peu là.
RGB est rouge, vert, bleu.
Et il est juste un système de dire, vous savez quoi,
nous allons utiliser trois ensembles de bits.
Un ensemble de 8 bits, un autre ensemble de 8 bits, et une autre série de 8 bits.
Et nous allons utiliser ces bits pour stocker combien nous rouge
voulez sur notre écran, combien vert nous voulons sur notre écran,
et combien bleu nous voulons sur notre écran.
Et cela signifie simplement que si vous avoir un lot-- un grand nombre pour le rouge,
cela signifie me donner beaucoup de rouge.
Si vous avez un grand nombre de vert, donnez-moi beaucoup de vert.
Et si vous avez juste un peu de bleu ou d'un petit nombre comme 33,
me donner un peu de bleu.
Et si vous arrivez à combiner les trois grandeurs, pour ainsi dire,
vous obtenez this-- vous pouvez à peine voir sur le projecteur, mais ce trouble
nuance de jaune ou brun.
>> Mais cela est-à-dire, en utilisant ce modèle de 8 plus 8 plus plus 8--
ce modèle de 24 bits est de savoir comment un ordinateur serait
stocker cette nuance de jaune dans un petit point un pixel sur l'écran.
Donc, nous sommes passés de 0 et de 1 en décimal numéros aux lettres de l'alphabet.
Ou des points plus intéressant, coloré.
>> Eh bien, ce qui bien sûr est alors la prochaine?
Eh bien, ce qui est une image que vous voir sur Facebook ou d'obtenir dans un courriel?
Ou semblable?
Quelle est la définition techniquement d'une image?
Ouais.
Quelle est une image composée de si vous regarder vraiment près votre écran?
Ouais.
Il est juste un tas de pixels.
En fait, si vous prenez votre ordinateur portable peut-être plus tard,
et de regarder de très près à it-- selon
sur la façon dont l'ordinateur portable est cher et comment de haute qualité de l'écran est,
vous pourriez très bien voir tous les petits points sur l'écran.
>> Et ces points ou pixels, qui signifie qu'il ya
24 bits représentant chaque pixel en ce que photo que vous voyez sur Facebook,
ou que vous venez de prendre sur votre iPhone récemment.
Et voilà comment nous obtenons à des choses comme des graphiques.
Eh bien, ce qui est une vidéo?
Une vidéo est tout simplement un ensemble de graphiques voler par l'écran à nouveau
et encore et encore.
Et donc des vidéos vraiment, ne sont que des modèles de bits représentant des grilles, des lignes
et de colonnes de points, voler par l'image de l'écran,
après image, l'image, alias
Films.
Voilà donc pour les entrées et sorties.
>> Tout ce que nous avons maintenant est un hypothèse que, vous
savoir ce que, si nous voulons un ordinateur pour représenter l'information,
nous avons un système pour le faire.
Nous pouvons le faire avec 0s et 1s à la fin de la journée.
Mais nous pouvons abstraite, donc de parler, en plus de cela
de façon à représenter plus choses intéressantes.
Et ici en CS50, et informatique plus généralement,
nous sommes maintenant sur les épaules de toutes les personnes qui
est venu devant nous qui a figuré que dehors.
Et maintenant simplement supposer que les ordinateurs peut représenter les entrées et sorties.
>> Mais maintenant, de laisser effectivement faire quelque chose avec eux.
Donc, un algorithme est juste un ensemble des instructions, étape par étape,
pour résoudre un problème.
Et ce qui pourrait un tel problème est.
Donc, cela est une ancienne école la technologie, un annuaire téléphonique.
Et à l'intérieur d'un livre de téléphone est un tas ensemble de noms et de numéros.
Et ces noms sont généralement triés par ordre alphabétique.
>> Donc, si je voulais trouver quelqu'un dans ce livre de téléphone comme Mike Smith,
ce qui est un humain typique va faire?
Eh bien, vous pouvez simplement ouvrir it up, regardez la première page.
Je ne vois pas Mike Smith.
Tournez à la deuxième page, Je ne vois pas Mike Smith.
Et juste continuer à aller et aller.
Est-ce approche étape par étape correcte?
Ouais.
Il est un peu stupide, droite.
Il est inefficace, à droite.
Parce que ça va prendre une éternité pour se rendre à Mike, mais il est correct.
Parce que si Mike est ici Je vais bien le trouver.
>> Alors, quel est un peu plus personne raisonnable va faire?
Ils pourraient encore ouvrir à l'avant, et peut-être voler dans l'annuaire téléphonique
deux pages à la fois.
Deux, quatre, six, huit.
Je ne peux pas réellement physiquement le faire très bien.
Mais en théorie, cela devrait être deux fois plus vite, deux pages à la fois.
Est-ce l'algorithme correct?
>> ÉTUDIANTS: [Inaudible]
DAVID MALAN: Pas nécessairement.
Bien.
Pourquoi cette mise en garde?
>> ÉTUDIANTS: Parce qu'il pourrait être sur un des pages que vous sauter.
DAVID MALAN: Oui.
Donc, même si je me rapproche de plus en plus.
Que faire s'il est juste accidentellement, par le mauvais chance, pris en sandwich entre les deux pages
que je suis voler au-dessus?
Nous avons donc besoin d'une solution pour cela.
Nous devons réellement puis dire, attendez une minute,
peut-être si nous allons trop loin, peut-être si nous avons atteint la section T,
T venant après Smith, alors nous devrions au moins doubler en arrière au moins une page.
Donc, peut être fixé, mais il y a une question conditionnelle là.
Donc, il est deux fois plus vite, mais vous pourriez doubler en arrière un peu.
Mais personne dans sa chambre, même si vous ne pas vraiment utiliser les livres de téléphone plus,
va commencer au début.
Qu'est ce que tu vas faire à la recherche de Mike Smith?
Tu vas aller à peu près à les S.
Ou si vous n'avez pas vraiment la feuille de triche sur le papier,
vous allez aller au moins à peu près au milieu.
Et certainement pas la couverture du livre.
Vous allez regarder vers le bas.
Et mathématiquement vous êtes probablement aller voir la section M, qui
est à peu près au milieu.
Et puis vous allez réaliser, ce qui est vrai?
Où est Mike?
>> ÉTUDIANTS: [Inaudible]
DAVID MALAN: Oui.
Donc, il est de ce côté.
Et que pouvez-vous faire?
Eh bien, à la fois propre et au figuré pouvez-vous déchirer le problème en deux fois?
Et savez alors que vous pouvez jeter cette moitié du problème de distance.
Et maintenant, nous nous retrouvons avec fondamentalement le même problème, mais il est à moitié aussi grand.
Et maintenant, quelle est la jeu d'instructions?
Quel est l'algorithme pour trouver Mike Smith?
Il est exactement la même chose.
>> Maintenant, ce qui se passe pour être le M l'article et ceci est la partie de Z,
mais le fondamental la formule est toujours la même.
Allez à peu près au milieu, regarder vers le bas, oh, repriser il.
Maintenant, je suis dans la section T, Je suis allé trop loin.
Mais ici aussi pouvez-vous appliquer cette même logique.
la moitié Throw du problème loin et maintenant nous sommes
à gauche avec un problème qui est un quart de la taille.
Et nous pouvons répéter, et nous pouvons répéter, et nous pouvons répéter jusqu'à ce que théoriquement,
il y a juste une page à gauche sur qui Mike est ou non.
>> Alors, quel est si puissant à propos de cette idée?
Je veux dire, après tout, il est assez intuitive.
Personne ne va commencer à la début de l'annuaire téléphonique
et flip 1000 pages pour trouver Mike Smith.
Presque tout le monde dans cette salle va de faire à peu près ce genre d'algorithme
sauf pour la déchirure.
>> Et alors pourquoi avons-nous fait?
Eh bien, pensez à l'efficacité.
Considérez combien mieux cette algorithme était en le décomposant
en ses parties constituantes.
Alors qu'est-ce que je fais d'abord?
Je pris le livre de téléphone.
Et un informaticien, et un programmeur,
plus généralement il se trouve, va commencer à compter tout à 0.
>> Pourquoi?
Eh bien, il est un peu étrange que nous les humains comptons, en général,
à partir d'une.
Parce que ce qui est le plus petit nombre nous pouvons clairement représentons la base
même sur notre vieux maths de l'école primaire?
Eh bien, il était de 0, que ce soit il est en décimal ou binaire.
Et donc vous verrez dans le monde de l'informatique et de la programmation,
spécifiquement, nous commençons tout compter de 0.
>> Je pris le téléphone livre étape 0.
Je vais ouvrir la milieu de l'annuaire téléphonique.
Et c'est en effet un expression de ce que je faisais.
Et puis la deuxième étape était de regarder les noms.
La troisième étape est un peu différent sur le plan conceptuel.
Je me pose une question.
Si Smith est parmi les noms, Je vais prendre une décision.
S'il est parmi les noms, alors je vais appeler Mike.
Et je vais prendre une décision sur la base de cette information.
>> Par contre, si non, si Smith plus tôt dans le livre à la gauche,
Je vais ouvrir au milieu de la moitié gauche du livre.
Et puis voici l'astuce, Je vais revenir à l'étape deux.
Je vais trier des se tenir debout sur mes propres épaules
et il suffit de répéter le travail passé, je l'ai fait.
Mais le travail qui me reste est moins en moins, et moins.
Mais il est toujours d'aller travailler.
Mais si Mike, à la place, est plus tard dans le livre à droite,
Je vais ouvrir au milieu de la moitié droite du livre,
puis revenir à l'étape deux.
>> Mais il y a en fait un quatrième scénario.
Mike soit ici, ou ici, ou ici, ou--
>> ÉTUDIANTS: Pas là.
DAVID MALAN: Pas là.
Et en effet, si nous ne prévoyons pas cette quatrième et dernière scénario
notre programme pourrait être buggé ou viciée d'une certaine façon.
Sinon, quittez dans le cas où on n'a pas trouvé Mike à tous.
Et en effet, si vous avez déjà remarqué votre pendaison de l'ordinateur, ou tout
d'un mot ou d'un autre coup programme se ferme juste de façon inattendue,
et parfois te erreur message est littéralement que.
Ce programme a quitté inopinément.
Il peut être pour n'importe quel nombre de raisons.
Mais il est parfois quelque chose d'aussi simple que cela.
Le programmeur humain qui a écrit que le logiciel
ne se rendent pas compte que, oh, il y a un selon chose qui peut effectivement se produire.
Et si vous n'écrivez du code pour capturer ce quatrième scénario,
il est en effet parfois inattendue ce que l'ordinateur peut réellement faire.
Maintenant, nous allons appeler un quelques-unes de ces choses.
Donc, en jaune ici, je avoir des termes mis en évidence
que, désormais, nous sommes juste va appeler des fonctions.
Fonctions dans le monde de la la programmation sont comme les actions,
déclarations d'actions.
Donc ramasser, ouvert à, regarder à, appeler, ouvert, ouvert, quittez.
C'est une fonction, une procédure, une action, un nombre quelconque de synonymes
fonctionnerait aussi bien.
Maintenant, quelles sont ces choses maintenant en jaune?
Si bien, si bien, si le reste, ce sont ce que
nous allons appeler conditions dans la programmation,
ou branches, décision des points, si vous voulez.
Mais comment savez-vous quelle fourchette sur la route à prendre, pour ainsi dire?
Nous avons besoin de mettre en évidence les termes à droite
là, qui sont ces des questions oui ou non.
Ces fausses vraies questions.
Smith parmi les noms?
Smith plus tôt dans le livre?
Smith plus tard dans le livre?
Ce sont des questions à où il est un oui, ou non,
ou de manière équivalente vrai, ou faux, ou de manière équivalente, un ou zéro réponse.
>> Et pendant ce temps, il y a juste un dernier morceau.
Cela a ici ce genre d'effet?
Que ce soit ou non vous programmez avant, comment voulez-vous
décrire ce que l'étape sept et 10 font?
Qu'est-ce que vous avez dit?
ÉTUDIANTS: Une étape récursive.
DAVID MALAN: Une étape récursive.
Dans l'affirmative, l'essentiel.
Il est techniquement itérative ici si vous êtes familier.
Mais nous reviendrons à cela.
Mais qu'il fait clairement quelque chose.
Encore une fois, il est induisant un cycle, une boucle, à droite.
Vous êtes littéralement aller revenir à une certaine étape précédente.
Et en effet, cela va mettre en œuvre une sorte de cycle.
Mais tu ne vas pas à obtenir coincé dans ce sans cesse, à droite.
Parce que si vous êtes constamment vérifier est Mike ici ou à gauche, ou absent,
finalement, il ne va pas être là.
Et vous pouvez tout simplement arrêter complètement selon cette dernière ligne.
>> Voilà donc pour le vocabulaire.
Et cela était ce que nous appeler généralement le code de pseudocode.
Il est pas une langue réelle.
Il est juste très laconique anglais, mais il communique le point.
Il n'y a pas de structure formelle ici.
Vous utilisez simplement qu'il est quelques-uns mots, mais les mots aussi clairs
que vous pouvez communiquer votre idée.
>> Maintenant, quelle est la qualité de cet algorithme et combien mieux est-il?
Eh bien, nous ne devons pas entrer dans la spécificités des numéros ou quoi que ce soit
comme ça.
Mais nous pouvons regarder le la forme de cette solution.
Donc, si nous tirons simplement un complot xy ici sur l'axe horizontal ici.
Appelons juste la taille du problème.
Et un informaticien serait utilisent généralement n comme variable ici.
Donc n pages, ou n personnes dans la salle, ou tout ce que vous essayez de compter.
>> Puis sur l'axe vertical de la à gauche, ce serait le temps de résoudre.
Alors, combien de secondes le fait prenez-moi pour trouver Mike Smith?
Ou combien d'étapes faut-il?
Combien de tours page ne prend-il?
Voilà donc combien il en coûte moi dans le temps pour résoudre un problème.
Et nous pourrions tirer le premier algorithmes pente, si vous voulez,
comme juste cette ligne droite en rouge.
Et je vais l'appeler n.
>> Pourquoi n?
Pourquoi est-il seulement celui-ci une relation?
Eh bien, si Verizon ou quelle que soit la compagnie de téléphone
ajoute une page de plus à l'annuaire téléphonique de l'année prochaine,
qui pourrait pousser Mike un pas de plus proche de la fin,
selon l'endroit où cette page est.
Et l'effet pourrait juste d'ajouter une seconde de plus.
Ou encore un tour de page.
Un rapport un à un.
>> En revanche, le deuxième algorithme.
Comment beaucoup plus rapide était que intuitivement?
Là où je suis allé deux pages à la fois?
Ouais.
>> ÉTUDIANTS: [Inaudible]
>> DAVID MALAN: Oui.
il est donc va être deux fois plus vite.
Et nous attirons ici que en fonction de l'échelle.
Il est encore une ligne droite, mais inférieure à la ligne rouge.
Parce que, pour un certain nombre de pages, si elle prend
vous cette nombreuses étapes avec le premier algorithme,
ça va vous prendre la moitié que de nombreuses étapes avec la seconde.
Et la ligne jaune le second algorithme décrivant
va tout simplement être en dessous.
>> Mais ce qui est vraiment puissant est de penser à la troisième et dernière,
et incroyablement plus intuitive algorithme, qui a cette forme.
Techniquement, nous appellerions cette courbe logarithmique.
Connectez-base 2 de n dans ce cas.
Mais cela ne veut pas vraiment d'importance.
Ce qui importe est vraiment le fond forme différente qu'il a.
Et vous pouvez considérer à quel point beaucoup plus courte cette ligne vraiment
est dans le long terme.
Il est en constante augmentation.
Il n'aplatit pas parfaitement.
Mais il pousse tellement plus lentement que le problème devient de plus en plus grand.
Et vous pouvez penser de cette way-- si Verizon n'a pas seulement
ajouter une seule page l'année prochaine, mais doubles le nombre de pages dans le livre de téléphone,
le premier algorithme pourrait prendre deux fois plus nombreuses étapes.
Si elle est de 1000 pages cette année, 2000 pages de l'année prochaine,
Mike pourrait être que beaucoup plus loin.
Il est donc 1000 des mesures supplémentaires pour le retrouver.
Le second algorithme peut-être seulement 500 plus
des mesures pour le trouver car encore une fois, Je vole à travers elle deux à la fois.
>> Mais qu'en est-il du troisième algorithme?
Si Verizon double la taille de l'annuaire téléphonique
prochaine année de 1000 à 2000 pages, combien d'autres étapes
est mon troisième algorithme va prendre?
Ouais, il est juste un.
Et voilà l'idée puissante.
Vous pouvez prendre 1000 pages morsure sur ce problème à la fois.
Et maintenant, si vous considérez un scénario idiot,
mais ce genre d'adresse à la puissance de ce type de intuition--
si un livre de téléphone avait, comme, quatre milliards pages, se sent comme un très gros problème.
Et en effet, il pourrait me prendre quatre milliards la page
se tourne pour trouver Mike Smith dans ce cas avec le premier algorithme.
Mais combien d'étapes serait-il prendre dans le troisième algorithme
pour trouver Mike parmi quatre milliard morceaux de papier?
Donc, quatre milliards vous déchirer en deux.
Vous obtenez deux milliards.
Puis un milliard puis 500 millions, 250 millions, 125 million-- mais il
se sent comme cela est va prendre un certain temps.
Je pourrais avoir besoin de 32 doigts de compter jusqu'à ce que haute.
Mais il est en effet que peu que 32 pages larmes.
Vous pouvez aller de quatre milliards à une page de division
le nombre initial de pages en demi 32 fois
jusqu'à ce que vous vous retrouvez avec juste que d'une seule page.
>> Maintenant, bien sûr, je triche ici.
Il est pas que nous sommes juste d'être tri stupide entièrement avec les deux premiers
algorithmes.
Je triche dans un certain sens, ou vraiment je tirer parti d'une hypothèse.
Ce qui était vrai à propos de l'annuaire téléphonique dans sa forme originale qui a permis
moi même utilise ce troisième algorithme?
Ouais?
AUDIENCE: Il a été alphabétisés.
DAVID MALAN: Il a été alphabétisés, non?
Si elle était juste au hasard ordre, cela est un gaspillage
de temps, toute cette conversation.
Je dois regarder chaque page si elle est dans un ordre aléatoire
pour trouver Mike Smith avant peut conclure qu'il n'y est ou non.
Et l'on en coin ont coupé est que je dois
supposé que quelqu'un d'autre dans ce cas a fait le travail pour moi.
Et pour que, finalement, invite la question, eh bien, attendez une minute.
Comment pouvez-vous trier 1000 pages de noms et de numéros?
C'est en fait un autre problème, quelque chose
nous reviendrons à l'avenir.
Mais quand vous pensez à des sites Web comme Facebook et Google pour Gmail
et des choses comme Google propres index de recherche,
lorsque vous avez des millions ou des milliards de morceaux de données étant stockées ces jours-ci,
searching-- et pour ne pas mentionner trier ces problems--
est finalement un défi en soi.
Et en effet, c'est alors juste un de ces défis
que nous allons examiner.
>> Alors maintenant, nous allons prendre un moment et jeter un oeil à CS50
lui-même et vous donner un sentiment de ce qui est en magasin ce semestre.
En effet, si vous ne l'avez pas déjà, ne jetez un oeil à cette URL.
Et comme Patrick fait allusion pour, cette année, nous sommes
faire un investissement significatif tout plus dans le soutien de cours
la structure en termes de AT et les CA, les heures de bureau,
les articles disponibles, et matériaux numériques en ligne, aussi bien.
En effet, en termes de cours de conférence, nous sommes ici aujourd'hui.
Et les attentes de cette année officiellement du cours
sont assister à aujourd'hui, ce cours dernière conférence, et un cours
à peu près au milieu du semestre avec chaque conférence entre
mise à disposition générale sur un vendredi après-midi
en ligne, à la fois pour les étudiants de Yale et les étudiants de Harvard cette année.
En effet, l'un des des changements fondamentaux est
que nous adoptons au Harvard un paradigme très
comme nous l'avons fait ici hier année et maintenant cette année,
de sorte que, de même, nous filmons encore plus des conférences du cours à Cambridge
mais les rendre disponibles plus tôt que nous avons dans le passé
de telle sorte que ceux de vous-- si vous voudrait, par exemple,
obtenir un début de la tête sur les matériaux sur le premier week-end plutôt
que le deuxième week-end, vous aurez l'accès à ces types de matériaux,
consultable, noyable, hyperlinkable aux ressources liées tous les plus tôt.
En ce qui concerne les sujets, pour vous donner un sens de la trajectory-- du cours
et une partie de ce pourrait être le jargon pour maintenant, mais pas pour longtemps, rassurez-vous.
Nous allons commencer aujourd'hui, en fin de compte, avec la recherche à une programmation
langue appelé Scratch.
Nous allons par la suite, la transition la semaine prochaine à ce qu'on appelle C
puis regarder autre bâtiment blocs pour résoudre les problèmes,
choses appelées tableaux et algorithmes, comment nous utilisons la mémoire à notre avantage
et le désavantage, et des choses comme des structures de données,
et ensuite vers l'extrémité de queue de la classe regardant l'apprentissage machine
et en regardant une autre langage appelé Python,
comment fonctionne le web, comment l'Internet plus fonctionne généralement, les protocoles comme HTTP,
langues pour les bases de données comme SQL, JavaScript pour le Web,
et, finalement, attachant tous ceux ensemble.
>> Et en effet, à la fin de la journée, vous
ne sera pas apprendre dans cette classe Scratch ou C ou Python ou SQL ou JavaScript.
Vous apprendrez plus généralement à la place l'informatique et les fondations
de celui-ci, et vous apprendre à programmer
dans un nombre quelconque de ceux-ci langues le long du chemin.
Donc, en effet, l'un des objectifs du cours à la fin
est d'enlever tous les cours de roues de formation par ces dernières semaines
de sorte que, après cela, vous pouvez revenir à votre propre fields--
si ce qui est ou pas de la science informatique
ou de l'ingénierie, dans le naturel sciences, arts, lettres, ou beyond--
et apporter un peu de cette Les idées de cours et ce domaine de
des idées et des pratiques compétences à votre propre domaine
afin de résoudre les problèmes qui y sont.
>> Ce que nous allons faire ici en attendant dans la plupart des jeudis après aujourd'hui
est avec les têtes de cours menant ce que nous appellerons soluces
des ensembles de problèmes du cours.
Ainsi, chaque semaine, lorsque nous ont un problème posé, nous allons
marcher à travers dans un endroit comme ça les défis du cours,
vous offrant quelques conseils et astuces et techniques de conception.
Mais si vous n'êtes pas en mesure de faire ceux en personne,
réaliser ces mêmes les ressources seront intégrées
par l'un des parcours de assistants d'enseignement
dans le problème eux-mêmes ensembles, aussi bien.
>> Le problème fixe cette année, à la différence l'année dernière, en fonction des commentaires,
sera encore publié le vendredi.
Mais plutôt que d'être due vendredi suivant,
vous donnant ainsi seulement sept jours, sera effectivement dû 10 jours plus tard.
Et en effet, cela signifie que ils se chevauchent par un week-end.
Mais nous espérons que cette année surtout cette volonté
permettent aux élèves de mieux accueillir flux et le reflux dans leurs horaires,
que ce soit des universitaires ou extracurriculars ou l'athlétisme
ou de la saison à mi-parcours.
Vous pouvez soit à chargement frontal ou arrière-charge votre semaine se concentrant sur CS50 basée
sur réelle charge de cours de votre propre semaine.
>> Le problème se définit couvrira une gamme de langues,
mais nous allons nous concentrer principalement tôt le C
avant de nous concentrer par la suite, plus niveau, plus les langages web-centric.
Et puis un couple de FAQ ici-- si vous prenez une classe comme CS50
comme une première année?
Donc, absolument.
Et en effet, ce n'est pas nécessairement quelque chose
vous devriez reporter jusqu'à ce que vous avez coupé vos dents sur d'autres types de classes.
Mais plutôt, envisager que, pour de nombreux étudiants,
moi-même inclus dans la journée, c'est un domaine très familier,
surtout si vous n'a jamais fait prendre un CSA AP
ou quelque chose comme ça à l'école secondaire.
Mais se rendre compte que dès le début, que ce soit ce cours
ou un autre cours d'introduction, est maintenant en effet le meilleur temps,
Je pense que, de trouver un nouveau chemin d'accès ou un nouveau intérêt académique, aussi bien.
Et puis prendre avec d'autres courses-- donc l'une des principales différences ici
par rapport à Harvard est que nous ne prendre quatre cours par semestre
à Harvard pour une raison quelconque.
Et vous les gars effectivement tirez hors des 36 cours au total
au cours de vos quatre ans, ce qui signifie généralement quatre ou cinq
des cours.
Et je pense qu'il est tout à fait juste de dire et déclinent CS50, par sa conception, est
probablement pas le type de classe que vous devriez normalement
prendre avec quatre autres des cours pour un total de cinq
parce psets sont par conception assez intensive.
En effet, moi aussi appris ce retour dans la journée.
Je ne dirais pas CS50 et informatique, programmation
comme autant difficile que cela est juste temps.
Ce n'est pas le genre de chose où, après le dîner, vous
peut revenir à votre dortoir salle, asseyez-vous, et commencer
en se concentrant sur le pset penser, tout droit,
Je vais Bang this out ce soir puis déménagement
à mon prochain sujet le lendemain.
Parfois, vous venez de frapper un mur.
Vous avez des bugs dans votre code.
Vous ne savez pas nécessairement comment résoudre un problème.
Et l'une des principales caractéristiques de programmation pour moi-même à ce jour
est que vous venez de type de besoin de prendre un pas en arrière parfois, dormir là-dessus
ou de penser à ce sujet au cours d'un jogging ou une autre activité,
puis y revenir frais.
Et vous avez juste besoin de ces fenêtres de temps.
>> Et en effet, voilà pourquoi nous avons allonger le temps
disponible pour les ensembles de problèmes cette année et aussi, par cette URL
Je mets en place plus tôt à ce qui est nouveau ce semestre,
rognée le problème fixe de telle sorte que ils sont fondamentalement pas moins rigoureuse,
et les plats à emporter sont pas moins, mais il y a beaucoup moins de matière première,
beaucoup moins démarches que vous devez faire à l'avant de chaque jeu de problème,
comme vous le verrez, avant de pouvoir fait plonger dans la viande de celui-ci.
Donc se rendre compte que ceux-ci et d'autres les changements sont à l'horizon
pour mieux accueillir les étudiants, mais finalement pour vous assurer
que les plats à emporter sont en effet aussi grande que possible.
Ainsi, alors que plus de travail qu'il peut-être dans une classe typique,
nous espérons que les rendements des vous et les plats à emporter pour vous
et les compétences et les idées avec laquelle vous quittez
sont d'autant plus convaincante en conséquence.
Et pour vous, ce there-- est l'un des points clés,
que Patrick a fait allusion est l'heure, à La structure de support de cours.
Donc non seulement CS50 possède l'un des les plus grands états-majors de cours sur le campus.
Il a également l'un des plus de premier cycle.
En effet, l'année dernière CS50 était la première classe
d'avoir un personnel enseignant de premier cycle.
Et témoigne de ce succès faire maintenant de nombreux autres cours au sein de Yale CS
disposer que, aussi bien.
Et pour les étudiants, en particulier, seront ces PS et les assistants de cours
appuiera l'ensemble réseau de ressources de soutien,
parmi eux des sections ou récitations, les possibilités hebdomadaires
d'avoir des discussions plus intimes et commentaires de matériel ciblés
pour différentes pistes, pour les étudiants moins à l'aise, plus confortable,
ou quelque part entre les deux.
Ceux-ci suivront la disponibilité de les conférences de plusieurs jours par semaine
les lundis et mardis.
Et puis le bureau heures-- un-à-un des opportunités
de l'aide du CA de cours et AT sera les mercredis et jeudis
et dimanches à plusieurs fois, toutes
seront affichés sur le site Web de la formation, encore plus que l'an dernier, aussi bien.
>> Mais ce qui est la clé de CS50, si pas certes un peu inhabituel,
est la culture du cours qui nous avons essayé de cultiver,
à la fois à Cambridge depuis de nombreuses années et maintenant le plus récemment à New Haven.
Et en fait, venir cette Samedi, si vous ne l'avez pas entendu parler,
est le jour CS50 Puzzle, qui a rien à voir avec la science informatique
mais est entièrement conçu pour envoyer un message que la science informatique est
à propos de la résolution de problèmes.
Et en effet, si vous souhaitez partenaire avec un ou deux ou trois amis
et former une équipe pour CS50 Puzzle Day, jetez un oeil
les annonces qui sont sur le chemin.
Et trois heures de pizza et des puzzles et des prix attendent.
Et en effet, pour la première fois cette année,
elle ne sera pas tenue conjointement avec Harvard.
Il sera ici indépendamment à Yale.
Alors gardez un œil sur les ceux si vous ne l'ont pas.
La plupart tous les vendredis dans le semestre ne nous essayons de faire une grande classe
sentir petit et apporter quelques 50 étudiants déjeuner avec le personnel de la formation,
avec les anciens, les amis de l'industrie à parler
à propos de ce qu'est la vie après une classe comme CS50 et au cours des étés
et après l'obtention du diplôme.
Alors gardez un œil sur les invitations à cela.
Pour la première fois jamais cette année sera nous
tenir le premier CS50 codage concours, la possibilité d'opt-in optionnel
mi-semestre, après tout nous avons eu quelques six ou sept semaines de programmation
en C sous leurs ceintures pour concurrencer, si vous souhaitez donc choisir-- à nouveau
sur teams-- essayant de résoudre autant de défis
que vous pouvez dans la programmation avec de vos amis contre les autres.
>> Et vers la queue du semestre allons-nous charter certains bus,
fait passer un certain temps à Cambridge, si vous
vous joindre à nous, pour la soi-disant CS50 hackathon.
À 19 heures, nous allons commencer.
Autour de 21 heures, nous aurons une pizza.
Autour de 01h00, nous aurons burritos.
Et ceux qui sont encore éveillés sur la bus maison vers 05h00,
nous nous arrêterons pour les crêpes au IHOP sur le chemin home--
une occasion de 12 heures pour immerger vous-même avec ses camarades de classe et le personnel
dans le projet final de la formation, qui est une opportunité
pour aller bien au-delà du Les ensembles de problèmes de cours
et la conception et la mise en œuvre plus quoi que ce soit d'intérêt pour vous,
qui sera finalement présenté ici en Commons.
La première foire jamais CS50 dernière année, une exposition de fin de semestre
ou d'une fête de ce que tout le monde dans la classe avait accompli,
en particulier ceux qui, encore une fois, qui est passé de rien à quelque chose, de zéro à 60,
ayant aucune expérience préalable et présentant, en fin de compte,
quelque chose pour tout le campus et, si en ligne, le monde à voir, aussi bien.
>> Maintenant, ces ici ne sont que quelques-unes des PS et CA qui rend CS50 possible.
Permettez-moi d'inviter toute des membres du personnel
qui sont ici pour monter sur scène, ainsi que les têtes de cours,
d'offrir quelques mots de inspiration, aussi bien.
>> ANDI: Salut, les gars.
vous les gars peuvent me entendre?
Merci de nous rejoindre sur cette belle, jeudi après-midi pluvieux.
Mon nom est Andi.
Je suis un junior à Berkeley.
Et avec Stelios et l'été, nous serons votre enseignement trois têtes
assistants pour cette année à venir.
Donc, je suppose, de spectacle hands-- combien d'entre vous
ont pas l'intention d'être un CS majeur, ni vraiment plonger profondément
dans la science de l'ordinateur comme un important ici?
Génial.
C'est brillant.
>> Donc, je suis en fait une des affaires mondiales et sciences cognitives majeure.
Je me suis littéralement venu Yale avec l'intention
de ne jamais avoir à regarder un nombre toujours à nouveau dans ma vie.
Quand je suis arrivé à Yale, ce fut quelque chose qui n'a jamais été sur mon radar.
Je voulais en apprendre davantage sur la poésie.
Je voulais en apprendre davantage sur les affaires internationales.
Je voulais en apprendre davantage sur dessins à l'aquarelle.
Oui, nous offrons une classe sur les dessins à l'aquarelle.
>> Mais je ne suis vraiment intéressé en quoi que ce soit STEM connexe.
Mais plus je vieillis a obtenu, plus je réalisais
que tous les domaines vraiment dans certains sens emploie la science informatique,
ou sinon de l'informatique, le calcul.
En fait, pour mon mondiale affaires projet de fin,
nous utilisons des analyses de données d'analyser les attaques terroristes
pour Boko Haram au Nigeria.
Et comme vous pouvez le voir, quel que soit de ce grand vous finissez par la poursuite
ou ce que vos intérêts ici à Yale sont, la programmation et les fondations
de toutes les compétences sont super utiles.
Et CS50 est vraiment bien équipé pour sorte de prêter beaucoup de ses ressources
pour vous, quel que soit comment vous sentez-vous
ou comment êtes-vous intéressé dans la poursuite de la classe.
>> Summer va parler un peu peu de ce que vous êtes les gars
va en apprendre davantage sur cette année.
SUMMER: Salut, tout le monde.
Je suis Summer Wu.
Je suis un junior en Morse.
Et je réellement commencé en tant qu'étudiant CS50 moi-même.
Il y a donc trois ans, je suis sur une année sabbatique.
Je ne l'avais jamais pris un CS classe au lycée,
mais je pensais que dans mon temps libre, ce serait cool d'apprendre à coder.
Donc, je l'ai fait une recherche rapide sur Google, cherché ce qui était disponible en ligne,
et a vu cette vidéo avec muppets et DJs et sites sympas.
Je suis comme, je veux apprendre à faire cela.
>> Je pris donc le cours, et je vient de tomber en amour avec elle.
Mais je me souviens avoir été si jaloux de la les enfants qui pourraient assister à la hackathon,
participer à la Journée de Puzzle, assister bureau heures, obtenir de l'aide d'AT en personne.
Et donc je ne l'imaginais que je reçois la chance
être ici impliqué dans Au cours de cette première a
me intéressé par ordinateur la science et la raison pour laquelle
Je suis une science informatique majeure aujourd'hui.
Donc, je vous préviens, cette classe va vous étirer.
Il va vous défier.
Mais il va aussi vous apprendre à faire des choses
que vous jamais imaginé que vous pourriez.
>> STELIOS: Salut, tout le monde.
Mon nom est Stelios.
Je suis un junior à Branford College et un important CS.
Je suis également d'Athènes, Grèce.
Je suis vraiment impatient pour vous rencontrer tous,
bavarder avec vous à la section, à les heures de bureau, au vendredi déjeuners.
Je suis vraiment excité parce nous avons mis tant d'efforts
dans la création d'un support unique, la structure pour vous tous
pour rendre votre expérience avec le cours le meilleur possible.
Et je souhaite que bien que la plupart des vous avez probablement pas pris CS
Bien sûr, avant, j'espère que ce CS50 pour vous est ce qui suscite l'intérêt
de poursuivre l'ordinateur la science dans l'avenir,
comme il l'a fait avec tant beaucoup de gens dans le passé.
Je vous remercie d'être ici, heureux de vous voir.
Jason Hirschhorn.
JASON HIRSCHHORN: Salut, tout le monde.
Mon nom est Jason Hirschhorn.
Je vis dans Silliman.
Et je suis allé à Harvard comme un étudiant de premier cycle et spécialisé en études sociales
et une mineure en sciences informatiques.
Et l'un de mes principaux rôles ici est de soutenir ce merveilleux personnel
comme ils vous soutiennent.
En fait, ce ne sont pas tous.
Il y a 55 étudiants de premier cycle et diplômés ici pour vous tous soutenir.
Et je daresay l'un des meilleurs parties du cours pour vous
tout est d'apprendre à travailler avec eux, apprendre à les connaître,
apprendre à les voir, tant en CS50 et à l'extérieur du CS50 ce semestre
et pour beaucoup de semestres à venir.
Donc, nous espérons que vous prendrez le bien sûr parce que nous espérons que vous
obtenir pour interagir avec le personnel merveilleux que nous avons sur scène.
>> CONFÉRENCIER: Eh bien, laissez-moi finir en disant que ce sera amusant.
DAVID MALAN: Eh bien, grâce à l'ensemble de notre équipe.
Permettez-moi de tamiser les lumières et permettre à un peu plus de notre équipe,
à la fois de Cambridge et New Haven, dire bonjour comme ces gars fichier off.
Et après cela, nous allons passer à le premier de nos engagements de programmation
avec ce langage appelé Scratch.
Ainsi, grâce à l'équipe.
Voyons tamiser les lumières et entendre quelques autres.
>> [APPLAUDISSEMENTS]
>> [LECTURE VIDÉO]
>> -La Mission de CS50 est de vous faire plus à l'aise avec une manière totalement nouvelle
de la pensée, cet état d'esprit de calcul.
-Il Fait de l'informatique intéressante,
est quelque chose que je ne l'ai pas vraiment rendu compte était possible jusqu'à ce que je pris la classe.
-I Était comme, whoa.
Je suis vraiment traduire mes pensées dans un ordinateur en ce moment.
>> -Même Si vous ne disposez pas de fond en informatique ou toute expérience,
c'est en fait la classe pour vous.
>> -Alors Je veux vraiment mes élèves à juste
se passionnent pour la science informatique.
Non seulement la programmation, mais penser comme un informaticien
est vraiment ce que je veux essayer d'enseigner ma première.
>> -CS50 Est difficile et enrichissante.
>> -Une expérience.
>> -Extravaganza.
>> -Il Est nous amener au prochain niveau.
>> [MUSIC PLAYING]
>> -Les TFs sont, je pense, le pierre angulaire de la formation.
>> -Je Suis heureux d'avoir mes élèves j'aide
ont ce aha moment pour réaliser ce qu'ils sont réellement essayer
à faire, pour comprendre comment faire un pset.
>> -CS50 Est certainement un cours difficile.
Mais, contrairement à tout autre bien sûr vraiment à Yale,
il a une si grande, communauté de soutien.
-Tu Ne font absolument pas besoin de savoir quoi que ce soit
sur le codage de pouvoir de suivre le cours.
-C'est Étonnant de voir à quel point les gens viennent en un semestre.
>> -Tu Étaient pas seul assis dans votre chambre d'apprendre à code,
mais il était plus que juste une classe.
Ce fut une expérience.
-La Meilleure façon d'apprendre les concepts et pour les traiter est en enseignant aux autres.
>> -Quelle Est la scission de téléphone?
>> [MUSIC PLAYING]
>> -Et Cela est CS50.
>> [MUSIC PLAYING]
>> -Ce Est CS50.
>> -J'ai un problème?
Déchirer en deux.
>> [MUSIC PLAYING]
>> Jette-le.
>> DAVID MALAN: Très bien.
Donc, nous allons tackle-- dans un petit peu, d'ailleurs, il est
été cette tradition pour une raison pour 10 ans
pour servir le gâteau à la début et la fin du CS50.
Donc, vous attend à la fin de aujourd'hui, en plus de syllabus,
sera un gâteau aussi bien, et Le personnel de cours pour dire bonjour.
la transition Mais maintenant, laissez-le première de nos langues, où
nous passons vraiment juste une semaine et un problème réglé sur ce domaine, Scratch.
Et vous trouverez si vous avez programmée avant, beaucoup
des idées et la possibilités vous sont familières.
Mais vous verrez que il est amusant le long du chemin
de comprendre exactement comment traduire quelques-unes des idées que vous connaissez déjà
à cet environnement particulier vraiment impressionner votre famille
et amis avec votre travail, qui peut aller en ligne, si vous le souhaitez, par la suite.
>> Et si vous avez pas l'expérience antérieure et sont
parmi la majorité des étudiants moins confortables,
se rendre compte que bon nombre des idées que nous juste exploré avec des choses reality--
comme les annuaires téléphoniques et la fréquentation et de traduire de manière forth--
assez bien à un ordinateur, mais pas si vous utilisez,
d'abord, un langage comme celui-ci.
Donc, ceci est un programme écrit dans un langage appelé C.
Et nous allons passer un peu de temps en C, en fin de compte.
Mais les chances sont, cela va regarder un peu cryptique pour vous à première vue.
En fait, il y a beaucoup de bizarre la syntaxe, les parenthèses, les crochets,
accolades, des citations et des points-virgules.
Et en effet, si vous plongez dans la programmation pour la première fois,
regarder et essayer de créer des choses comme ça, honnêtement, vous êtes tellement embourbé
si souvent stupide minuties qui n'a rien
intellectuellement intéressante à ce sujet.
>> Mais imaginez si vous pouviez créer ce même program-- qui,
comme vous pouvez sorte de déduire, probablement gravures "Bonjour, monde» en quelque sorte ou d'autres.
Nous pouvons distiller cette même idée en seulement deux pièces de puzzle, si vous voulez.
En effet, Scratch est intéressant parce qu'il est ce langage graphique.
Vous pouvez glisser et déposer ces pièces de puzzle qui ne interlock
si elle est logique de le faire.
Et dans Scratch, nous verrons bientôt, cela est
comment vous mettre en œuvre cette même programme, avec seulement deux pièces de puzzle
que faire à peu près ce qu'ils disent.
>> Mais nous verrons dans un instant que certains des blocs de construction que nous avons fait allusion
à l'heure et un peu plus sont tout ce qui en fin de compte vont constituer
certains de nos premiers programmes.
Nous allons avoir des choses comme functions-- juste
actions qui font quelque chose, comme dire bonjour, monde.
Nous allons avoir des boucles, des choses qui induisent des cycles
encore et encore, tout comme nous a fait il y a un moment avec la recherche
pour Mike Smith.
Variables, comme en algèbre, si vous avoir x ou y, qui peut stocker un certain nombre.
Eh bien, dans un programme, vous pouvez réellement stocker plus que des chiffres.
Vous pouvez stocker des mots et des phrases et et les graphiques d'autres choses encore.
Les expressions booléennes, juste questions-- oui ou non, vrai ou faux.
Conditions, les décisions de prise sur la base de ces oui / pas de réponse.
>> Et puis les choses plus fantaisistes comme tableau et les discussions et les événements
et un certain nombre d'autres les caractéristiques, mais qui toutes
carte très bien à très blocs sympathiques comme celui-ci.
Cela va être une fonction, un pièce de puzzle pourpre qui dit juste
ce que son nom est-- dans ce cas, par exemple.
Et puis souvent, il y a une boîte blanche que vous
peut taper ou glisser une certaine valeur dans.
Et voilà ce qui est généralement appelé un argument ou un paramètre.
Il est une façon de modifier la comportement par défaut d'un puzzle
morceau ou d'une fonction de sorte qu'il ne quelque chose de personnalisé pour vous comme dire,
bonjour, monde ou bonjour, Andy ou bonjour, Jason ou une autre phrase à la place.
>> Si vous voulez dire que lot-- littéralement forever--
vous pouvez prendre une autre pièce de puzzle appelé à jamais
et juste en sandwich la deux ensemble comme ça.
Et cette boucle, comme l'image suggère, signifie simplement dire bonjour, monde pour toujours,
Encore et encore et encore.
Ou, si vous voulez seulement faire une nombre fini de fois, comme 50 fois,
il va y avoir un autre casse-tête pièce pour that-- répéter 50 fois.
>> En attendant, si vous voulez d'avoir une variable
dans cette langue que nous sommes sur le point de jouer avec,
vous pouvez utiliser un bloc orange comme ça.
Et cette variable I arbitrairement appelé i pour entière.
Et je viens de mettre ce égal à 0.
Et donc peut-être i, dans ce case-- ce variable--
représente le score de quelqu'un dans un jeu.
Vous commencez à zéro, et chaque fois que vous faire un objectif ou quelque chose comme ça,
vous obtenez un point supplémentaire.
>> Vous pouvez poser des questions à Scratch.
Si nous glisser et déposer casse-tête pièces dans un moment comme celui-ci,
vous pouvez poser des questions comme, ainsi, est i moins de 50?
Peut-être que vous avez besoin de 50 points pour gagner.
Et donc ce serait la question que vous souhaitez poser.
Ou, plus généralement, vous pourrait dire est x moins y,
où il y a deux variables impliquées?
Maintenant, celui-ci est beaucoup plus grande à première vue,
mais vraiment pas du tout plus complexe.
>> Ceci est juste une combinaison des conditions et de variables
et des expressions booléennes pour demander trois questions-- est x moins de y?
Si oui, dites-le.
Par exemple, x est inférieur à y.
Sinon, si x est supérieur à y, sinon x doit être égal à y.
Et alors qu'avec Mike Smith, il y avait quatre scénarios, ici
dans le monde des nombres, x est soit inférieur, supérieur ou égal.
Tout ce que nous avons sont trois fourchettes dans la route.
Et puis il y a colombophile pièces de puzzle comme celui-ci
pour des choses comme des tableaux, où nous sommes va être en mesure de stocker des informations.
Nous allons voir des blocs qui permettent nous mettons en œuvre plusieurs threads,
une autre caractéristique que nous allons utiliser, et puis aussi quelque chose appelé les événements.
Mais avant d'en arriver là le point et de créer même,
en fin de compte, notre propre coutume pièces de puzzle, nous allons
effectivement ouvrir le programme lui-même.
>> Donc, cela est Scratch.
Il est disponible à scratch.mit.edu.
Et vous êtes invités à jouer maintenant ou plus tard, aussi bien.
Cela arrive à être la version hors ligne.
Pour les personnes qui ne le font pas nécessairement grand internet,
vous pouvez télécharger le même logiciel, aussi bien.
Et il n'y a vraiment que trois les composants à ce logiciel.
Dans le coin supérieur gauche de l'écran est le genre de scène
que Scratch, qui, par défaut ressemble à un chat, vit à l'intérieur.
Il peut se déplacer de haut en bas, à gauche, et à droite et faire un certain nombre d'autres choses,
et peut regarder un certain nombre de façons sur la base sur les costumes que vous attribuez à lui.
Mais ceci est ce que nous appellerons une sprite, une sorte de caractère.
Et vous pouvez avoir plusieurs caractères, que nous allons bientôt voir.
>> Au milieu sont maintenant tous ces casse-tête pièces et ces catégories ou palettes
celui-ci.
Donc maintenant, je clique sur la motion.
Et donc je vois tous les pièces de puzzle ou blocs liés mouvement,
de sorte que les fonctions qui ont à voir avec la hausse,
vers le bas, la gauche ou la droite ou une autre opération.
Mais si je clique sur Looks, vous pourrait voir des choses comme le bloc de dire
que nous avons vu il y a quelques instants.
Et si je clique sur le contrôle, vous verrez des choses comme la répétition et pour toujours
et si bloc nous avons vu il y a un instant.
>> Et vous trouverez que nous allons juste gratter
la surface d'une partie de la puzzle de morceaux ensemble,
mais il est tout assez intuitive et pointer et cliquer.
En effet, Scratch a été conçu pour les plus jeunes
pour les aider à donner une sortie pour la pensée créative.
Et pourtant à merveille, il est un merveilleux tremplin
exactement les idées que nous allons explorer en C et Python et JavaScript,
aussi bien.
>> Sur le côté droit, enfin, ici est-ce, que l'on appelle la zone de scripts.
Et cela est juste l'ardoise vierge avec que vous commencez à écrire un programme.
Et je vais exactement cela.
Maintenant, je sais où sont les choses parce que je l'ai fait plusieurs fois.
Mais je sais que, sous la catégorie des événements,
il y a ce bloc ici-- lorsque le drapeau vert cliqué.
Et remarquez si je zoom arrière et retour dans plus ici sur la scène,
Scratch vie dans ce petit monde rectangulaire,
au sommet de laquelle est un vert drapeau et un panneau d'arrêt rouge.
Alors, allez et arrêter, respectivement.
>> Et qu'est-ce que je veux faire lorsque ce drapeau vert est cliqué?
Eh bien, laissez-moi aller à cette Looks catégorie.
Et laissez-moi aller de l'avant et faire glisser et déposer cela.
Et remarquez dès qu'il obtient à proximité, ils sont en quelque sorte magnétique.
Donc, si je laisse maintenant aller, il enclenche ensemble agréable et propre.
Et je vais aller de l'avant et dire quelque chose comme bonjour, monde
pendant deux secondes.
Permettez-moi de faire un zoom arrière et cliquez maintenant drapeau vert, et dire bonjour, monde.
D'accord.
Donc, c'est tout beau et bon.
Pas tout ce que passionnant.
Faisons un peu plus mignon.
Et je sais que, dans avance, Scratch arrive
à venir avec quelques choses mignonnes comme ça.
Donc jouer meow son jusqu'à ce que fait.
Donc, nous allons le faire.
>> [MIAOU]
>> Aw, qui est adorable.
Et si je clique dessus again--
>> [MIAOU]
>> Et encore.
>> [MIAOU]
>> Mais je continue à avoir à réanimer Scratch.
Mais je peux faire mieux que cela.
Pourquoi ne pas tout simplement glisser trois d'entre eux.
Et maintenant il est trois fois plus adorable.
>> [Miauler]
>> OK, en fait, il est un peu effrayant.
Nous avons donc besoin de quelque chose entre les deux là.
Si je vais au contrôle, il ressemble il y a en fait un bloc d'attente.
Et remarquez si je planer sur there-- et permettez-moi de cela un peu plus grand.
Si je plane, ça va à enclencher en place.
Donc, attendre une seconde, attendez une seconde.
Frappons nouveau drapeau vert.
>> [Miauler]
>> OK, un peu plus naturel, mais pas très efficace.
Donc, cela est correct si mon programme de objectif a été meow trois fois.
Mais il est pas très bien conçu.
Je sorte de coupé quelques coins.
Je me suis un peu paresseux.
Que se sent like-- ce que je crois d'avoir fait mal, diriez-vous?
Ouais?
Oui, dans le milieu.
AUDIENCE: Utilisé plus de mémoire que vous avez besoin de
parce que vous utilisez tant ligne différente.
DAVID MALAN: Ouais, donc plus de lignes.
Et il ne serait pas nécessairement la mémoire, mais il pourrait être considéré comme de cette façon.
Mais il est definitely-- il y a redondance.
Et je me suis littéralement sorte de traînée et a laissé tomber les mêmes choses.
Et si vous genre de extrapolate-- si il est pas évident ici-- bien, comment
Je meow 30 fois?
Je voudrais faire glisser et déposer, comme, 30 autres paires de pièces de puzzle.
Et sûrement, il y a une meilleure façon.
Et nous avons vu une meilleure façon.
Que intuitivement serait être la meilleure façon?
Oui, il suffit d'utiliser une boucle.
Pas de copier-coller.
Et en effet, à tout moment cette semestre si vous commencez
vous retrouver glisser-déposer, ou vraiment copier-coller,
dangereuse habitude d'entrer dans parce cela est tout simplement pas très maintenable.
Par exemple, si je veux changer le son à autre chose,
Je dois changer maintenant en trois endroits au lieu d'un seul.
Car en effet, si je briser ce away-- je suis
juste aller à découpler comme ça.
Laissez-moi prendre un bloc de répétition, et puis cliquez sur trois, tapez trois,
jeter certains de ces loin de tout lâcher.
Et puis le remarquer ne ressemble pas à elle correspond,
mais magnétiquement, ça va pour casser non seulement en place
mais se développent pour épouser la forme.
Donc, ce qui est bon.
Et maintenant, si je clique sur le jeu.
>> [Miauler]
Très agréable.
D'accord.
Et maintenant, il est très facile de changer, aussi, parce que je peux juste
changer un numéro dans un seul endroit.
Mais cela, aussi, ne sont pas tout ce qui intéressant.
Ayons effectivement Scratch pas miauler, mais déplacer.
Laisse-moi aller à la motion et de passer 10 étapes l'intérieur de-- whoops, permettez-moi de résoudre ce problème.
Laissez-moi bouger 10 steps-- en fait, nous allons ne pas répéter.
Laissez-moi prendre un bloc de contrôle, et procédez comme suit pour toujours.
Toujours, déplacer 10 étapes.
Et cliquez sur Lecture.
>> D'ACCORD.
Donc, heureusement, il arrête.
Sinon, les enfants obtiendraient très contrarié quand ils perdent leur sorte de chat.
Mais au moins je peux faire glisser le retour à l'écran.
Mais ce n'est pas tout ce qui grande d'un jeu ou d'animation.
Ce serait bien si peut-être il rebondit sur le bord.
Alors que faisons-nous?
Quelle construction avons-nous besoin d'avoir Scratch décide de rebondir, pensez-vous,
même si vous avez jamais vu Scratch avant?
Oui, dans le dos.
AUDIENCE: Vous avez besoin d'un si le bloc ou si-alors.
DAVID MALAN: Ouais, donc certains type de bloc ou si if-then.
Donc en fait, nous avons un de ces ici.
Alors si-- alors laissez-moi obtenir débarrasser du mouvement.
Permettez-moi un zoom avant donc il est plus grand.
Alors, comment à ce sujet.
Toujours, si Sensing-- nous avons pas vu cela avant.
Je besoin d'une expression booléenne.
Et il se trouve si toucher quoi?
Si de toucher le bord, qu'est-ce que je veux faire?
Eh bien, si je reviens à la motion, se révèle, oh, je peux tourner autour.
Permettez-moi de glisser cette ici.
Pourquoi dois-je pas aller de l'avant et tourner autour de 180 degrés?
>> Et maintenant, permettez-moi de passer à la fin.
Je pourrais mettre le mouvement à le début ou la fin.
Mais logiquement, chaque fois que je bouge, je voulez vérifier, que je touchais le bord?
Suis-je touchais le bord?
Alors que, logiquement, je me retourne si oui.
Donc, nous allons frapper le jeu.
>> D'ACCORD.
Donc, il est un peu buggé, pour ainsi dire.
Et un bug est juste une erreur dans un programme informatique.
Mais au moins ça marche.
Et en fait, je peux aller ici.
Et permettez-moi de ce pas 10 marches à la temps, mais tout cela est l'animation est.
Tout cela est un dessin animé ou même un film est.
Permettez-moi de passer 20 étapes à la fois.
Donc, 20 fois plus de choses se passent une fois, ou deux fois plus nombreux, dans ce cas.
Et il se déplace plus vite.
Permettez-moi de changer à 30.
100.
1000.
Et ça va très vite.
Et ce est-- ouais, OK.
>> Alors maintenant, nous sommes en train de jouer avec elle.
OK, donc buggy.
Mais nous pouvons le faire glisser hors de la voie ici.
Mais nous pouvons faire plus de plaisir avec cela aussi.
Que diriez-vous this-- il est à l'envers.
Mais il se trouve Scratch-- et il est en réalité,
Je dois décliner, pas académique la valeur à ce que je vais faire.
Mais si j'ouvre le micro, nous allons l'arrêter et faire quelque chose comme ça.
Aie!
>> [RIRE]
>> C'était adorable.
Je vous remercie.
Maintenant, voici ce que ma voix ressemble quand je crie ouch.
Je ne pense pas que nous avons pris votre rire.
C'est bon.
Permettez-moi de l'enregistrer comme "ouch."
Sauvons ce que "ouch".
Et maintenant, nous allons revenir à des scripts.
Et maintenant, je need-- nous allons voir, Sound.
Oh, jouer ouch son.
Donc, si je touche le bord, laissez-moi première pièce ouch, puis demi-tour.
Et maintenant, nous allons le mettre dans le milieu.
>> [DISANT "OUCH"]
>> Deux fois plus rapide.
>> D'ACCORD.
Mais il est littéralement faire ce que je veux dire.
Donc, il est en fait correcte, il est juste un peu ennuyeux rapidement.
Donc, nous allons ajouter quelque chose plus intéressant à cet égard.
Permettez-moi d'ouvrir effectivement en place celui que je fis à l'avance,
justement appelé Pet la Cat, qui fait cela.
Voici le script ici.
Qu'est-ce que cela va faire en termes anglais?
Qu'est-ce conçu pour faire?
Ouais, allons some-- oui?
>> AUDIENCE: Lorsque vous caresser le chat, il miaule.
DAVID MALAN: Ouais, donc quand vous caresser le chat, il va à miauler.
Donc, en d'autres termes, il y a maintenant une boucle pour toujours encore, combiné
avec une condition, combinée avec une expression booléenne,
combiné avec un couple des fonctions, l'effet
qui, une fois que je joue ce programme, est rien
qui se passe jusqu'à ce que je déplace le curseur plus en plus proche et plus proche et--
>> [MIAOU]
Ensuite, il est comme caresser le chat.
[MIAOU]
Seulement une fois que vous réellement déplacer le curseur sur lui.
Maintenant, je aussi fouetté ne pet pas le chat, qui fait cela à la place.
>> [Miauler]
>> Donc, il est juste miaule constamment.
>> [Miauler]
>> Mais si je suis trop close--
>> [Miauler]
>> [RUGIR]
>> Alors, comment ça marche?
Maintenant, je viens d'un fourche à deux voies de la route.
Si toucher pointeur de la souris, puis jouer le son de lion.
Sinon il suffit de jouer le son de meow, puis attendre trois secondes pour
qu'il est une sorte de faire très tranquillement.
D'accord.
Voilà combinant d'autres idées encore.
Jetons un coup d'oeil à cet exemple Je fouetté appelés threads.
Et celui-ci est fondamentalement différent en ce qu'il tire parti
une caractéristique de nombreux langage de programmation appelé
threads, la capacité d'un programme à littéralement faire deux choses en même temps.
En effet, ces jours-ci si vous utilisez Google Docs ou Microsoft Word,
et votre document est constamment être épelez-vérifié même que vous bien-- ou vous
appuyez sur Commande + P ou Ctrl-P et quelque chose d'impression,
il est l'impression pendant que vous continuez à taper.
Programmes aujourd'hui peut en effet faire multiple choses à la fois, comme dans Scratch
ici.
>> Donc ici, j'ai deux sprites maintenant, un oiseau et un chat.
Et si je clique sur chacun des les caractères un à la fois,
Je vois en ce moment l'oiseau de scripts en haut à droite.
Maintenant, je vois le chat de.
Vue aérienne, chat de.
Donc, chacun d'entre eux ont leur propre script.
Mais remarquez, ce morceau de puzzle ils ont tous deux ne commencer?
Lorsque le drapeau vert cliqué.
Et oiseau, quand le drapeau vert cliqué.
Alors, quand je clique sur le drapeau vert, ces deux scripts ou des programmes
vont fonctionner en parallèle.
Et vous remarquerez que l'oiseau est juste stupidement rebondit sur le bord.
Le chat a clairement été programmée avec un avantage stratégique.
Et--
>> [RUGIR]
D'accord.
Donc, le chat a attrapé l'oiseau dans ce cas.
Pourquoi donc?
Eh bien, premier avis que nous venons l'oiseau juste aller stupidement
à cet emplacement initial, puis pour toujours,
sinon toucher le chat, il suffit de déplacer.
Et si vous êtes sur le bord, rebondir.
Et il suffit de déplacer.
Et si vous êtes sur le bord, rebondir.
Mais le chat, quant à lui, a une certaine logique supplémentaire
qui dit this-- premier, juste pour que ce soit pas complètement biaisé
contre l'oiseau, remarque que j'ai utilisé un morceau de puzzle vert il
qui prend effectivement un nombre aléatoire.
Une caractéristique de plusieurs langues est de donner vous nombres aléatoires ou pseudo-aléatoires.
Donc dans ce cas, le chat d'abord choisit un nombre aléatoire entre, comme,
90 degrés et 180 degrés, essentiellement, de sorte
qu'il ya un peu de variance.
Et puis toujours, si touchante l'oiseau, jouer le son de lion.
Sinon, il suffit de pointer vers l'oiseau.
Pointez vers l'oiseau.
Point vers l'oiseau, qui est un pièce de puzzle à lui-même dans ce cas.
Eh bien, nous pouvons faire autre chose ici.
Permettez-moi d'ouvrir le programme des événements ici.
Et ici, nous avons encore deux sprites, qui ressemblent à ces deux marionnettes ici.
Et ce qui est intéressant ici est la suivante.
Le gars orange a cette ensemble de pièces de puzzle ici.
Toujours faire le following-- si la barre d'espace est enfoncée,
puis dire, Marco, et puis diffuser un événement.
Et pendant ce temps, le gars bleu a ici this-- lorsque vous recevez l'événement,
dire Polo.
Donc, il se trouve dans Scratch et dans d'autres langues,
il existe des moyens pour deux programmes ou deux scripts, dans ce cas,
à intercommunication de telle sorte que quand je a frappé la barre d'espace, il dit Marco.
Et l'autre entend que, pour ainsi parler, et dit Polo en réponse.
Ainsi, vous pouvez écrire des programmes qui en fait interagir de cette manière.
Et si je fais cela une place, Je peux même ajouter des variables,
juste en utilisant un sprite dans ce cas.
Celui-ci est particulièrement gênant.
>> [SEAL ÉCORCEMENT]
>> Maintenant, remarquez sur la droite nous avons obtenu une certaine logique supplémentaire ici.
Comment puis-je arrêter ce sceau d'aboyer?
>> [SEAL ÉCORCEMENT]
>> Il ressemble à la main droite côté est ce qui est la lecture du son.
Mais il est seulement jouer un retentira si ce qui est vrai?
Si orange variable-- block-- coupé est zéro.
Comment puis-je changer en sourdine à 1, ce qui signifie vrai, faire de cette sourdine?
Apparemment, l'autre scénario, je peux appuyez sur la barre d'espace, et maintenant il arrête.
Donc, nous pouvons avoir cette intercommunication à travers des scripts, ainsi,
par simple partage une variable à travers les deux comme ça.
Maintenant, ce n'est pas tout ce qui intéressant.
Allons de l'avant et faire cela et de combiner beaucoup de ces idées avec ce programme
ici.
Avant de faire cela, cependant, que diriez-vous d'un bénévole?
Permettez-moi de prendre la pression sur de moi parce que je ne suis pas réellement
jouer à ce jeu.
Ayons quelqu'un que nous ont pas vu avant.
Vous devez être à l'aise à venir sur scène ici, à la caméra.
OK, allez vers le haut.
Très courageux.
Quel est ton nom?
>> IDRIS: Idris.
DAVID MALAN: Pardon?
IDRIS: Idris.
DAVID MALAN: Idris, agréable de vous rencontrer.
Monte.
Et maintenant, sur votre propre portable téléphone, jouez-vous Pokemon GO?
>> IDRIS: Non
DAVID MALAN: Vraiment?
IDRIS: Ouais.
DAVID MALAN: OK.
D'accord.
Enchanté.
Venez ici.
Je ne sais pas non plus.
Donc, nous allons comprendre ensemble comment jouer ce qui en fait quelqu'un
est allé et mis en œuvre dans Scratch en changeant le chat à l'essentiel
différents personnages tous ensemble.
Et si je FullScreen cela ici, nous allons
de voir le jeu suivant ensemble.
Toujours charger encore le chargement.
Allons.
Permettez-moi de faire cela.
Allons.
Ce jeu est si grand qu'il est écrasé.
Etre prêt.
Essayez cette fois de plus.
Allons.
D'accord.
>> Nous y voilà.
D'ACCORD.
Drapeau vert.
Alors allons-y.
>> [MUSIC PLAYING]
>> Choisissez le niveau intermédiaire ici.
Cliquez sur le gars bleu là.
D'accord.
Et vous pouvez utiliser la flèche keys-- haut, bas, gauche, droite.
Maintenant, considérons que nous this-- puis aller après le caractère là.
Oui.
Et maintenant le clic avec la souris.
Oh yeah.
Déplacer.
Où est la flèche?
Voici.
Alors cliquez là-bas.
Ouais.
D'accord.
Alors maintenant, je suis dit que vous avez une boule de Poke, que si cliquez dessus, il le fera.
Très bien.
Dans la pratique d'aujourd'hui, je a trouvé cette version du jeu de
en fait pas très dur.
Donc, si vous voulez aller à nouveau ici, marcher jusqu'à cette boule de Poke.
Et puis aller prendre un droit.
Essayez de cliquer dessus.
Oh, en fait, c'est la boutique, apparemment.
OK si près que.
Ne jamais fait ça avant.
Peut-être aller jusqu'à cette chose ici.
Oh, là vous allez.
Attendez, il y a un là-bas.
Oh, il y a un autre.
D'ACCORD.
Vers le bas.
Ouais, cliquez sur.
>> OK, ce qui est très mignon.
OK, très bien fait.
Ce jeu est pas très difficile.
D'ACCORD.
Félicitations à vous.
Ici, nous avons un CS50 balle anti-stress pour vous.
Mais considérez pour un instant ce que quelques-uns des plats à emporter sont là.
Plus facile que le vrai jeu, apparemment.
Mais tout ce que nous avons aller ici est un personnage
qui a probablement une sorte de la boucle associée.
Il est pas un chat.
Il est ce personnage à la place.
Et cette boucle est juste en permanence dire, si haut de la flèche pressée,
si la flèche vers le bas enfoncé, si flèche gauche pressée ou à droite
flèche pressée, déplacer vers le haut ou vers le bas ou vers la gauche ou la droite.
Ou s'il y a une autre pièce du puzzle, il qui dit en touchant un autre sprite,
en touchant l'un des personnages à la balle Poke, si touchante,
puis le faire.
>> Donc, toutes les idées que nous avons été en utilisant jusqu'ici vraiment
peut simplement être appliquée dans ce cas particulier contexte pour jouer à ce jeu, aussi bien.
Laissez-moi aller de l'avant et tirer jusqu'à un autre ici, en fait.
Laissez-moi aller de l'avant et tirer jusqu'à, disons, cela.
Ceci est quelque chose que nous remixé.
Fabriqué par un de nos étudiants à Cambridge,
et puis je suis allé à travers et changé à peu près tous les cas de Harvard
à Yale cette fois.
Quelqu'un voudrait-il rivaliser avec les lierres
ici dans une autre accumulation de toutes ces idées?
Allez vers le bas, oui.
Quel est ton nom?
>> DINA: Dina.
>> DAVID MALAN: Adina?
>> DINA: Dina.
>> DAVID MALAN: Dina, allez vers le bas.
Tout droit, Dina.
Donc, ce jeu devient plus difficile et plus difficile, parce que dans ce jeu,
il y a des variables utilisées aussi bien qui sont constamment garder la trace
de quel niveau vous êtes dans le jeu.
Enchanté de vous rencontrer.
Venez ici.
Et donc le but ici est de trier de faire votre chemin à travers un labyrinthe
que cet étudiant en oeuvre.
>> Et juste pour le décor, chaque de ces images sur l'écran
est son propre sprite, son propre caractère.
Donc, ce sont des chats par défaut, mais l'étudiant les a changés
aux différents logos lierres ici.
Et puis, vous verrez que tout en utilisant des conditions et des boucles
et les fonctions et plus, vous obtenez ceci.
>> [MUSIC PLAYING]
[MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Ouais ok.
Oui, continuer.
est très facile de premier niveau.
Vous avez juste à aller là-bas.
Mais encore une fois, pensez, ceci est juste un boucle d'écoute pour la flèche keys--
haut bas Gauche Droite.
Et maintenant, un bloc de détection.
Très agréable.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Très agréable.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Très agréable.
Assez facile, Crimson.
D'accord.
Levels-- uh-oh.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Et encore, dans ces trois crêtes de Harvard,
vous avez juste la logique dire si sur le bord, le rebond.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> OK, ce que vous faites est plus intéressant que pourquoi.
Très agréable.
Uh-oh.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
Je pense que vous devez vous sacrifier.
[MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
Rapide!
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
Agréable.
C'est bon.
Tu l'auras.
Oui oui!
Très agréable.
>> [APPLAUDISSEMENT]
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Agréable!
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
Je l'ai.
Allons!
Deuxième au dernier niveau.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> D'accord.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
Oui.
Bonne utilisation de variables ici.
[MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
Oui.
[MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
Agréable.
[MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
C'est bon.
Nous sommes arrivés à arriver à la fin.
Là.
Oh!
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Pourrait fonctionner en retard aujourd'hui, mais ça va être la peine.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Tu peux le faire!
Ouais!
>> [APPLAUDISSEMENT]
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Celui-ci est vraiment difficile.
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> Nous allons vous donner deux autres vies.
Peux-tu le faire?
>> [MUSIQUE - MC HAMMER, "U NE PEUT PAS TOUCHER CE"]
>> D'accord.
Que diriez-vous d'un grand rond d'applaudissements quand même.
Vous avez à la seconde au dernier niveau.
Je vous remercie.
>> [APPLAUDISSEMENTS]
>> Donc, ceci est seulement pour dire combien vous peut faire avec ce genre de choses.
Et se rendre compte, aussi, que lorsque pièces du puzzle ne pas réalisée:
et en effet, cela va être un des pouvoirs avec le premier problème
ensembles et beyond-- est de effectivement créer votre propre.
Et ceci est juste un extrait de l'un des exemples
vous serez en mesure de jouer en ligne, où
si vous n'avez pas intégré dans Scratch quelque chose comme un morceau de puzzle toux,
vous pouvez réellement faire vous-même.
>> Et tout cela et plus vous attend.
Et juste pour peindre une finale image de ce qui est en effet
avance en magasin pour la classe pour vous, sur la base de quelques photos de ses camarades de classe
passé, permettez-moi de tamiser les lumières une dernière fois et vous montrer CS50.
>> [MUSIC PLAYING]
>> D'accord.
Voilà pour CS50.
Gâteau est maintenant servi.
>> [MUSIC PLAYING]