[RUIDO DE FONDO] ¿Funciona? PATRICK REBESCHINI: Nos puede empezar a trabajar. DE ACUERDO. Estupendo. Empecemos. Por lo tanto, es mi mayor placer darles la bienvenida aquí hoy para la primera conferencia de, bueno, Introducción de Informática y Programación. También conocido como CS50 o bien, la CPSC 100, oficialmente aquí en Yale. Así que no podíamos estar más emocionados darles la bienvenida aquí. Mi nombre es Patrick Rebeschini. Soy el instructor principal para la clase. Estoy aquí en representación de un grupo de alrededor de 60 miembros del personal que trabajará con usted durante el semestre. Este número es casi 60 de nosotros. Sin embargo, a lo largo de la extraordinaria nivel de los compromisos que ponemos en este clase, hace que la clase CS50 en la Universidad de Yale que ofrece el mayor nivel de apoyo A todos ustedes. Y no podríamos estar más orgulloso de ofreciendo esta clase aquí de nuevo. De hecho, tan pronto experimentará, CS50 es mucho más que una clase. Es una comunidad. Y va a ser parte antes de esta comunidad. Este es el segundo año que Yale está ofreciendo esta clase. Estamos construyendo en el extremo el éxito del año pasado, donde por primera vez, aquí en esta universidad, asistente de aprendizaje de grado fueron adoptados en las aulas. Todo comenzó con esta clase el año pasado. Así como se sabe, la clase se enseña en conjunto con la Universidad de Harvard. Para impartir este curso estamos relying-- podemos contar con la gran experiencia de David Malan y el equipo de la Universidad de Harvard. Así que David ha sido la enseñanza CS50 para así, ahora de 10 años. Y todos los años que ha sido empujando los límites y la mejora de la experiencia del aula. Una vez más, no podríamos estar más felices de continuar con esta colaboración con ellos. De hecho, una de las la mayoría de las partes interesantes, Voy a decir de ejecutar esta clase ahora, tanto en Harvard y aquí en Yale, es la realmente increíble fertilización cruzada de ideas, destinado a mejorar la experiencia para todo lo que aprender. Así, como resultado de esta extensa la colaboración entre los dos universidad, CS50 se enorgullece de anunciar la nueva versión de este año con cambios notables. David será toda decirnos acerca de ellos ahora. Así que este ser favor-- Dicho esto, por favor acompáñenme y bienvenidos a dar una gran aplauso dar la bienvenida a David y equipo de Harvard aquí en Yale. [APLAUSOS] DAVID MALAN: Gracias. Gracias. Esta es CS50, de la Universidad de Harvard y la introducción de la Universidad de Yale a lo intelectual empresas de ciencias de la computación y la técnica de la programación. Y lo que esto significa es que este curso en última instancia, se trata de resolver un problema. De hecho, muchos de ustedes han salido de la escuela secundaria o han pasado el último par de años preguntándose lo que algunos de sus amigos lo hizo el año pasado o en otras clases. Y, sin embargo, la realidad Es decir, no importa lo que hacer al final del día en esta clase, que va a ser sobre la resolución de problemas. Y como tal, quizás tomar algo de tranquilidad en el hecho que el 73% de los estudiantes que tomar esta clase, tanto aquí en Yale, así como la Universidad de Harvard, nunca han tomado una clase de CS antes. Así que si usted está sentado aquí en la audiencia de hoy se pregunta razón por la que están sentados aquí en la audiencia de hoy, o tal vez sólo seguido junto con algunos amigos, o tal vez usted ha sido una poco de curiosidad en cuanto a lo la informática y la programación es, se da cuenta que la mayoría de sus compañeros de clase para la izquierda ya la derecha de ustedes son en gran medida en ese mismo grupo demográfico. Y de hecho, si miramos en las estadísticas del año pasado dentro del cuerpo de estudiantes de CS50, tanto aquí y en Harvard, el 58% de los estudiantes describen a sí mismos como menos confortable. 9% es más cómodo. Y a continuación, el 33% está en algún lugar en el medio. Y no hay ninguna definición formal de lo que significa que estos cubos. Que tipo de saber que estás menos cómodo si lo son. Se siente un poco incómodo con tal de estar en la clase. Usted no está muy seguro de si un ordenador la clase de ciencias es en última instancia, para usted, y darse cuenta de que son en muy buena compañía. Y de hecho la clasificación, y la evaluación, y la retroalimentación, y todo eso estructura de apoyo en la clase en última instancia muy individualizado. Más que la mayoría de cualquier otra clase de diseño. Y, en efecto, lo que en última instancia asuntos de esta clase no es tanto donde se termina arriba en relación con los demás, pero en el que, en la semana 11 o el último, y con respecto a sí mismo en la semana 0 aquí nuestra primera. ¿Así que qué significa eso? Pues bien, este medio de los 73% de estudiantes el año pasado que nunca habían tomado una clase de CS antes, por la inicio del semestre se fueron incursionando en un idioma llamado Scratch, que nosotros mismos verá aquí hoy. Y para el final de la semestre había que ido a través de toda esta lista de desafíos. A partir de un lenguaje llamado c. La implementación, lo que es a primera vista, yendo ser un poco un desafío para algunos, pero bastante gratificante una vez que se llegar Super Mario rebote arriba y abajo de una pirámide implementado, aunque, con sólo algo que se llama arte ASCII. La implementación de la última año-- lo los estudiantes el año pasado luego hizo después de que se implementen sus propia cifrado César y cifrado Vigenère. Por lo que los algoritmos de cifrado con el que se podía información scramble y luego unscramble información para enviar mensajes secretos. El juego de 15. Si usted recuerda de la infancia o algún favor de partido, ese pequeño juego de plástico donde se mueve los números de arriba, abajo, izquierda y derecha para tratar de conseguir el fin, la aplicación real de ese juego y la solución de la lógica necesaria allí. Y luego incursionó en forense año pasado. Así que a mediados de semestre, estudiantes que nunca han tenido utilizado sus teclados para este fin antes, fueron la escritura de software para recuperar, por así decirlo, JPEG o fotografías que teníamos accidentalmente borrado de un indicador digital tarjeta de memoria de una cámara. Recuperación de mensajes secretos desde el interior de la imagen de mapa de bits, y otros tales tipos de gráficos también. A continuación, la transición a dar toda la clase un diccionario. Sólo un archivo de texto muy grande con 150.000 palabras en inglés. Y todo el mundo fue desafiado leer alguna manera, por así decirlo, esas palabras en la memoria. En la memoria del ordenador. Y luego responder a las preguntas de la forma, se trata de una palabra? ¿Es esta una palabra? ¿Es esta una palabra? En realidad sólo la implementación un corrector ortográfico. Y luego se desafían entre otra con una gran board-- una tabla de líderes para ver quién podía utilizar la menor cantidad de memoria, en la menor cantidad de tiempo para de hecho la revisión ortográfica de documentos de gran tamaño. Hemos realizado la transición desde entonces hasta la aplicación de los propio servidor web. Así que no hacer páginas web en los idiomas como HTML y CSS, si está familiarizado. Pero en realidad la implementación el servidor que escucha en el internet para las solicitudes de los navegadores y luego responder a dichas solicitudes. A continuación, la implementación de nuestra propia e-comercio como el sitio web, donde los estudiantes podían comprar y vender acciones. Dibujo casi en tiempo real cotizaciones de acciones de Yahoo Finanzas. Y permitiendo a los estudiantes para ver cómo se desarrolla su cartera. Y, finalmente, un mash up de Google News y Google Mapas cual los estudiantes por término por fin Condiciones tenido la posibilidad de hacer clic, y redonda, y de búsqueda en un mapa de Google. Y luego ver todos los artículos de noticias que son proximales a esas áreas en particular. Así que realmente va de cero a 60. Y en el camino que tiene lo que teníamos el año pasado llamada, adiciones de hackers. Que aumentan la barra aún más para aquellos de ustedes que podría muy bien tener una buena cantidad de experiencia de estar en ese 9% de más cómodo. Así se dan cuenta de que hay un techo muy alto incluso dentro de las retos para los estudiantes proveniente de un fondo diferente. Debido a que al final de el día, estamos en última instancia, centrado simplemente en esto. Pero lo que hace este decir, la resolución de problemas? Así que propongo destilamos así. Por lo tanto la resolución de problemas es realmente Sólo este tipo de imagen. Por lo que tiene entradas a algún problema, algo que realmente quieren resolver. El objetivo es conseguir que las salidas, una solución a ese problema. Y luego en el medio es lo que llamaremos un cuadro negro. Que no necesariamente sabe o incluso cuidar lo que hay dentro de esa caja negro. Todo lo que sé es que cuando usted alimenta a la entrada en ella, es de esperar que consigue salida o una solución de él. Y mientras Hoy veremos tanto en las entradas y salidas, Vamos a largo plazo, y sobre el curso de todo el semestre, centrarse en lo que está dentro de esa caja. Y en ella se acuesta algo que se llama algoritmos. Instrucciones paso a paso para En realidad la solución de algunos problemas. Pero lo que es un ejemplo de algunos de los insumos? Así que tal vez una cosa simple en el inicio de cada año escolar, alguien puede ser que desee tomar asistencia. Por lo que podríamos hacer uno, dos, tres, cuatro, cinco, seis, y ¿cómo iba a mantener pista de esa información. Yo podría ir a uno, dos, tres, cuatro, cinco, seis. Y sólo tiene que utilizar una especie de un solo dígito. O que en realidad podría grabar este término un poco más. Y cómo hacer que represento todo los seres humanos en esta habitación? Bueno, yo podría hacer algo así, está bien. Veo a una persona. Todo bien. Veo otra persona, una tercera persona, y así sucesivamente. Pero nadie cuenta a las personas les gusta esto. Así que, literalmente, la mayoría de nosotros si estamos incluso ir a sacar nada en absoluto, son probablemente va a ir uno dos tres CUATRO, tal vez un poco de lujo, cinco, seis, siete, ocho, nueve, diez y así sucesivamente. Y eso es en realidad una sistema llamado unario. Uno, como uno que implica una, donde se sólo hay una letra del alfabeto. Usted acaba de conseguir esta marca hash. Y yo, por eficiencia, acaba de dibujar estas marcas de control, en última instancia como líneas rectas. Pero podría haberlos dibujado como pequeñas figuras de palo. Donde para representar una persona, una entrada, Sólo saco un palo figura o una almohadilla. Pero esto no es todo lo que expresiva. Si todo lo que tengo es esto de hash marcas, permiten palo cifras por sí solas, ¿Cómo puede representar algo así como el número 15? O 15 personas en la habitación? Voy a tener que hacer algo como 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. Simplemente no se adapta muy bien. Como las entradas reciben grande, necesita un sistema mejor que esto. Y resulta que la sistema que utilizan los ordenadores no es tan diferente de lo que usted y yo sabemos. De hecho, la mayoría de la gente en esta sala, incluso si usted está entre los menos cómodo, no necesariamente saben cómo su Mac o PC realmente funciona, usted probablemente ha escuchado al menos, que debajo de la campana son de 0 y 1 de. El denominado sistema binario. Así que de hecho, los equipos tienen más de acaba de marcas de control en su vocabulario, pero no tanto de una vocabulario como los seres humanos. De hecho, los seres humanos no utilizan binario. Bi significa 2, 0 y 1. Pero decimal, deca es decir, 10, del 0 al 9. Así que tenemos mucho más expresivo capacidades de nuestro mundo humano normal. Pero yo diría que estos sistemas, binario, y los decimales, y todo en el medio y más allá, son en realidad todo muy familiar. Por ejemplo, considere este ejemplo aquí, 123. Así que esto realmente es, por supuesto, un número que conocemos como 123. Pero todo lo que acaba de dibujar esto fue sólo patrón de símbolos, pictogramas por así decirlo. Tipo de formas en la pizarra con tiza. Pero ¿por qué tenemos inmediatamente y intuitivamente entender esto como 123? Bueno, si eran como yo en la escuela primaria, usted probablemente ha aprendido que este es el columna 1S, esta es la columna de 10s, esta es la columna de 100s. Y por qué es tan útil? Bueno, es simple aritmética que ahora hacer para conseguir a partir de un patrón de símbolos a un número entendemos intuitivamente. Es lo que, 100 veces 1, y luego 10 veces 2, y 3, 1 veces que por supuesto es sólo 100, y esto es 20, y esto es de tres. Y por lo que si sumamos los juntos-- ah. Así que ahí está el tipo de razonamiento detrás de por qué este conjunto de símbolos significa algo real y numérico. Pues bien, las computadoras hacen exactamente lo mismo, pero sólo pueden contar tan alto como uno. Mientras que yo era capaz de contar tan alto como tres. Y de hecho, si lo seguía haciendo que podía ir tan alto como las nueve de este sistema. Los ordenadores sólo tienen ceros y los de su alfabeto. ¿Así que qué significa eso? Pues bien, sólo significa que si un ordenador quiere representar, por ejemplo el número 0, tal vez usando tres tres characters-- letras del alfabeto, por así decirlo, que es como una computadora representa 0. Así que no todo lo que da miedo hasta ahora. Es exactamente lo que los humanos harían. Y de hecho, la mayoría de nosotros simplemente ignorar los ceros a la izquierda de todos modos. Un equipo, si se quiere para almacenar el número 1, Resulta que va a hacer esto. Y una computadora para almacenar el número 2 no es va a hacer el sistema unario, lo que he aludido antes. Que en realidad va a hacer esto. Y esto es probablemente en el que el patrón comienza a ser menos obvio para la mayoría de la gente. Eso es 2, esto es 3. Curiosamente, esto es ahora 4. Y ahora lo que realmente hace parecen ser tal vez críptico, pero no lo es si tenemos en cuenta lo que realmente significa binario. Significa que tiene dos letras de su alfabeto. Por lo que dos caracteres posibles para cada marcador de posición. Por lo que en realidad significa que vamos a necesitar un lugar 1s, 2s o el lugar, un lugar y luego 4s 8, y 16, 32 y 64. Y ¿cuál es la diferencia que hay? Al igual que éstos son 1, 2, 4, 8, 16, 32, 64. Y antes de que tuviéramos 110, 100.000, 10.000. ¿Cuál es la similitud que hay? Y lo que es el patrón? Sí. ESTUDIANTE: potencias de 2 en lugar de potencias de 10. DAVID MALAN: Sí. Potencias de 2 en vez de potencias de 10. Y por lo que si quería mantener va, 8, 16s y así forth-- pero ahora si usted tiene este tipo de la pista, ahora el sistema binario en realidad es bastante sencillo. ¿Por qué es este patrón de 0 de en el mundo de los ordenadores 0? Bien porque es 4 veces 0, 2 los tiempos 0, 1 Tiempos 0 y se obtiene 0. ¿Por qué es este el número 1? Mismo razonamiento, pero ahora tienen un 1 en la columna 1. ¿Por qué es este 2? Tenemos un 1 en la columna 2s. Y entonces, ¿cómo hacer que represento decir, el número 7 en binario? Decir más fuerte. ESTUDIANTE: Tres 1s. DAVID MALAN: Tres 1s. Así 1, 1, 1, porque sólo tenemos 4 más 2 más 1 me da 7. Todo bien. Así que a partir de ahí ¿cómo podemos representar a 8 con 3 marcadores de posición? Sí. ESTUDIANTE: 1, 0, 0, 0. DAVID MALAN: Sí 1, 0, 0, 0. Y sin embargo, tal vez, como que me de vista técnico necesario añadir otro marcador de posición en el tablero. Si quiero encajar que de hecho que tenga que hacer algo como esto. Así que realmente se necesita para usar ahora la columna 8s, y eso está bien. Pero lo curioso en la informática es que eso va a costar algo. Necesita más memoria RAM en el equipo ahora. Necesita más memoria porque se necesita algo físico para almacenar esa bit adicional, por así decirlo. Dígitos binarios. Y, de hecho todo lo que ha pasado aquí, al igual que el sistema decimal, si seguimos añadiendo números de arriba y arriba y arriba, vamos a 5 a 6 de 7 a 8 es como llevar a la 1, literalmente. Y entonces todo lo demás se remonta a cero. Pero, ¿cómo es lo que realmente representamos estas cosas físicamente en un ordenador? Bueno, al final del día, el único entrada física de entrar en mi equipo aquí es la siguiente cable de alimentación, por lo electricidad o electrones de la pared. Y así, ¿cómo puedo obtener a partir de algo física como la que en realidad que representa una idea como esta vez. Pues bien, ¿qué podíamos hacer? Podríamos considerar que, de acuerdo, tal vez si la electricidad fluye Podía conservarse y mantenerse a ella. Y si yo estoy aferrando a algo de electricidad, que sólo va a arbitrariamente representan un 1. Y si me tire de la clavija y no hay nada allí, usted sabe que sólo va para representar arbitrariamente un 0. Así que si algo está ahí, 1. Si no está ahí, 0. O puede presentar este un poco más visual. Aquí es un 0. No pasa nada interesante seguir sobre el fondo de mi teléfono. Pero si permito un poco bit de la electricidad fluya, a pesar de que es un poco brillante aquí, mi linterna se encendió. Así que estoy almacenar una carga y ergo, este teléfono ahora representa un 1. Así 0 1. Así, con 1 iPhone cuán alto puedo contar el uso de este tipo de enfoque? Me refiero a 1. No es todo lo que convincente. Entonces, ¿qué más podemos hacer? Bueno vamos a ver, ¿hay alguien en su teléfono en este momento que yo podría pedir? Cualquier persona que tenga un teléfono con una linterna incorporada en? ¿Me prestas? No necesito que la desbloqueen. Todo bien. Gracias. Préstame esto. Todo bien. Así que si ahora desplazarse hacia arriba y aquí, ¿qué estoy representando ahora? Sí. Así que es un tres, porque esto es en el columna 1s, esto es en la columna 2s. Así 1 más 2 es 3. Y luego, si tratamos de obtener Realmente creative-- oh, gracias. Muy preventiva. Todo bien. Ahora tengo tres iPhones. Todo bien. Y ahora esto- no lo haré hacer más allá de esto. ¿Qué estoy representando ahora? A sólo siete en siete. Pero necesitaba físicamente más memoria en este caso. Pero eso es todo lo que es. Se puede pensar en lo que está pasando en-- gracias usted-- interior de su teléfono tan sólo ser un interruptor que es de ser encendido y apagado. Y si alguna vez has oído la palabra transistor. O si alguna vez has oído la comercialización hablar de Intel en el interior, eso es hablar con el tipo de hardware eso es en el interior de su ordenador. Intel hace CPUs, unidades centrales de procesamiento, que son como los cerebros en el interior de su ordenador. Y estas CPUs y cosas que están conectados tener montones y montones de pequeños interruptores. Millones, miles de millones de interruptores que puede ser o bien encendido o apagado. Así ordenadores, por suerte, al igual que nuestros Macs y PCs, puede contar manera mayor que 7 o 8 porque tienen forma más de tres o cuatro bits. Mucho más que el equivalente de la tres linternas que sólo teníamos. Pero ahora esto comienza a ponerse bastante aburridas rápidamente. Si ahora quiero ser realmente capaces hacer algo más interesante, Quiero ser capaz de saltar a algo como esto. Así ASCII, que no es realmente un útil siglas, pero Código Estándar Americano para Intercambio de Información. Sólo significa que, algunos años hace que los seres humanos decidieron, Usted sabe cuál es, que desea ser capaz de hacer más con los ordenadores que sólo números. No queremos que se acaba calculadoras ser caros, nos gustaría ser capaz de hacer cosas como procesamiento de textos, aunque de manera muy sencilla. Más tarde tuvimos correo electrónico y otros medios de comunicación. Y así el mundo decidió hace algunos años hace de acuerdo con este sistema ASCII, ¿Sabes que? En ciertos tipos de programas en cualquier momento que ver el equivalente de la cantidad 65, como el patrón de bits. Y podríamos hacer lo matemáticas aquí en el tablero. El patrón de bits que representan 65. No pensar en ella como 65 en decimal. Piense en ello como forma arbitraria, pero a nivel mundial, consistente como la capital A. Y entonces el mundo decidido, ¿sabes qué? Tomemos otro patrón de bits. Y si alguna vez vemos la número 66, vamos a asumen que esa es la social B. Un avance rápido a H y yo, si veo 72 o 73, que debe ser un H y un I, respectivamente. Y así, siempre que el conjunto mundo está de acuerdo en esto. Así que cuando se recibe un correo electrónico, o que se obtendría un archivo en una memoria USB, o algo así, cuando que- se ve que el patrón de bits, usted sabe que debe ser este letra o alguna otra letra. Pero es un contexto específico, a la derecha. Un programa de correo electrónico podría interpretar estas cosas como personajes, pero una calculadora gráfica o calculadora podría representar o interpretar estas cosas, por supuesto, como letras. Así que con eso dicho, pequeño repaso rápido. Esta es quizás una de tres caracteres correo electrónico que se ha enviado a mí. Debajo del capó está todo en 0s y 1s, pero no me importa. Vamos a empezar a abstraer por encima de los 0s y 1s a las cartas. Y si veo un patrón de 0s y 1s que realmente representar 72, pista, pista, de 73 años, y después de 33 años, ¿cuál es el mensaje? ESTUDIANTE: [inaudible] DAVID MALAN: Así que si usted piensa Hace espalda un momento, HI fue el mensaje que estaba tratando de comunicar aquí porque H es 72, I es de 73 años, y ahora 33-- que no lo haría necesariamente saber esto de antemano, pero resulta que si en realidad ver más de la gráfica y el sistema de que la humanidad acordada años hace, es sólo un signo de exclamación. Y de hecho, hay un patrón de símbolos y números para cada personaje que podría tener en su teclado. Todo bien. Resumen del más dejar. Si no queremos tener sólo cosas como números y letras, que en realidad queremos implementar gráficos. Bueno, si alguna vez has oído el acrónimo RGB. Es una especie de anticuada, pero es todavía tipo de allí. RGB es de color rojo, verde, azul. Y es sólo un sistema de de decir, sabes qué, vamos a utilizar tres conjuntos de bits. Un conjunto de 8 bits, otra serie de 8 bits, y otra serie de 8 bits. Y vamos a utilizar esos bits para almacenar cuánto roja desear en nuestra pantalla, cuánto verde que queremos en nuestra pantalla, y la cantidad de azul que queremos en nuestra pantalla. Y esto sólo significa que si tener un gran un número lot-- para el rojo, eso significa que me dan mucho rojo. Si usted tiene un gran número de verde, dame un montón de verde. Y si usted tiene sólo un poco de azul o un pequeño número como 33, dame un poco de azul. Y si por casualidad combinar los tres magnitudes, por así decirlo, se obtiene esto- que apenas se puede ver en el proyector aquí, pero esta turbia tono de amarillo o marrón. Pero esto es decir, con el que patrón de 8 y de 8 plus plus 8-- que el patrón de 24 bits es como un ordenador haría almacenar ese tono de amarillo en una puntito un píxel en la pantalla. Así que hemos pasado de 0s y 1s a decimal números a las letras del alfabeto. O más interesantes, puntos de color. Bueno, lo que, por supuesto, a continuación, viene después? Pues bien, lo que es una imagen que se ver en Facebook o conseguir en un correo electrónico? ¿O similar? ¿Cuál es la definición técnicamente de una imagen? Sí. ¿Qué es una imagen compuesta de si mirar muy de cerca a su pantalla? Sí. Es sólo un montón de píxeles. De hecho, si usted toma su portátil quizá más adelante, y mirar muy de cerca en función it-- en lo caro que el portátil es y cómo la alta calidad de la pantalla es, usted puede ver muy bien todos los pequeños puntos en la pantalla. Y esos puntos o píxeles, que significa que hay 24 bits que representan cada pixel en esa fotografía que ves en Facebook, o que acaba de tomar en su iPhone recientemente. Y así es como obtenemos a cosas como gráficos. Pues bien, lo que es un video? Un video es sólo un conjunto de gráficos volando por la pantalla de nuevo y otra vez y otra vez. Y así, videos realmente, son sólo patrones de bits que representan rejillas, filas y columnas de puntos, volar la imagen en pantalla, después de imagen, conforme a la imagen, también denominado Películas. Así que es eso para entradas y salidas. Todo lo que tenemos ahora es una supuesto de que, usted saber lo que, si queremos un ordenador para representar la información, tenemos un sistema para hacerlo. Podemos hacerlo con 0s y 1s al final del día. Pero podemos abstraer, por lo para hablar, por encima de eso de manera que se representan más cosas interesantes. Y aquí en adelante en CS50, y en la informática en general, nos encontramos ahora en los hombros de todas las personas que llegó antes que nosotros imaginó que fuera. Y ahora acaba de asumir que los ordenadores puede representar entradas y salidas. Pero ahora vamos a realidad hacer algo con ellos. Así que un algoritmo es un conjunto de instrucciones, paso a paso, para resolver algún problema. Y lo que podría ser uno de esos problemas. Así que esta es una vieja escuela tecnología, una libreta de teléfonos. Y en el interior de una guía telefónica es una Gran cantidad de los nombres y números. Y esos nombres son generalmente ordenados alfabéticamente. Así que si quería encontrar a alguien en este libro de teléfono como Mike Smith, ¿qué es un humano típico va a hacer? Bueno, usted podría simplemente abrir hacia arriba, mira la primera página. No veo Mike Smith. A su vez a la segunda página, No veo Mike Smith. Y sólo seguir y seguir. Es este enfoque paso a paso correcto? Sí. Es una especie de estúpida, derecha. Es ineficiente, a la derecha. Debido a que va a tener para siempre para llegar a Mike, pero es correcto. Porque si Mike está aquí Yo de hecho a buscarlo. Entonces, ¿qué es un poco más persona razonable va a hacer? Todavía pueden abrir en la parte delantera, y tal vez volar a través de la guía telefónica dos páginas a la vez. Dos, cuatro, seis, ocho. En realidad no puedo físicamente hacerlo muy bien. Pero en teoría, esto debería ser dos veces más rápido, dos páginas a la vez. Es correcto este algoritmo? ESTUDIANTE: [inaudible] DAVID MALAN: No necesariamente. Bueno. ¿Por qué esta advertencia? ESTUDIANTE: Debido a que pudiera estar en una de las páginas que usted está saltando. DAVID MALAN: Sí. Así que incluso si me da cada vez más cerca. ¿Y si él es sólo accidentalmente, por el mal suerte, intercalada entre las dos páginas que estoy volando sobre? Así que tenemos una solución para este. En realidad necesitamos luego decir, espera un minuto, tal vez si vamos demasiado lejos, tal vez si llegamos a la sección en T, para T viene después de que Smith, entonces deberíamos al menos doble vuelta al menos una página. Así se puede fijar, pero hay un tema condicional allí. Por lo que es el doble de rápido, pero es posible que doblar hacia atrás un poco. Pero nadie en su habitación, incluso si en realidad no utilizar guías telefónicas más, va a empezar por el principio. Qué vas a hacer en busca de Mike Smith? Vas a ir más o menos a la década de S. O si realmente no tiene la hoja de trucos en el papel, vas a ir al menos más o menos a la mitad. Y ciertamente no para la parte delantera del libro. Usted va a mirar hacia abajo. Y matemáticamente es probable que estés ir a ver la sección M, que es más o menos en el medio. Y luego vas a darse cuenta, lo que es cierto? ¿Dónde está Mike? ESTUDIANTE: [inaudible] DAVID MALAN: Sí. Así que está en este lado. Y así, ¿qué se puede hacer? Pues bien, tanto figurativa como literalmente se puede desgarrar el problema de una vez por la mitad? Y entonces sabe que se puede tirar Esta mitad del problema de distancia. Y ahora nos queda fundamentalmente el mismo problema, pero es la mitad de grande. Y por lo que ahora cuál es la ¿conjunto de instrucciones? ¿Cuál es el algoritmo para encontrar Mike Smith? Es exactamente lo mismo. Ahora bien, este pasa a ser el M sección y esta es la sección Z, pero la fundamental fórmula sigue siendo el mismo. Ir más o menos a la mitad, mirar hacia abajo, oh, caramba. Ahora estoy en la sección T, He ido demasiado lejos. Pero aquí también se puede aplicar la misma lógica. la mitad de tiro del problema de distancia y ahora estamos izquierda con un problema que es un cuarto de su tamaño. Y podemos repetir, y podemos repetir, y podemos repetir hasta que teóricamente sólo hay una página de la izquierda en Mike, que es o no es. Entonces, ¿qué es tan poderoso sobre esta idea? Es decir, después de todo, es bastante intuitiva. Nadie va a empezar por el a partir de la guía telefónica y voltear 1.000 páginas para encontrar Mike Smith. Casi todo el mundo en esta sala va hacer más o menos ese tipo de algoritmo salvo por el lagrimeo. Y así, ¿por qué lo hacemos? Pues bien, considerar la eficiencia. Considere cuánto mejor este algoritmo era por lo descomponen en sus partes componentes. Entonces, ¿qué me hago primero? Cogí la guía telefónica. Y un científico de la computación, y un programador, más generalmente resulta que está pasando para empezar a contar todo a 0. ¿Por qué? Bueno, es un poco extraño que los seres humanos cuentan, en general, a partir de uno. Debido a lo que es el número más pequeño que claramente puede representar basada incluso en nuestro viejo matemáticas de la escuela primaria? Bueno, fue 0, si que es en decimal o binario. Y por lo que verá en el mundo de la informática y la programación, específicamente, empezamos contando desde 0. Así que cogí el libro de teléfono etapa 0. Voy a abrir a la medio de la guía telefónica. Y eso es de hecho una expresión de lo que hice. Y entonces el segundo paso fue buscar en los nombres. El tercer paso es un poco diferente conceptualmente. Estoy preguntando a mí mismo una pregunta. Si Smith es uno de los nombres, Voy a tomar una decisión. Si él es uno de los nombres, a continuación, voy a llamar a Mike. Y voy a tomar una decisión sobre la base de esa información. Sin embargo, si no, si es Smith anteriormente en el libro, a la izquierda, Voy a abrir hasta la mitad de la mitad izquierda del libro. Y entonces aquí está la inteligencia, Voy a volver al paso dos. Voy a ordenar de de pie sobre mis propios hombros y sólo tiene que repetir el pasado trabajo que hice. Pero el trabajo que me queda es menos, y menos y menos. Pero todavía va a funcionar. Pero si Mike, en cambio, es más tarde en el libro hacia la derecha, Voy a abrir hasta la mitad de la mitad derecha del libro, luego volver al paso dos. Pero hay en realidad un cuarto escenario. Mike ya sea aquí, o aquí, o aquí, o- ESTUDIANTE: No hay. DAVID MALAN: No hay. Y de hecho, si no anticipamos este escenario cuarta y última nuestro programa puede tener errores o defectuosa de alguna manera. Si no, dejar de fumar en el caso de que no hemos encontrado Mike en absoluto. Y de hecho, si usted ha notado alguna vez el colgante ordenador, o todos de una palabra repentina o algún otro programa simplemente se cierra inesperadamente, y, a veces te de error mensaje literalmente es que. Este programa se cierre inesperadamente. Puede ser para cualquier número de razones. Pero a veces es algo tan simple como esto. El programador humana quien escribió que el software No nos dimos cuenta de que, oh, hay una etc. Lo que realmente puede suceder. Y si usted no escribe código para capturar ese cuarto escenario, de hecho es a veces inesperada lo que la computadora en realidad podría hacer. Ahora vamos a llamar a cabo una Algunas de estas cosas. Así en amarillo aquí, tener términos resaltados que en lo sucesivo sólo estamos va a llamar funciones. Funciones en el mundo de programación son como acciones, declaraciones de acciones. Así que recoger, abierto a, mira a, llamar, abierta, abierta, dejar de fumar. Esa es una función, un procedimiento, una acción, cualquier número de sinónimos funcionaría también. Ahora lo que son estas cosas ahora en amarillo? Si otra cosa, si otra cosa, si lo demás, se trata de lo vamos a llamar condiciones en la programación, o ramas, la decisión puntos, si se quiere. Pero, ¿cómo saber qué tenedor en el camino a tomar, por así decirlo? Hay que destacar los términos a la derecha allí, los cuales son éstos si no preguntas. Estas verdaderas preguntas falsas. Smith entre los nombres? Smith anteriormente en el libro? Smith más tarde en el libro? Estas son preguntas a la cual hay un sí o no, o equivalentemente verdadera o falsa, o equivalentemente, uno o cero respuesta. Y mientras tanto hay sólo una última pieza. Este de aquí tiene qué tipo de efecto? Sea o no se programa antes, ¿cómo describir lo que paso siete y 10 están haciendo? ¿Qué dijiste? ESTUDIANTE: Un paso recursivo. DAVID MALAN: Un paso recursivo. Sí, esencialmente. Es técnicamente iterativo aquí si está familiarizado. Pero vamos a volver a eso. Pero está haciendo algo con claridad. Una vez más, es la inducción de una ciclo, un bucle, a la derecha. Estás literalmente ir atrás para algunos paso anterior. Y así, de hecho, esto va a aplicar algún tipo de ciclo. Pero no se va a conseguir atascado en este sin fin, a la derecha. Porque si usted está en constante control es Mike aquí, o hacia la izquierda, o no aquí, finalmente, él no va a estar allí. Y que acaba de dejar de fumar por completo puede según la última línea. Así que eso es todo por el vocabulario. Y esto fue lo que lo haría en general, llamar al código pseudocódigo. No es un lenguaje real. Es sólo muy concisa Inglés, pero se comunica el punto. No hay ninguna estructura formal aquí. Sólo tiene que utilizar es unos pocos palabras, pero palabras como claros como sea posible para comunicar su idea. Ahora lo bueno es que el algoritmo y cuánto mejor es? Bueno, nosotros no tenemos que entrar en el detalles de números o nada como eso. Pero podemos ver el forma de esta solución. Así que si acabamos de sacar algunas gráfica xy aquí en el eje horizontal aquí. Vamos a llamar el tamaño del problema. Y lo haría un científico de la computación suelen utilizar n como la variable aquí. Así n páginas, o n personas en la habitación, o sea ​​lo que sea que estés tratando de contar. Y a continuación, en el eje vertical en el a la izquierda, que sería el momento de resolver. Entonces, ¿cuántos segundos lo hace me llevara a encontrar Mike Smith? O cuántos pasos toma? ¿Cuántas vueltas página se tarda? Así que eso es lo que cuesta mí en el momento de resolver un problema. Y podríamos llamar la primera algoritmos pendiente, si se quiere, como se acaba de esta línea recta en rojo. Y lo llamaré n. ¿Por qué n? ¿Por qué es sólo por esta a una relación? Bueno, si Verizon o cualquiera que sea la compañía telefónica añade una página más para la guía telefónica el próximo año, que podría empujar a Mike uno paso más cerca del final, dependiendo de dónde es esa página. Y lo que el efecto puede ser que apenas consistiría en añadir un segundo más. O una página más a su vez. Una relación uno a uno. Por el contrario, el segundo algoritmo. ¿Cuánto más rápido era que intuitivamente? Donde fui dos páginas a la vez? Sí. ESTUDIANTE: [inaudible] DAVID MALAN: Sí. Por lo tanto, va a ser el doble de rápido. Y dibujaríamos que aquí dependiendo de la escala. Todavía es una línea recta, pero inferior a la línea roja. Porque por alguna serie de páginas, si se lleva que esta cantidad de pasos con el primer algoritmo, que va a tener que media como muchos pasos con la segunda. Y por lo que la línea amarilla que describe el segundo algoritmo es sólo va a estar por debajo de ella. Pero lo que es realmente de gran alcance es pensar en la tercera y última, y sorprendentemente más intuitiva algoritmo, que tiene esta forma. Técnicamente llamaríamos esta una curva logarítmica. Logaritmo en base 2 de n en este caso. Pero eso no importa realmente. Lo que importa realmente es la fundamental diversa forma que tiene. Y se puede considerar hasta qué punto mucho más corta esta línea realmente es en el largo plazo. Está en constante aumento. Que no se aplana a la perfección. Pero se hace cada vez mucho más lentamente ya que el problema se hace más grande y más grande. Y se puede pensar de esta manera-- si Verizon no sólo añadir una página, pero el año que viene dobles el número de páginas de la guía telefónica, el primer algoritmo podría tomar el doble de pasos. Si se trata de 1.000 páginas de esta año, 2.000 páginas próximo año, Mike podría ser mucho más lejos. Por lo que es de 1.000 pasos adicionales para encontrarlo. El segundo algoritmo podría ser tan sólo 500 más pasos para encontrar él, porque una vez más, Estoy volando a través de él dos a la vez. Pero qué pasa con el tercer algoritmo? Si Verizon duplica el tamaño de la guía telefónica el próximo año a partir de 1000 a 2000 páginas, cuántos más pasos es mi tercer algoritmo va a tomar? Sí, es sólo uno. Y esa es la idea de gran alcance. Puede tomar de 1.000 páginas mordida de ese problema a la vez. Y ahora, si se tiene en cuenta un escenario tonto, pero la clase de habla de la poder de este tipo de intuition-- si tenía una libreta de teléfonos, como, cuatro mil millones páginas, se siente como un problema muy grande. Y, de hecho, podría Me tomar de cuatro millones de páginas se vuelve a encontrar en esa Mike Smith caso con el primer algoritmo. Pero la cantidad de pasos que lo haría tomar en el tercer algoritmo para encontrar Mike entre cuatro miles de millones de hojas de papel? Así que cuatro mil millones se desgarra por la mitad. Usted consigue dos mil millones. Luego de mil millones, 500 millones y luego, 250 millones, 125 millones-- pero se siente como esto es Va a tomar un tiempo. Puede ser que necesite 32 dedos a contar hasta que el alto. Sin embargo, es de hecho, como pocos como 32 lágrimas de página. Se puede ir de cuatro mil millones a uno divisoria página el número original de Artículos en la mitad 32 veces hasta que uno se queda con sólo que de una sola página. Ahora, por supuesto, yo estoy haciendo trampa aquí. No es que sólo estamos siendo especie de estúpida por completo con los dos primeros algoritmos. Estoy haciendo trampa en algún sentido, o Realmente estoy aprovechando una suposición. Lo que era cierto acerca de la libreta de teléfonos en su forma original que permitió yo incluso utilizar ese tercer algoritmo? ¿Sí? PÚBLICO: Se ordena alfabéticamente. DAVID MALAN: Fue ordenada alfabéticamente, ¿verdad? Si sólo fuera en al azar orden, esto es un desperdicio de tiempo, toda esta conversación. Tengo que mirar cada página si está en orden aleatorio para encontrar Mike Smith antes de que yo se puede concluir que está allí o no. Y así, el que esquina han cortado es que tengo asumido que alguien más en este caso hizo el trabajo para mí. Y en última instancia, de manera que invita la pregunta, bueno, espera un minuto. ¿Cómo se puede ordenar 1.000 páginas de nombres y números? Eso es en realidad una diferente problema, algo volveremos en el futuro. Pero cuando se piensa acerca de sitios web como Facebook y Google para Gmail y cosas como Google de propios índices de búsqueda, cuando se tiene millones o billones de piezas de datos que se almacenan en estos días, searching-- y por no hablar clasificar los problemas-- en última instancia, es un reto en sí mismo. Y, de hecho, esto es, pues, sólo uno de esos desafíos que vamos a estar viendo. Así que ahora vamos a tomar un momento y echar un vistazo a CS50 en sí y le dará una sensación de lo que está reservado este semestre. De hecho, si no lo ha hecho, no echar un vistazo a esta dirección URL. Y como Patrick aludió que, este año estamos hacer una inversión importante de todo más en apoyo del curso estructura en términos de la TA y las entidades emisoras, las horas de oficina, secciones disponibilidad, y materiales digitales en línea, también. De hecho, en términos del curso de conferencia, estamos aquí hoy. Y las expectativas de este año oficial del curso son asistir al día de hoy, del curso última conferencia, y un curso aproximadamente en la mitad del semestre con cada conferencia en el medio puesto a disposición general viernes por la tarde en línea, tanto para los estudiantes de Yale y los estudiantes de Harvard este año. De hecho, una de las cambios fundamentales es que estamos adoptando en Harvard un paradigma mucho como lo hicimos aquí la última año y ahora este año, por lo que de igual forma, que todavía película más de conferencias del curso en Cambridge pero ponerlos a disposición anterior que hemos hecho en el pasado de manera que los de usted-- si le gustaría, por ejemplo, conseguir una ventaja sobre los materiales en el primer fin de semana en vez que el segundo fin de semana, tendrá el acceso a este tipo de materiales, búsquedas, integrable, hyperlinkable a los recursos relacionados con todos los anteriores. En cuanto a los temas, para darle un sentido de trajectory-- del curso y algo de esto podría ser la jerga de ahora, pero no por mucho tiempo, puede estar seguro. Vamos a empezar hoy, en última instancia, con el examen de una programación lenguaje llamado Scratch. Vamos a la transición a partir de entonces la próxima semana para algo que se llama C y luego mirando a otro edificio bloques para la solución de problemas, cosas llamadas matrices y algoritmos, cómo usamos la memoria de nuestra ventaja y la desventaja, y cosas como estructuras de datos, y luego hacia el extremo de cola de la clase mirando la máquina de aprendizaje y mirando a otro lenguaje llamado Python, cómo funciona la web, cómo internet más generalmente funciona, al igual que los protocolos HTTP, idiomas para bases de datos como SQL, JavaScript para la web, y en última instancia atar todos aquellos juntos. Y así, de hecho, en el final del día, se no va a aprender en esta clase de Scratch o C o Python o SQL o JavaScript. Va a aprender en lugar de forma más general la informática y las fundaciones de la misma, y ​​usted aprender a programar en cualquier número de ellas idiomas en el camino. Así que de hecho, uno de los objetivos del curso en el extremo es para quitarse todo el curso de ruedas de entrenamiento por esas últimas semanas de modo que después de esto, se puede regresar a su propio fields-- si esa es o No ciencias de la computación o la ingeniería, en lo natural ciencias, artes, humanidades, o beyond-- y llevar algo de esto Las ideas de los cursos y este campo de ideas y práctica habilidades a su propio dominio con el fin de resolver los problemas en el mismo. Lo que vamos a hacer aquí por su parte en la mayoría de los jueves después de hoy es con las cabezas principales del curso lo que llamaremos tutoriales de conjuntos de problemas del curso. Por lo que cada semana cuando han creado un problema, vamos a estar caminando a través de una ubicación como éste retos del curso, que le ofrece algunos consejos y trucos y técnicas de diseño. Pero si usted no es capaz para hacer los de la persona, darse cuenta de los mismos se integrarán los recursos por uno de el curso de asistentes de enseñanza en el problema establece sí mismos, también. El problema que diferencia a este año, a diferencia el año pasado, basado en la retroalimentación, todavía será lanzado el viernes. Pero en lugar de ser debido la posterior Viernes, lo que te da sólo siete días, efectivamente se debe 10 días más tarde. Y, en efecto, esto significa que que van a solapan por un fin de semana. Sin embargo, esperamos este año Esto será especialmente permiten a los estudiantes para dar cabida a una mejor flujo y reflujo en sus listas, ya sea académico o extracurriculars o atletismo o la temporada de mitad de período. Puede carga frontal o trasera de carga su semana centrándose en CS50 basa en la carga académica real de su propia semana. El problema fija a sí mismos cubrirá una amplia gama de idiomas, aunque nos centraremos predominantemente desde el principio en C antes de que nos centramos a continuación, de mayor nivel, más idiomas centradas en la Web. Y luego un par de preguntas más frecuentes aquí-- se debe tomar una clase como CS50 como un primer año? Tan absolutamente. Y, en efecto, no es necesariamente algo usted debe posponer hasta que haya cortado sus dientes sobre otros tipos de clases. Sino más bien, considerar que para muchos estudiantes, me incluyo en su día, este es un campo muy poco familiar, especialmente si nunca lo hizo tomar un CSA AP o algo por el estilo en la escuela secundaria. Pero darse cuenta de que desde el principio, si se trata de este curso o algún otro curso de introducción, Ahora es de hecho el mejor tiempo, Creo que, de encontrar alguna nueva ruta o algún nuevo interés académico, también. Y luego tomar con otros courses-- por lo que una de las diferencias clave aquí frente a la Universidad de Harvard es que sólo tomar cuatro cursos por semestre en Harvard por alguna razón. Y ustedes realmente Tire de unos 36 cursos en total a lo largo de sus cuatro años, lo que significa generalmente cuatro o cinco clases. Y yo creo que es bastante justo decir y no reivindicar la CS50, por diseño, es probablemente no es el tipo de clase que se debe hacer por lo general llevar con otros cuatro cursos para un total de cinco porque son conjuntos de procesadores por diseño bastante intensiva. De hecho, yo también aprendí esta de vuelta en el día. No lo describiría CS50 y la informática, la programación como tanto difícil como es sólo que consume tiempo. No es el tipo de cosa donde después de la cena, puede volver a su dormitorio habitación, sentarse, y empezar centrándose en el conjunto de procesadores pensar, de acuerdo, Voy a cabo esta explosión esta noche y luego mover a mi siguiente tema al día siguiente. A veces se acaba de golpear una pared. Usted tiene errores en su código. Que no necesariamente sabe cómo resolver algún problema. Y una de las características clave de programación para mí, para el día de hoy es que sólo tipo de necesita tomar un paso atrás en ocasiones, dormir en ella o pensar en ella durante el curso de un trote o alguna otra actividad, y luego volver a ella más fresco. Y sólo tiene estas ventanas de tiempo. Y, de hecho, es por eso que hemos alargado la cantidad de tiempo disponible para los conjuntos de problemas este año y también, por esa URL Pongo más temprano que qué hay de nuevo este semestre, recortado el problema de modo que establece que son, fundamentalmente, no es menos rigurosa, y la comida para llevar no son menos, pero hay mucha menos materia frontal, mucho menos trabajo de campo que necesita hacer en el frente de cada conjunto de problemas, como se verá, antes de que pueda realmente sumergirse en la carne de ella. Así que darse cuenta de que esos y otros cambios en el horizonte para acomodar mejor a los estudiantes, pero en última instancia para asegurarse que son la comida para llevar de hecho lo más alto posible. Así, mientras más trabajo de lo podría estar en una clase típica, esperamos que los rendimientos de usted y los robos de balón para usted y las habilidades e ideas con la que se sale son tanto más convincente como resultado. Y para conseguir que allí-- y esto es uno de los puntos clave, como Patrick aludido antes les hablé es estructura de soporte del curso. Así que no sólo tiene uno de CS50 los mayores personal del curso en el campus. También cuenta con una de las la mayoría de pregrado. De hecho, el año pasado CS50 fue la primera clase tener un profesorado universitario. Y prueba de que el éxito hacer ahora muchos otros cursos dentro de Yale CS tener que, también. Y para los estudiantes, específicamente, serán estas TA y asistentes del curso ser de apoyo en su conjunto la red de recursos de apoyo, entre ellos o secciones recitaciones, oportunidades semanales tener discusiones más íntimas y evaluaciones de materiales dirigidos para diferentes pistas, para los estudiantes menos cómodo, más cómodo, o en algún punto intermedio. Estos seguirán la disponibilidad de las conferencias de varios días a la semana los lunes y martes. Y luego horas-- oficina uno-a-uno oportunidades ayuda a las entidades emisoras de golf y TA serán los miércoles y jueves y domingos a las múltiples veces, todos los cuales será publicado en la página web del curso, aún más que el año pasado, también. Pero lo que es clave para CS50, si No duda un poco inusual, es la cultura del supuesto de que hemos tratado de cultivar, tanto en Cambridge durante muchos años y ahora más recientemente en New Haven. Y, de hecho, que hasta este Sábado, si usted no ha oído, es el Día CS50 rompecabezas, que tiene nada que ver con la informática sino que está totalmente diseñado para enviar un mensaje que es la informática sobre la resolución de problemas. Y de hecho, si se desea asociarse con uno o dos o tres amigos y formar un equipo para CS50 Puzzle Día, eche un vistazo en los anuncios que se encuentran en el camino de salida. Y tres horas de pizza y rompecabezas y premios esperan. Y, de hecho, para la primera vez en el año, no se llevará a cabo en conjunto con la Universidad de Harvard. Será aquí de forma independiente en Yale. Así que mantener un ojo hacia fuera para los que si no lo han hecho. La mayoría de todos los viernes en el semestre qué tratamos de hacer una gran clase se sienten pequeños y llevar unos 50 estudiantes para el almuerzo con el personal del curso, con ex alumnos, amigos desde la industria a hablar acerca de cómo es la vida después de una clase como CS50 y durante los veranos y después de la graduación. Así que mantener un ojo hacia fuera para invitaciones a eso. Por primera vez nunca este año haremos nosotros sostener la primera codificación CS50 concurso, una oportunidad opcional opt-in la mitad del semestre, después de que todos nosotros hemos tenido unos seis o siete semanas de programación en C bajo el cinturón para competir, así que si quieres choose-- nuevo en teams-- tratando de resolver tantos desafíos como se puede en la programación con amigos suyos contra otros. Y hacia la cola del semestre hará que algunos autobuses charter, en realidad pasar algún tiempo en Cambridge, si lo gustaría unirse a nosotros, para la los llamados CS50 hackathon. A las 7 pm vamos a empezar. Alrededor de las 9 de la tarde, tendremos pizza. Alrededor de las 1:00 de la mañana, tendremos burritos. Y cualquier persona todavía está despierto en el paseo en autobús a casa alrededor de las 5:00 de la mañana, nos detendremos para panqueques en IHOP en el camino de casa- una oportunidad de 12 horas para sumergir a sí mismo con sus compañeros y el personal en el proyecto final del curso, que es una oportunidad para ir más allá de la boletines de problemas del curso y diseñar e implementar la mayoría nada de su interés, que finalmente se ofrecido aquí en los Comunes. La primera feria cada vez CS50 fue la última año, una exposición de fin de semestre o una celebración de lo que todos en la clase había logrado, especialmente los que, de nuevo, que pasó de nada a algo, de cero a 60, no tener antecedentes antes y que presentan, en última instancia, algo para todo el campus y, Si en línea, el mundo lo vea, también. Ahora, estos aquí son sólo algunas de las TA y CA que hace posible CS50. Permítanme invitar a cualquier de los miembros del personal que están aquí para subir al escenario, así como los jefes del curso, ofrecer algunas palabras de inspiración, también. ANDI: Hola, chicos. Pueden ustedes oírme? Gracias por acompañarnos en este precioso, lluvioso jueves por la tarde. Mi nombre es Andi. Soy un joven en Berkeley. Y junto con Stelios y el verano, seremos su enseñanza de tres cabezas ayudantes para este próximo año. Así que, supongo, muestra de manos-- ¿cuántos de ustedes no tienen ninguna intención de ser un CS importante ni realmente sumergirse profundamente en ciencias de la computación como un importante aquí? Increíble. Eso es brillante. Así que estoy en realidad un asuntos globales y comandante de la ciencia cognitiva. Yo, literalmente, vine a Yale con la intención de no tener que mirar a una número cada vez más en mi vida. Cuando llegué a la Universidad de Yale, esto era algo que nunca estuvo en mi radar. Yo quería aprender acerca de la poesía. Yo quería aprender acerca asuntos Internacionales. Yo quería aprender acerca acuarelas. Sí, ofrecemos una clase en los dibujos de acuarela. Pero nunca realmente estaba interesado en todo lo relacionado STEM. Pero entonces el que más años consiguió, más me daba cuenta que cada campo realmente de alguna sentido emplea la informática, o si no la informática, la computación. De hecho, para mi mundial proyecto final asuntos, estamos utilizando análisis de datos para analizar los ataques terroristas de Boko Haram en Nigeria. Y así como se puede ver, sin tener en cuenta de lo importante que terminan persiguiendo o cuáles son sus intereses aquí en Yale son, la programación y las bases de cualquier tipo de habilidades son super útil. Y CS50 realmente está bien equipado para tipo de echar una gran cantidad de sus recursos para usted, independientemente de cuán cómodo se siente o cómo usted está interesado en la búsqueda de la clase. Verano va a hablar un poco poco acerca de lo que ustedes están va a aprender acerca de este año. VERANO: Hola, todo el mundo. Estoy verano Wu. Soy un joven en Morse. Y, de hecho empecé como estudiante CS50 mí mismo. Así que hace tres años, yo estaba en un año sabático. Yo nunca había tomado un CS clase en la escuela secundaria, pero pensé que en mi tiempo libre, que sería genial para aprender cómo codificar. Así que hice una rápida búsqueda en Google, buscado lo que estaba disponible en línea, y vi este vídeo con los muppets y los DJ y sitios web interesantes. Yo estaba como, quiero aprender a hacer eso. Así que tomé el curso, y yo simplemente se enamoró de ella. Pero recuerdo estar tan celoso de la niños que pudieron asistir a la hackathon, Puzzle asistir a Día, asistir a la oficina horas, reciben ayuda de TA en persona. Y por lo que nunca imaginé que me gustaría tener la oportunidad que aquí participan en el supuesto de que en primer lugar se llevó Me interesa ordenador ciencia y es la razón por la Soy un informático importante hoy en día. Así que te advierto, esta clase se va a estirar usted. Se va a desafiarte. Pero también va a le enseñe cómo hacer las cosas que nunca se imaginó que podría. STELIOS: Hola, todo el mundo. Mi nombre es Stelios. Soy un joven en Branford La universidad y uno de los principales CS. También soy de Atenas, Grecia. estoy de verdad viendo hacia adelante para conocerlos a todos ustedes, converse con usted en la sección, en las horas de oficina, en el viernes para llevar. Estoy muy emocionado porque hemos puesto tanto esfuerzo en la creación de un soporte único estructura para todos ustedes para hacer que su experiencia con el curso de la mejor manera posible. Y espero que, si bien la mayor parte de es probable que no haya tomado una CS Por supuesto antes, espero que sea CS50 para usted es lo que despierta el interés para proseguir equipo la ciencia en el futuro, como lo ha hecho con tan muchas personas en el pasado. Así que gracias por estar aquí, excitado verte. Jason Hirschhorn. JASON HIRSCHHORN: Hola, todo el mundo. Mi nombre es Jason Hirschhorn. Yo vivo en Silliman. Y fui a Harvard como estudiante y se especializó en estudios sociales con especialización en ciencias de la computación. Y una de mis principales funciones aquí es apoyar este maravilloso personal ya que todos ustedes apoyan. De hecho, esto no es de todos ellos. Hay 55 estudiantes universitarios y graduados aquí para apoyar a todos. Y me atrevería a decir que uno de los mejores partes del curso para usted todo es llegar a trabajar con ellos, conocerlos, llegar a verlos, tanto en CS50 y fuera de este semestre CS50 y para muchos semestres venideros. Así que espero que usted tome la Por supuesto, porque esperamos que pueda llegar a interactuar con el personal maravilloso que tenemos en el escenario. ALTAVOZ: Bueno, déjame terminar diciendo que va a ser divertido. DAVID MALAN: Bueno, Gracias a todo el equipo. Permítanme atenuar las luces y permitir que un poco más de nuestro equipo, ambos de Cambridge y New Haven, para saludar como archivo de estos tipos. Y después de eso vamos a la transición a el primero de nuestros compromisos de programación con este lenguaje llamado Scratch. Así, gracias al equipo. Vamos a bajar las luces y saber de algunos otros. [APLAUSOS] [REPRODUCCIÓN DE VÍDEO] -La Misión de CS50 es hacer que se más cómodo con una forma totalmente nueva de pensar, esta forma de pensar computacional. -Se Hizo la informática interesante, que es algo que realmente no me di cuenta era posible hasta que tomó la clase. -I Era como, espera. Realmente estoy traduciendo mis pensamientos en un equipo en este momento. -incluso Si no tiene alguna experiencia en informática o ninguna experiencia, esto es en realidad la clase para ti. -así Que definitivamente quiero mis estudiantes a solo entusiasmarse con la informática. No sólo la programación, pero pensar como un científico de la computación es realmente lo que quiero tratar de enseñar a mi primer año. -CS50 Es difícil y gratificante. -Una experiencia. -Extravagancia. -Se Nos está llevando al siguiente nivel. [REPRODUCIENDO MÚSICA] -Los TFS son, creo, la elemento vital del curso. -Estoy Emocionado de tener mis alumnos que estoy ayudando tiene que aha momento de realizar lo que realmente están intentando para hacer, para encontrar la manera de hacer un conjunto de procesadores. -CS50 Es definitivamente un curso duro. Pero a diferencia de cualquier otro Por supuesto realmente en Yale, que tiene un gran tipo, comunidad de apoyo. -Usted No lo hacen en absoluto necesita saber nada acerca de la codificación para poder para tomar el curso. -Es Increíble para ver hasta qué punto la gente viene en un semestre. -No Se sienta solamente en su habitación aprender a código, pero era algo más que una clase. Fue una experiencia. -La Mejor manera de aprender conceptos y para procesarlos es enseñando a los demás. -¿Cuál Es la fracción de teléfono? [REPRODUCIENDO MÚSICA] Y esto es CS50. [REPRODUCIENDO MÚSICA] -Esta Es CS50. -¿Tiene un problema? Romperlo por la mitad. [REPRODUCIENDO MÚSICA] Tirar a la basura. DAVID MALAN: Está bien. Así que vamos a tackle-- en una pequeña poco, dicho sea de paso, es estado de esta tradición alguna razón durante 10 años para servir en la torta iniciar y al final de CS50. Así que le espera al final de Hoy en día, además de los programas de estudio, será un poco de pastel, así, y el personal del curso para decir hola. Pero ahora, de dejar paso a la primero de nuestros idiomas, en su vamos a pasar realmente sólo una semana y uno problema ajustarse en este dominio, Scratch. Y encontrará si usted tiene programada antes, muchos de las ideas y la posibilidades son familiares para usted. Sin embargo, usted encontrará que es divertido en el camino para averiguar exactamente cómo traducir algunas de las ideas que ya conoce a este entorno particular realmente impresionar a su familia y amistad con su trabajo, lo que puede ir en línea, si así lo desea, después. Y si no tiene experiencia previa y están entre la mayoría de estudiantes menos confortables, darse cuenta de que muchas de las ideas que simplemente explorado con las cosas reality-- como los libros de teléfono y de asistencia y así forth-- traducir bastante bien a un ordenador, pero no si se utiliza, Inicialmente, un lenguaje como este. Así que este es un programa escrito en un lenguaje llamado C. Y vamos a pasar un poco de vez en C, en última instancia. Pero las probabilidades son, esto va a parecer un poco críptico para que a primera vista. De hecho, hay un montón de raro sintaxis, paréntesis, corchetes angulares, llaves, citas, y punto y coma. Y de hecho, si usted sumergirse en programación por primera vez mirando y tratando de crear cosas así, honestamente, se obtiene de manera sumido tan a menudo en una estupidez minucias que no tiene nada intelectualmente interesante al respecto. Pero imagínese si usted podría crear este mismo program-- que, como se puede inferir la clase de, probablemente, imprime "Hola, mundo" de alguna manera o de otra índole. Podemos destilar esa misma idea en sólo dos piezas de un rompecabezas, si se quiere. De hecho, Scratch es interesante porque es este lenguaje gráfico. Puede arrastrar y soltar estos piezas de un rompecabezas que sólo enclavamiento si tiene sentido lógico para hacerlo. Y así, en Scratch, pronto veremos, esto es cómo se llevaría a cabo ese mismo programa, con sólo dos piezas de un rompecabezas que más o menos hacen lo que dicen. Pero ya veremos en un momento que algunos de los bloques de construcción que aludimos anteriormente y algunos más son todo lo que en última instancia, van a constituir algunos de nuestros primeros programas. Vamos a tener cosas como acaba de functions-- acciones que hacen algo, como decir hola, mundo. Vamos a tener bucles, cosas que inducen ciclos una y otra vez, al igual que lo lo hizo hace un momento con la búsqueda para Mike Smith. Variables, como en el álgebra, si tener xoy, que pueden almacenar un número. Pues bien, en un programa, en realidad se puede almacenar más allá de los números. Puede almacenar palabras y frases y los gráficos y otras cosas todavía. Las expresiones booleanas, simplemente preguntas-- sí o no, verdadero o falso. Condiciones de toma de decisiones, sobre la base de esas respuestas sí / no. Y entonces las cosas más elegantes como matriz y las discusiones y eventos y cualquier número de otra características, pero todos los cuales mapa muy bien a muy bloques de amigos como este. Esto va a ser una función, una pieza del rompecabezas de color púrpura que apenas dice lo que su nombre es-- en este caso, por ejemplo. Y luego, a menudo, no hay una caja blanca que se puede escribir o arrastrar algún valor en. Y eso es lo que generalmente llama un argumento o un parámetro. Es una manera de alterar la comportamiento predeterminado de un rompecabezas pieza o una función para que lo haga algo a medida para usted como decir, hola, hola o mundo, Andy o hola, Jason o alguna otra frase en su lugar. Si quiere decir que una lot-- literalmente forever-- puede tomar otra pieza del rompecabezas llamado para siempre y justo el intercalado dos juntos como este. Y ese bucle, como la imagen sugiere, significa simplemente decir hola, mundo para siempre, una y otra y otra vez. O, si sólo quiere hacer una número finito de veces, como 50 veces, que va a ser otro rompecabezas que- pieza para repetir 50 veces. Mientras tanto, si desea tener una variable en este idioma que estamos a punto de jugar, puede utilizar un bloque de naranja como este. Y esta variable que forma arbitraria i llamada de número entero. Y yo sólo puse igual a 0. Y lo que tal vez, en este caso-- este variable-- representa la puntuación de alguien en un juego. Se empieza en cero, y cada vez que se hacer un gol o algo por el estilo, se obtiene un punto adicional. Puede hacer preguntas en Scratch. Si nos arrastrar y soltar rompecabezas piezas en un momento como este, usted puede hacer preguntas como, así, es i menos de 50? Tal vez necesita 50 puntos para ganar. Y lo que esta sería la pregunta que le pide. O, más generalmente, se podría decir es x menor que y, donde no está involucrado dos variables? Ahora, éste es mucho grande a primera vista, pero en realidad no todo lo que más compleja. Esto es sólo una combinación de condiciones y variables y las expresiones booleanas para preguntar tres preguntas-- es x menor que y? Si es así, dígalo. Por ejemplo, x es menor que y. Si no, si x es mayor que y, de otro x debe ser igual a y. Y mientras que con Mike Smith, había cuatro escenarios, aquí en el mundo de los números, x es o bien menor que, mayor que, o igual a. Todo lo que tenemos son tres bifurcaciones en el camino. Y luego está más elegante piezas del rompecabezas como éste para cosas como arrays, donde estamos va a ser capaz de almacenar información. Vamos a ver bloques que permiten tenemos que realizar varios subprocesos, otra de las características que va a utilizar, y a continuación, también algo llamado eventos. Pero antes de llegar a ese punto y crear aún, en última instancia, nuestra propia personalizada pedazos del rompecabezas, vamos a en realidad abrir el programa en sí. Así que esto es Scratch. Está disponible en scratch.mit.edu. Y de nada para jugar ahora o más adelante, también. Esto pasa a ser la versión fuera de línea. Para las personas que no lo hacen necesariamente tiene gran Internet, se puede descargar la mismo software, también. Y no hay realmente sólo tres componentes a este software. En la esquina superior izquierda de la la pantalla es el tipo de escenario que Scratch, que de forma predeterminada se parece a un gato, vive en el interior. Él puede moverse hacia arriba, abajo, izquierda y derecha y realice una serie de otras cosas, y puede buscar cualquier número de formas basadas en los trajes que asigna a él. Pero esto es lo que vamos a llamar a una sprite, una especie de carácter. Y usted puede tener múltiples personajes, como pronto veremos. En el medio están ahora todos estos rompecabezas piezas y estas categorías o paletas en esto. Así que ahora mismo, hice clic en movimiento. Y por lo que estoy viendo toda la relacionadas con el movimiento piezas del rompecabezas o bloques, por lo que las funciones que tienen que ver con ir arriba, abajo, izquierda o derecha o alguna otra operación. Pero si he hecho clic en miradas, se podría ver las cosas como por ejemplo el bloque que vimos hace un momento. Y si hago clic en el Control, verá cosas como la repetición y la siempre y si el bloque que vimos hace un momento. Y por lo que encontrará que sólo tendremos que rascar la superficie de algunos de los rompecabezas de piezas en conjunto, pero es todo bastante intuitivo y el punto y clic. De hecho, Scratch fue diseñado para los estudiantes más jóvenes para ayudarles a dar una salida para el pensamiento creativo. Y, sin embargo maravillosamente, es una piedra maravillosa escalonamiento exactamente a las ideas que vamos a explorar en C y Python y JavaScript, así como. En el lado de la derecha, por último, aquí es esto, la llamada área de scripts. Y esto es sólo la pizarra en blanco con la cual se empieza a escribir un programa. Y voy a exactamente eso. Ahora, yo sé dónde están las cosas porque he hecho esto unas cuantas veces. Pero sé que, en virtud la categoría Eventos, hay este bloque aquí-- cuando se hace clic en bandera verde. Y darse cuenta si el zoom hacia fuera y de vuelta en aquí en el escenario, vidas de rascar dentro de este pequeño mundo rectangular, en lo alto que es un verde bandera y una señal de stop de color rojo. Así que ir y detener, respectivamente. Y así lo hago lo que quiero hacer cuando se hace clic en esa bandera verde? Bueno, déjame ir a la que se ve categoría. Y déjame ir por delante y arrastrarlo esto. Y el aviso tan pronto como se pone estrecha, que son una especie de magnética. Así que si ahora me dejo ir, que encaje juntos agradable y limpia. Y voy a seguir adelante y decir algo así como hola, mundo durante dos segundos. Permítanme alejar y haga clic en el ahora bandera verde, y decir hola, mundo. Todo bien. Así que eso es todo fino y bueno. No todo lo que emocionante. Vamos a hacer un poco más lindo. Y yo sé que en antelación, Scratch sucede venir con algunas cosas lindas como esta. Así que juega maullido sonido hasta que esté hecho. Así que vamos a hacer esto. [MIAU] Aw, eso es adorable. Y si hago clic en él otra vez-- [MIAU] Y otra vez. [MIAU] Pero sigo teniendo que reanimar a los arañazos. Pero no puedo hacer mejor que esto. ¿Por qué no simplemente arrastrar tres de éstos. Y ahora es tres veces más adorable. [Meowing] OK, en realidad, es un poco espeluznante. Así que necesitamos algo intermedio allí. Si voy al control, que parece de hecho hay un bloque de espera. Y así cuenta si se ciernen sobre allí-- y déjame hacer esto un poco más grande. Si se ciernen, que va a encajar en su lugar. Así que espere un segundo, espere un segundo. Vamos a golpear la bandera verde de nuevo. [Meowing] Bien, un poco más natural, pero no es muy eficiente. Así que esto es correcto si mi programa de maullido gol fue tres veces. Pero no es muy bien diseñado. Yo como que cortar algunas esquinas. Tengo un poco perezoso. Lo que se siente como- qué es lo que parece haber hecho mal, qué le dirías? ¿Sí? Si, en el medio. PÚBLICO: Se utiliza más la memoria de lo que necesitaba para porque usted está utilizando tantos línea diferente. DAVID MALAN: Sí, así que más líneas. Y no sería necesariamente memoria, a pesar de que podría ser visto como de esa manera. Pero es definitely-- no hay redundancia. Y literalmente tipo de arrastré y dejó caer las mismas cosas. Y si la clase de extrapolate-- si No es obvio aquí-- así, ¿cómo Me Meow 30 veces? Me gustaría arrastrar y soltar, como, 30 pares más de las piezas del rompecabezas. Y sin duda, hay una manera mejor. Y hemos visto una mejor manera. Lo haría de forma intuitiva ser el mejor camino? Sí, sólo tiene que utilizar un bucle. No copiar y pegar. Y de hecho, en cualquier momento presente semestre si se inicia encontrarse arrastrar y soltar, o realmente copiar y pegar, hábito peligroso para entrar en porque esto no es sólo muy fácil de mantener. Por ejemplo, si quiero cambiar el sonido a otra cosa, Tengo que cambiar ahora en tres ubicaciones en lugar de uno solo. Porque de hecho, si romper este away-- estoy sólo va a desacoplar así. Déjame agarrar un bloque de repetición, y a continuación, en tres, escriba tres, echará a algunos de estos de distancia con sólo dejar ir. Y luego notarlo no parece que se ajusta, pero magnéticamente, que va que no sólo se enganchen en su lugar pero crecer para adaptarse a la forma. Y eso es bueno. Y ahora si hago clic en el juego. [Meowing] Muy agradable. Todo bien. Y ahora es muy fácil cambiar, también, porque sólo puede cambiar un número en un solo lugar. Pero esto, también, no es tan interesante. Vamos en realidad tienen Cero no Miau, sino que se mueven. Déjame ir a Motion y seguir 10 pasos dentro de-- gritos, déjame arreglar esto. Déjame tener que mover 10 steps-- En realidad, no hagamos de repetición. Déjame agarrar un bloque de control, y hacer lo siguiente para siempre. Siempre, mover 10 pasos. Y haga clic en Reproducir. DE ACUERDO. Así que por suerte, se detiene. De lo contrario, los niños les molesta mucho cuando pierden su especie de gato. Pero al menos puedo arrastrar él de nuevo en la pantalla. Pero esto no es todo lo que grande de un juego o animación. Sería bueno si tal vez que rebotó en el borde. ¿Asi que que hacemos? Lo constructo es lo que necesita tener Scratch decidir a rebotar, ¿cree que, incluso si usted nunca ha arañazos visto antes? Sí, en la parte trasera. PÚBLICO: Se necesita una si el bloque o si-entonces. DAVID MALAN: Sí, por lo que algunos tipo de bloque o si si-entonces. Así que en realidad, tenemos uno de estos aquí. Así que si: así que vamos a conseguir deshacerse del movimiento. Permítanme ampliar de forma que es más grande. Entonces, ¿cómo sobre esto. Siempre, si Sensing-- nosotros no hemos visto antes. Necesito una expresión booleana. Y resulta que si lo toca? Si toca el borde, ¿Qué quiero hacer? Bueno, si vuelvo a Motion, Resulta que, oh, puedo dar la vuelta. Permítanme arrastrar este aquí. ¿Por qué no seguir adelante y dar la vuelta 180 grados? Y ahora, me dejaron de mover al final. Podría poner en movimiento al principio o al final. Pero lógicamente, cada vez que se movía, me desee comprobar, estoy tocando el borde? Soy que toca el borde? Soy que toca el borde? Así que, lógicamente, me giro en caso afirmativo. Así que vamos a pulsar el botón Reproducir. DE ACUERDO. Así que es ligeramente con errores, por así decirlo. Y un error es sólo un error en un programa de ordenador. Pero al menos está funcionando. Y, de hecho, yo puedo entrar aquí. Y quiero dejar No 10 pasos a la tiempo, pero esto es todo animación es. Todo esto es un dibujo animado o incluso una película es. Permítanme pasar 20 pasos a la vez. Así que 20 veces la cantidad de cosas están sucediendo una vez, o dos veces más, en este caso. Y se está moviendo más rápido. Déjame cambiar a 30. 100. 1000. Y se va muy rápido. Y esto es-- Sí, está bien. Así que ahora sólo estamos a jugar con él. OK, así buggy. Pero lo podemos arrastrar fuera del camino aquí. Pero podemos hacer más divertido con esto, también. ¿Qué hay de esto- que es al revés. Pero resulta Scratch-- y no es en realidad, Tengo que renunciar, sin académica valor a lo que estoy a punto de hacer. Pero si abro el micrófono, vamos a detenerlo y hacer algo como esto. ¡Ay! [RISA] Eso era adorable. Gracias. Ahora, esto es lo que mi voz parece que cuando le grito ay. No creo que cogimos tu risa. Está bien. Me deja guardar esto como "ay". Vamos a guardar esto como "ay". Y ahora vamos a volver a secuencias de comandos. Y ahora vamos a ver need--, sonido. Oh, ay reproducir sonido. Así que si yo estoy tocando el borde, me dejó ouch primera jugada y, a continuación, dar la vuelta. Y ahora vamos a ponerlo en el medio. [Decir "ay"] El doble de rápido. DE ACUERDO. Pero es, literalmente, haciendo lo que estoy diciendo. Por lo que es de hecho correcta, es sólo un poco molesto rápidamente. Así que vamos a añadir algo más interesante a este. Permítanme realidad espontaneo uno que hice con antelación, acertadamente llamado Pet el Cat, que hace esto. Aquí está la secuencia de comandos aquí. ¿Qué es esto va a hacer en términos ingleses? Lo que esta diseñado para hacer? Sí, vamos a ir some-- sí? AUDIENCIA: Cuando acariciar al gato, maúlla. DAVID MALAN: Sí, por lo que cuando acariciar al gato, que va a maullar. Así, en otras palabras, ahora hay un bucle infinito todavía, combinado con una condición, combinado con una expresión booleana, combinado con un par de las funciones, el efecto de los cuales, una vez que juego este programa, no es nada que pasa hasta que mover el cursor cada vez más cerca y más cerca y- [MIAU] Entonces es como acariciar al gato. [MIAU] Sólo una vez que realmente mover el cursor sobre él. Ahora, también azotado hasta no acaricie el gato, lo que hace este lugar. [Meowing] Así que acaba de maullando constantemente. [Meowing] Pero si consigo demasiado close-- [Meowing] [RUGIDO] Entonces, ¿cómo funciona esto? Ahora sólo tengo una tenedor de dos vías en la carretera. Si tocar puntero del ratón, a continuación, reproducir el sonido león. Los demás sólo reproducir el sonido maullido, y luego esperar tres segundos por lo que es una especie de hacer muy tranquilamente. Todo bien. Así que esa es la combinación más ideas fijas. Vamos a echar un vistazo a este ejemplo Azoté hasta llamados hilos. Y ésta es fundamentalmente diferente, ya que apalancamientos una característica de muchos lenguaje de programación llamado hilos, la capacidad de un programa para literalmente, hacer dos cosas a la vez. De hecho, en estos días si se está utilizando Google Docs o Microsoft Word, y el documento está siendo constantemente revise la ortografía, incluso a medida que type-- o Pulsa Ctrl-P o Control-P e imprimir algo, que está imprimiendo mientras continúa escribiendo. Programas de hecho hoy en día puede hacer múltiples cosas a la vez, al igual que en Scratch aquí. Así que aquí, tengo dos sprites Ahora, un pájaro y un gato. Y si hago clic en cada uno de los caracteres de uno en uno, Veo ahora el pájaro de secuencias de comandos en la parte superior derecha. Ahora veo el gato. Pájaro, gato. Así que cada uno de ellos tienen su propio guión. Pero aviso, lo pieza del rompecabezas ¿Ambas empezar? Cuando hace clic en bandera verde. Y aves, cuando se hace clic en bandera verde. Así que cuando hago clic en la bandera verde, ambos de esos scripts o programas se van a ejecutar en paralelo. Y se dará cuenta de que el ave es sin pensar simplemente rebotando en el borde. El gato claramente se ha programado con una ventaja estratégica. Y-- [RUGIDO] Todo bien. Para que el gato atrapó al pájaro en este caso. ¿Porqué es eso? Pues bien, el aviso primera sólo tenemos el pájaro simplemente ir sin pensar a esta ubicación inicial, y después para siempre, si no se toca el gato, basta con mover. Y si estás en el borde, rebotar. Y sólo se mueven. Y si estás en el borde, rebotar. Pero el gato, por su parte, tiene cierta lógica adicional que dice esto- primera, tan que esto no es completamente sesgada contra el pájaro, noto que tengo se utiliza una pieza del rompecabezas verde allí que realmente recoge un número aleatorio. Una característica de muchos idiomas es dar que los números aleatorios o pseudoaleatorios. Así pues, en este caso, el gato inicialmente elige un número aleatorio entre, al igual que, 90 grados y 180 grados, en esencia, por lo que hay un poco de la varianza. Y después para siempre, si el toque el pájaro, reproducir el sonido león. De lo contrario, simplemente apunte hacia el pájaro. Apuntar hacia el pájaro. Point hacia el ave, que es una pieza del rompecabezas en sí mismo en este caso. Bueno, no podemos hacer otra cosa aquí. Permítanme abrir el programa de eventos aquí. Y aquí tenemos de nuevo dos sprites, que se parecen a estas dos marionetas aquí. Y lo que es interesante aquí es la siguiente. El tipo de naranja tiene esta un conjunto de piezas de un rompecabezas aquí. Siempre hacer lo following-- Si se pulsa la barra espaciadora, luego decir, Marco, y entonces retransmitir un acontecimiento. Y mientras tanto, el chico de color azul tiene aquí esto- cuando recibe el evento, decir Polo. Así que resulta en Scratch y en otros idiomas, hay maneras para que dos programas o dos guiones, en este caso, intercomunicar para que cuando yo pulsa la barra espaciadora, dice Marco. Y el otro se entera de que, por así hablar, y dice Polo en respuesta. Así que usted puede escribir programas que en realidad interactuar de esta manera. Y si lo hago de una vez, Incluso puedo añadir las variables, simplemente usando uno de sprites en este caso. Éste es especialmente molesto. [Ladrido de una foca] Ahora, el aviso a la derecha tenemos alguna lógica adicional aquí. ¿Cómo evito que este sello de ladrar? [Ladrido de una foca] Parece que en la mano derecha lado es lo que es la reproducción del sonido. Pero sólo está jugando una sonará si lo que es verdad? Si un naranja variable-- block-- silenciado es cero. ¿Cómo cambio silenciado a ser 1, es decir, cierto, hacen de este silenciado? Al parecer, el otro guión, que pueda pulsa la barra espaciadora, y ahora se detiene. Para que podamos tener esta intercomunicación a través de secuencias de comandos, así, por sólo compartir una variable a través de los dos como este. Ahora, esto no es tan interesante. Vamos a seguir adelante y hacer esto y se combinan una gran cantidad de estas ideas con este programa aquí. Antes de hacerlo, sin embargo, ¿qué tal un voluntario? Déjame sacar la presión de mí porque en realidad no juega este juego. Vamos a tener a alguien que no han visto antes. Tiene que ser cómodo venir en el escenario aquí, en cámara. OK, vamos arriba. Muy valiente. ¿Cuál es tu nombre? IDRIS: Idris. DAVID MALAN: Lo siento? IDRIS: Idris. DAVID MALAN: Idris, un placer conocerte. Vamos arriba. Y ahora, en su propio teléfono móvil teléfono, se juega Pokemon GO? IDRIS: No. DAVID MALAN: ¿En serio? IDRIS: Sí. DAVID MALAN: OK. Todo bien. Bien un placer conocerte. Vamos de nuevo. Yo tampoco. Así que vamos a averiguar juntos cómo jugar a este, que alguien realmente fue implementado y en Scratch cambiando el gato a esencialmente diferentes personajes todos juntos. Y si a pantalla completa esto aquí, vamos para ver el siguiente juego en conjunto. Todavía se está cargando, siendo la carga. Venga. Déjame hacer esto. Venga. Este juego es tan grande que se estrelló. Colocarse. Prueba esto una vez más. Venga. Todo bien. Aquí vamos. DE ACUERDO. Bandera verde. Así que, aquí vamos. [REPRODUCIENDO MÚSICA] Elija el nivel medio aquí. Haga clic en el chico de color azul allí. Todo bien. Y puede utilizar la flecha keys-- arriba, abajo, izquierda, derecha. Ahora, vamos a considerar como lo hacemos esto- y luego ir por el personaje allí. Sí. Y ahora le haga clic con el ratón. Oh si. Movimiento. ¿Dónde está la flecha? Aqui tienes. Así que haga clic en ese país. Sí. Todo bien. Así que ahora, me han dicho que tiene una bola de empuje, que si lo hace clic, que va a hacer eso. Muy bien. En la práctica de hoy, encontrado esta versión del juego de en realidad no es muy difícil. Así que si quieres ir de nuevo aquí, bajar a esta bola de empuje. Y luego gire a la derecha. Intente hacer clic en él. Oh, en realidad, eso es la tienda, al parecer. Aceptar lo que cerrar. Nunca había hecho eso antes. Tal vez ir a esta cosa aquí. Oh, hay que ir. Espera, hay uno por ahí. Oh, no hay otra. DE ACUERDO. Abajo. Sí, haga clic en. OK, eso es muy lindo. OK, muy bien hecho. Este juego no es muy difícil. DE ACUERDO. Felicitaciones. Aquí, tenemos una CS50 bola de la tensión para usted. Pero consideremos por un momento lo algunos de los robos de balón son allí. Más fácil que el juego real, al parecer. Pero todo lo que hemos de ir aquí es un personaje que probablemente tiene algún tipo de bucle asociado con él. No es un gato. Es este carácter en su lugar. Y ese bucle es sólo constantemente decir, si se pulsa la flecha hacia arriba, Si pulsa la flecha hacia abajo, si flecha hacia la izquierda o hacia la derecha pulsa flecha pulsada, moverse hacia arriba o hacia abajo o hacia la izquierda o hacia la derecha. O si hay otra pieza del rompecabezas que hay dice que al tocar otro elemento sprite, al tocar uno de los personajes a la bola de empuje, si el toque, a continuación, hacer esto. Así que todas las ideas que hemos estado utilizando hasta ahora realmente Sólo puede aplicarse en este particular, contexto para jugar a este juego, también. Déjame ir por delante y tirar por otra aquí, de hecho. Déjame ir por delante y tirar hasta, digamos, este. Esto es algo que vuelve a mezclar. Hecha por uno de los nuestros estudiantes en Cambridge, y luego me fui a través y cambiado prácticamente todos los casos de Harvard a Yale este momento. ¿Alguien desea competir contra las hiedras aquí en otra acumulación de todas estas ideas? Vamos hacia abajo, sí. ¿Cuál es tu nombre? DINA: Dina. DAVID MALAN: Adina? DINA: Dina. DAVID MALAN: Dina, vamos hacia abajo. Muy bien, Dina. Por lo que este juego se hace más difícil y más difícil, porque en este juego, hay variables que están siendo utilizados, así que están constantemente hacer el seguimiento de qué nivel estás en el juego. Mucho gusto. Ven por aquí. Y por lo que el objetivo aquí es para ordenar de hacer su camino a través de un laberinto que implementa este estudiante. Y sólo para establecer el escenario, cada uno de estas imágenes en la pantalla es su propio sprite, su propio carácter. Así que estos fueron predeterminados por los gatos, pero el estudiante los cambió a los diversos logotipos hiedras aquí. Y entonces verá que simplemente mediante el uso de condiciones y bucles y funciones y más, se obtiene esto. [REPRODUCIENDO MÚSICA] [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Sí, ok. Sí, sigue adelante. En primer lugar de muy fácil nivel. Sólo tienes que ir allá. Pero, de nuevo, debe tener en cuenta, esto es sólo una lazo de la escucha de la flecha keys-- arriba abajo izquierda derecha. Y ahora un bloque de detección. Muy agradable. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Muy agradable. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Muy agradable. Bastante fácil, carmesí. Todo bien. Levels-- uh-oh. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Y de nuevo, en estos tres crestas de Harvard, sólo tiene lógica diciendo que si en el borde, de rebote. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] OK, lo que estás haciendo es más interesante que por qué. Muy agradable. Muy agradable. UH oh. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Yo creo que hay que sacrificarse. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] ¡Rápido! [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Bonito. Está bien. Ya lo entenderás. ¡Sí Sí! Muy agradable. [APLAUSOS] [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] ¡Bonito! [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Lo tengo. ¡Venga! En segundo lugar a último nivel. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Todo bien. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Sí. El buen uso de las variables aquí. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Sí. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Bonito. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Esta bien. Tenemos que llegar hasta el final. Ahí. Oh! [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Podría ejecutar tarde hoy, pero que va a ser vale la pena. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] ¡Puedes hacerlo! ¡Sí! [APLAUSOS] [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Éste es realmente difícil. [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Le daremos dos vidas más. ¿Puedes hacerlo? [MUSIC - MC Hammer, "U PUEDE NO TOQUE  ESTA"] Todo bien. ¿Qué tal una gran ronda de aplausos, no obstante. Tienes que del segundo al último nivel. Gracias. [APLAUSOS] Así que esto es sólo para decir cuánto se puede hacer con este tipo de cosas. Y darse cuenta, también, que cuando piezas del rompecabezas no la cual existen y, de hecho, esto va a ser uno de los poderes con el primer problema conjuntos y es beyond-- en realidad crear su propia cuenta. Y esto es sólo un fragmento de uno de los ejemplos podrás jugar con la línea, donde si no ha incorporado en los arañazos algo así como una pieza del rompecabezas de la tos, en realidad se puede hacer usted mismo. Y así, todo esto y más le espera. Y sólo para pintar una final la imagen de lo que es en verdad por delante en el almacén para la clase para ti, sobre la base de algunas fotos de los compañeros de clase pasado, me permite atenuar las luces por última vez y se muestran CS50. [REPRODUCIENDO MÚSICA] Todo bien. Eso es todo por CS50. Torta ahora se sirve. [REPRODUCIENDO MÚSICA]