[REPRODUCCIÓN DE MÚSICA] [Aplausos] DAVID J. MALAN: Este es CS50, Introducción de la Universidad de Harvard al intelectual empresas de ciencias de la computación y el arte de la programación. Ahora bien, si usted está entre aquellos que todos los años están sentados aquí con un poco de nervios en su mente, tal que usted no piensa que usted pertenece aquí, usted piensa que la mayoría cualquier persona que se sienta a tu alrededor sabe mucho más de lo que, es de hecho más cómodo de lo que en la computadora la ciencia o los ordenadores más en general, se dan cuenta que el 78% de los estudiantes que ahora tomar CS50 no tienen experiencia previa. De hecho, hay 100 puntos no en la pantalla, 78 de los cuales son de color verde sólido, que significa, si usted está entre ese grupo demográfico, están en muy buena compañía aquí en adelante. Y si usted está en su lugar entre los 22% de los estudiantes CS50 que hacen de hecho tener experiencia previa, ya sea en escuela secundaria o algún otro programa, darse cuenta de que, también, ser impugnada en el curso. No sólo tenemos diferentes pistas para los estudiantes menos cómodo y más cómodo por igual en secciones, También han llamado ediciones de hackers de más boletines de problemas que pondrá a prueba a aquellos estudiantes con esa experiencia adicional para explorar material similar pero desde un más perspectiva sofisticado. Pero, ¿qué es la informática? Pues bien, en última instancia, lo que va a cuestión a medida que explora este campo no es tanto donde terminas en relación con sus compañeros de clase, pero donde tú mismo terminan en semana 12 frente a donde usted comienza aquí en la semana cero. Ahora ordenador science-- bien, vamos a llamarla la ciencia de computation-- donde la computación es realmente sólo una forma elegante de decir, teniendo alguna entrada, producir alguna salida, y hacerlo por los algoritmos que se ejecutan, conjuntos de instrucciones para resolver algún problema en los insumos con el fin de producir una salida o solución en la que usted está interesado. Así que recientemente hemos tenido ocasión para viajar fuera a California para reunirse con una alumna. Su nombre es Susan Wojcicki. Y a ella le gustaría hablar a usted aquí en video para dar testimonio de cuán aplicable incluso sólo una muestra de la computadora la ciencia en la nivel introductorio puede ser. Incluso si usted no va a perseguir ciencias de la computación como un campo, o incluso de ingeniería, o STEM más en general, verás, de hecho, cómo un determinado Por supuesto lo influyó en su vida. Y ella sólo lo tomamos cuando ella era estudiante de último año aquí en la Universidad de Harvard. Si pudiéramos apagar las luces para Susan. SUSAN Wojcicki: Hola, mundo. Soy Susan Wojcicki. Soy el CEO de YouTube. Y tomé CS50 cuando era su último año en la Universidad de Harvard en 1990. Yo estaba en realidad una historia y gran literatura. Y mi tercer verano, Me di cuenta de que tal vez querido aprender algo acerca de las computadoras. Y así, he vuelto. Tomé CS50. Fue difícil, pero fue la más clase increíble que tomé. Cambió mi forma de pensar acerca de todo. Y cuando me gradué de la Universidad de Harvard en 1990, fui a Silicon Valley. Y tengo un trabajo. Y he estado trabajando en tecnología desde entonces. DAVID J. MALAN: Ahora lo que Susan no mencionó en este video, que en realidad fue en su garaje que el propio Google era fundada por Larry y Sergey. Ahora también llegamos a nuestros amigos en code.org, una organización que en el último año ha sido hacer que la gente en particular entusiasmado con la informática y programación, en particular. Pero vale la pena señalar que la programación No es ciencia de la computación per se. La informática no es la programación. Más bien la programación es sólo una tool-- con la que todos ustedes será muy bien familiarizado por end-- del semestre de tal manera que no se puede aplicar sólo para cursos futuros en CS pero a cualesquiera campos de donde vienes, en las humanidades, ciencias sociales, naturales ciencia, o similares. En efecto, permitir que algunos otros ex alumnos y sus colegas hablar con la aplicabilidad del campo que le espera. BILL GATES: Yo tenía 13 años cuando me primero tiene acceso a una computadora. Jack Dorsey: Mis padres me comprado un Macintosh en 1984 cuando yo tenía ocho años de edad. Mark Zuckerberg: yo era en el sexto grado. ALTAVOZ 1: aprendí a codificar en la universidad. Ruchi Sanghvi: primer año de carrera, primero semestre, Introducción a la Informática. BILL GATES: Escribí un programa que jugó tic-tac-toe. DREW HOUSTON: Creo que era inicios muy humildes. Creo que el primer programa Me escribió pregunté cosas como, ¿Cuál es tu color favorito? O ¿cuántos años tienes? ELENA SILENOK: La primera vez que aprendió cómo hacer un círculo verde y un cuadrado rojo aparece en la pantalla. Gabe Newell: La primera tiempo que en realidad tenía algo venga y diga, hola, mundo. E hice un ordenador haga eso. Fue simplemente impresionante. Mark Zuckerberg: Aprender al programa de no comenzar como querer aprender todo de la informática o tratando de dominar este disciplina ni nada de eso. Simplemente comenzó porque yo quería hacer una cosa simple. Quería hacer algo que fue divertido para mí y mis hermanas. Y escribí este pequeño programa. Y entonces, básicamente, sólo añadido un poco a ella. Y luego cuando lo necesitaba para aprender algo nuevo, Lo busqué, ya sea en un libro o en Internet, y después se añadió un poco a ella. DREW HOUSTON: En realidad no es a diferencia de tocar un instrumento o algo o jugar un deporte. DAVID J. MALAN: Muy bien. Así que veamos ahora en realidad bucear un poco más profundo. ¿Cuáles son estas entradas y salidas que estamos hablando aquí? Así que ¿qué tal algo sencillo? Usted probablemente sabe, incluso si usted tiene ninguna familiaridad con la informática alguno, que las computadoras utilizan de alguna manera y entiende sólo ceros y unos. Pero, ¿cómo puede posiblemente ser que teniendo en cuenta lo computadoras de escritorio y computadoras portátiles por igual tanto de la actualidad puede hacer? El ADN del día, el único alfabeto que entiendan es un cero o un uno. Bueno, considere esto. Nosotros, los humanos, tendemos a utilizar el sistema decimal. "Diciembre", es decir 10. Y eso es 10 porque tenemos 10 dígitos, del 0 al nueve. Ahora ordenadores, por el contrario, tienden a utilizar binario. "Bi", que significa dos. Así que ellos tienden a usar sólo cero y uno. Pero resulta, que incluso sólo con ceros y unos, que es suficientemente grande alfabeto con la que representar más cualquier pieza de datos que desea, si se trata de un número, si se trata de una carta, ya sea un gráfico o vídeo en la pantalla. Consideremos, por ejemplo, cómo los seres humanos típicamente interpretar este número aquí. Esto es sólo tres dígitos, uno, dos, tres. Pero sabemos que este número innatamente ahora como 123. Pero ¿por qué es eso? Bueno, si usted piensa de nuevo que tal vez la escuela primaria, es probable que se les enseñó a pensar estos números como estar en columnas, donde el uno es en los cientos lugar, los dos está en el lugar de las decenas, y los tres es en el lugar de las unidades. ¿Por qué es que realmente útil? Bueno, pensar en el super simple aritmética que todos hemos sido haciendo desde hace años. Efectivamente, si tienes uno en el lugar de las centenas, usted hace la matemáticas rápida 100 por 1 más 10 veces 2-- porque dos está en las decenas lugar-- plus 1 veces 3-- porque tres es en el lugar de las unidades. Así que, por supuesto, si nos realmente multiplicar esto, lo que realmente estamos representando con éste pattern-- dos tres-- es 100 más 20 más 3, que, por supuesto, es 123. Ahora binario, y las computadoras realmente, fundamentalmente hablar el mismo idioma lo que hacemos. Sólo tienen un alfabeto más pequeño. Así que los ordenadores sólo tienen ceros y los que disponen. Así, mientras que los seres humanos tienen esencialmente potencias de 10 en cada uno de estos places-- 10 a la cero, 10 a la una, diez a los dos, que le da 110 y 100 respectivamente. Debido a que los ordenadores sólo tienen dos valores que puedan entender, cero y uno, tienen que utilizar diferentes valores de en estas columnas, una, dos, cuatro. Y si seguimos adelante, ocho, 16, 32, 64, y así sucesivamente. Pero el patrón y el mentalidad es exactamente el mismo. Así por esta lógica, cualquier persona, ¿cómo Me ocupo de lo que representa el número uno en binario? Si nunca has pensado en esto antes, ¿qué dice tu instinto? AUDIENCIA: Una. DAVID J. MALAN: Una. Exactamente. Sólo necesitamos un uno en la los lugar porque los ceros suficiente para darnos ni un cuatro ni un dos. Así que una veces uno es igual a uno. Ahora las cosas se ponen un poco interesante. Si yo quiero representar en binario el número dos-- pero, de nuevo, incluso si usted nunca ha hablado este idioma antes, ¿cómo nos representamos en binario el valor de los seres humanos conocen como dos? Cero uno cero. Sólo hay que poner el uno en el la columna que lo desee. Ahora se está haciendo bastante fácil probablemente ahora. Así que si quiero representar tres-- no hay ninguna columna de tres. Así que, de nuevo, ahora puedo agregar estos valores juntos poniendo un uno aquí. Así que 2 veces 1 más 1 veces 1 es, por supuesto, 3. Ahora las cosas se ponen un poco de diversión en que los que ahora se convierten en ceros. Y para representar cuatro, me sale esto. Y si incrementamos lentamente aquí-- que habría cinco. Esto sería seis. Esto sería siete. Pero ahora me parece que tienen ejecutar en un problema. ¿Cómo podría yo ir sobre lo que representa eight-- sería el siguiente valor. Sí, por lo que necesitamos un nuevo bits. Y, de hecho, si no tienes escuchado esta frase antes, pedacitos, eso es sólo la abreviatura de dígito binario, cero o uno. Y así sucede que representar a sólo tres de esos pedacitos aquí. Pero si tuviera una forma de no almacenar tres diferentes bits, pero cuatro, seguramente yo podría representar ocho, y luego nueve, y luego 10, e incluso más y más alto. Pero que luego llama en tela de juicio la forma en que podemos ir sobre la representación de éstos las cosas en el primer lugar. Es una cosa para dibujar ellos aquí en una diapositiva, pero ¿cómo representarlos si usted es un dispositivo mecánico? Lo que está haciendo un equipo para representar a las entradas y salidas que fundamentalmente definir cómputo al final del día? Bueno, ¿qué pasa con algo super simple como esto? Es sólo una bombilla. Y puedo activar este bombilla para ir en girando algo de electricidad en y permitiendo que los electrones a fluir a través, que cambia su estado o su valor, por así decirlo. Por ejemplo, este es una lámpara de escritorio de la vieja escuela aquí con uno de tales bombilla de luz en el interior de la misma. Y en este momento no es realmente haciendo algo útil. Pero tan pronto como me conecto a un enchufe eléctrico y después utilizar esta switch-- o incluso podemos llamarlo un transistor o pensar en él como tal-- Ahora puedo representar tanto este valor, donde la bombilla de obviamente, fuera de, o este valor. Este valor o este valor. Este valor y así sucesivamente. Así interior de una computadora, presumiblemente, son piezas mucho más pequeñas de hardware, pero que al final del día simplemente tener utilizar electricity-- quizás capturar it-- y luego mantener, ya sea algo o mantener algo fuera. Por supuesto, esto no es particularmente interesante que hacer con una sola bombilla. De hecho, ¿qué altura puedo contar en binario con esta lámpara de escritorio aquí? AUDIENCIA: Una. DAVID J. MALAN: Uno, ¿no? Necesito más lámparas de escritorio si realmente quiere contar más. Pero podemos hacer algo mejor que eso. Debido a que las bombillas que hemos puesto en estas cosas son bombillas realmente elegantes que antaño le permitía. Y en realidad son bombillas conectadas en red. Y racimos de empresas hacer estas cosas en estos días. Pero resulta que este en particular viene con una característica mediante el cual usted puede cambiar sus colores. Así, por ejemplo, si usted adornado su habitación de la residencia con algunos de ellos la luz bombillas, dependiendo de su estado de ánimo, dependiendo de quién entra, dependiendo del clima, dependiendo de la hora del día, en realidad se puede cambiar los colores de las bombillas de su habitación. Y eso es porque este la luz bulbos y otros como él tienen lo que hay llamada API, una aplicación interfaz de programación, que Es un tema con el cual usted estará bien familiarizado con el final del semestre. Y esto es sólo una suposición, manera críptica de decir, usted puede programar este la luz bombillas para hacer su hacer una oferta. Usted puede enviar mensajes al igual que usted, un ser humano, puede enviar un mensaje a un servidor web diciendo dame noticias de hoy o darme mi correo electrónico. Usted puede enviar más arcana mensajes a estas bombillas decir, encender y apagar. Pero eso no es tan interesante. Se puede decir, encienda el rojo, encienda verde, encienda azul, todos con la misma bombilla. E incluso se puede, con un poco más inteligente, dicen, entrégate a azul cuando es un día sombrío exterior, por ejemplo. En realidad, puede parchear en una API de tiempo y saber cómo está el tiempo, o el tiempo de días, u otros factores desencadenantes. Así, de hecho, dos de los Propios miembros del personal del CS50, Dan Bradley y Ansel Duff aquí, amablemente procuró nosotros un montón de estas bombillas. Y construyeron de CS50 primeros bulbos nunca binarios, donde hemos representado aquí-- con estos pequeños magnets-- juguetón los diversos marcadores de posición que nosotros aludido hace sólo un poco. Así que hasta aquí es el las lugar, dos, cuatro. Y no hemos visto más que eso. Pero, por supuesto, que son potencias de dos. Ocho, 16, 32, 64, y 128. Así que si yo ahora quiero ser un poco más lujoso que el uso de este interruptor de la vieja escuela, Que tengo aquí en este iPad una interfaz super simple que Dan Bradley, ex estudiante y compañero que ahora enseña, programado usando algo de HTML y JavaScript, que son marcas y programación idiomas respectivamente. Y usted puede probablemente ver-- incluso en la parte posterior-- hay una gran ventaja y un gran inconveniente, más un botón para cada una de estas bombillas. Y lo que esto me va a permitir a no es, por ejemplo, haga clic en el signo más y ahora representan, de Por supuesto, ¿qué número? Una. Y puedo golpear de nuevo. Dos. Tres. Cuatro. Cinco. Seis. Siete. Y aquí ahora tenemos que rollover, pero tenemos un cuarto bit de este tiempo, así que ahora tenemos ocho. Así que podríamos hacer esto desde hace bastante tiempo. De hecho, en un aparte, qué tan alto podríamos contar? ¿Alguien? AUDIENCIA: 255. DAVID J. MALAN: 255, ¿verdad? No se preocupe demasiado acerca de los cálculos por ahora, pero eso es un número bastante decente. Pero en realidad no sólo obligado cuántas piezas de información, como una carta, o un gráfico que podríamos representar. Pero no importa por ahora. Voy a seguir adelante y de que estén apagados. Y si pudiera, me gustaría pedir voluntario, nuestro primer volunteer-- oh, hello-- en el escenario. El problema es que tienes que ser apareciendo cómoda, ya que claramente se encuentran en frente de todos sus compañeros de clase, así como en el Internet. Y déjame mirar un poco más allá el-- ¿qué hay aquí en la camisa blanca? Y de la mano hacia arriba. Vamos arriba. Cuál es tu nombre? AUDIENCIA: Jackie. DAVID J. MALAN: Jackie. Jackie, vamos arriba. Así que lo que hay también en este iPad es un botón llamado Modo de juego. Y este modo de juego es me va a permitir a la entrada de antemano una cifra determinada número, los números de los seres humanos somos familiarizados. Y entonces serás retado aquí para utilizar los botones por una top-- para cada uno de estos bulbs-- de entender realmente a cabo el patrón de bombillas que representa el número en cuestión. Y lo siento, ¿cuál era su nombre? AUDIENCIA: Jackie. DAVID J. MALAN: Jackie. Bien. Encantado de conocerte. Así que déjame ir por delante y el programa de para que el mundo vea el número 15. Vamos a mantenerlo pequeño al principio aquí. Y yo voy a entrar en el Modo de Juego. Y yo voy a especificar, nos dan el número 15. Okay. Y ahora con todo el mundo watching-- si desea destacar tal vez de esta manera, porque va a alinear up-- seguir adelante y alternar los ocho botones a lo largo de la parte superior para encender las bombillas en o fuera como mejor le parezca. AUDIENCIA: OK. DAVID J. MALAN: Y sin trampas golpeando más 15 veces. Oh, vamos a hacer eso. AUDIENCIA: Oh, espera. Lo siento mucho. DAVID J. MALAN: También puede activar las bombillas en forma individual con cada uno de estos botones en la parte superior. AUDIENCIA: Oh, OK. Así que sería como-- DAVID J. MALAN: OK. Así que ahora tenemos ocho. Así que vamos a hacer una pausa para el audiencia a participar aquí. ¿Qué número es Jackie actualmente representan? 11. Así que ya casi estamos allí. Y excelente. Así que tenemos nuestro primer ganador. Felicitaciones. Y nosotros pensamos que lo tienen algunos regalos fabulosos. Si desea ser uno de esos Dorm Room aquí en el campus, puede usted tener un proyecto final utilizando ahora esta API, gracias a Jackie. Así ahora-- [Aplausos] --si pudimos, una más tales alrededor de este. Oh, ahora todo el mundo quiere algunas bombillas. Para la llamada edición hacker, vamos a la rampa hacia arriba un-- oh, sí, evasivo. Creo que está llegando ahora si tu mano va hacia abajo. Cuál es tu nombre? AUDIENCIA: Alex. DAVID J. MALAN: Alex, ven aquí. Así que para Alex, vamos a programa en un número ligeramente más grande. Tal vez en orden. El número 50. AUDIENCIA: OK. DAVID J. MALAN: Pero, como Yo dijiste-- y es posible que quiero estar aquí por lo que los botones se alinean como era de expect-- pero lo hice llamar a esta la edición de los piratas cibernéticos. Entonces-- buena suerte! [Risas] Usted será capaz de convertir a retirarse si usted-- Aceptar. Excelente. Maravilloso. Felicitaciones. [Aplausos] Supongo que debería pagar. Felicitaciones a Alex también. Okay. Así que la comida para llevar definitiva aquí es de esperar, francamente, la simplicity-- la sencillez con la que usted puede conseguir un poco de luz agradable bombillas, al parecer en [inaudible]. Pero ellos representan, en última instancia, las mismas ideas con la que los seres humanos somos ya demasiado familiar. Entonces, ¿qué podría la próxima paso sea en la progresión de tratar de hacer algo interesante con los datos y en representación de los insumos que no son sólo números, pero son tal vez las letras o más? Bueno, resulta que la mundo de la informática, durante muchos años, simplemente adoptado una arbitraria sino una estándar consistente que asigna números a las letras del alfabeto. Por ejemplo, aquí hay un extracto de esa asignación. Se llama Ascii. A-S-C-I-I. Y eso es simplemente una tabla que asigna letters-- mayúsculas en este caso-- números decimales. Pero ¿cuál es la implicación? Bueno, si usted realmente quiere que lo represente algo así como un correo electrónico o un poco de texto en una página web, obviamente quiere mostrar las letras humanos de la alfabeto, no números. Así que dependiendo de la contexto del programa que un usuario está usando, si es un navegador web o cliente de correo electrónico, números sin duda puede ser interpretado como letras. Es decir, los patrones de bits pueden fácilmente ser interpretado como letras. Y así lo que podemos tener es la letra de un ser representado como 65, B siendo representado como 66. Así que si tenemos un super palabra corta, como hi, lo que un ordenador haría en última instancia, tienda en decimal, pero en realidad en binario, usando una secuencia de bits, el aprovechamiento un poco de electricidad de alguna manera, serían los dos números 72 y 73. Pero el patrón de bits que representa esos valores. Así que estos son, entonces, ¿cómo podemos representar nuestras entradas y salidas. Y baste decir, que podemos hacer representaciones más complejas en última instancia, con cosas como gráficos, videos, música y más como veremos más adelante este término. Así que le toca a continuación, algoritmos, estos conjuntos de instrucciones con la que estamos resolviendo problemas reales. Estamos pasando de insumos a los algoritmos. Y esos algoritmos están produciendo salidas, salidas de esperar correctas y es de esperar, también, recogida eficiente salidas. En otras palabras, es una cosa implementar algo correctamente. Es otra cosa para poner en práctica algo bien o de manera eficiente. Por ejemplo, una demostración que somos aficionados a en el curso es éste. Pero estas cosas están cada vez más difícil de encontrar. Pero esto es de hecho una vieja escuela guía telefónica, dentro de los cuales son 1.000 páginas, más de nombres y números de teléfono. Y si quería mirar hacia arriba alguien en este directorio, Yo podría simplemente hacer una algoritmo muy ingenuo. Yo podría abrirse a la primera página, y Podría empezar a buscar, por ejemplo, alguien llamado Mike Smith. Y si él no está en la primera página, avanzo a la segunda, y luego a la tercera, y luego a la cuarta, y así sucesivamente, hasta que por fin encontré Mike Smith. Ahora es cierto que el algoritmo? AUDIENCIA: Si. DAVID J. MALAN: Si. Si él está ahí, voy a finalmente encontrarlo. Pero no es sin duda muy eficiente, sin duda no es rápido, porque, Dios mío, ¿por qué estoy perdiendo el tiempo flipping a través de todas estas páginas cuando podía ciertamente hacer esto físicamente más rápido? Bueno, una ligera optimización, por lo que hablar, podría ser no una página a la vez, pero dos, cuatro, seis, ocho, 10. Aún correcta? AUDIENCIA: No. DAVID J. MALAN: Así que no si para ejemplo saltar sobre Mike Smith. Pero siempre y cuando hago una copia de pedal una página, si lo exceso, tal vez podríamos corregir lo de otro modo podría ser una de gotcha. Pero, ¿es mejor? ¿Es más rápido? Quiero decir, sí. Es, literalmente, el doble de rápido si lo hago dos páginas a la vez. Así que si yo tenía originalmente 1.000 páginas, Ahora sólo tengo que dar la vuelta 500 veces, no está totalmente de 1.000 páginas para obtener potencialmente en el peor de los casos hasta el final del teléfono libro, donde alguien como Mike Smith o alguien con un nombre más adelante podría ser en realidad. Pero, por supuesto, los seres humanos no son ciertamente va a hacer que, sin duda no en este momento de nuestras vidas. ¿Qué es un razonable humano probable que va a hacer? AUDIENCIA: Ir directamente a The9 de S. DAVID J. MALAN: Ir directamente a los de S? ¿Cómo puedo ir directamente a los de S? AUDIENCIA: Rip por la mitad. DAVID J. MALAN: Bueno, no hay marca. Así que, sí, si no eran de hecho una etiqueta o una lengüeta pegajosa para S, debemos saltar a la derecha allí. Pero es bastante inocuo. Así que lo mejor que puedo hacer es más o menos a la sección S o tal vez más o menos en el medio. Pero el punto clave ahora-- y la intuición que usted ha tomado para otorgado por años probablemente-- es que lo que haces ahora saber acerca de este problema? AUDIENCIA: [inaudible] DAVID J. MALAN: Mike Smith es sin duda no en esta mitad del problema porque Smith viene después de la mitad que es aproximadamente la sección M, parece ser. Así como usted puede ser que haya visto en Visitas, ahora podemos, literalmente, romper este problema a la mitad. AUDIENCIA: Woo! DAVID J. MALAN: Es cada vez más fácil y más fácil. [Aplausos] Ahí lo tienes. [Risas] Y ahora, fundamentalmente, tienen el mismo problema, pero es, literalmente, la mitad de grande. Todavía estoy buscando a Mike Smith. Y me atrevo a decir, que todavía puede buscarlo en la misma forma, dividir el problema en un medio de nuevo, arrancando de nuevo el problema en medio, que ahora me deja con un problema cuarto del tamaño, tirar drásticamente que la mitad de distancia, y repetir este proceso una y otra vez y otra vez, mirando hacia abajo en cada punto para ver si Mike Smith está en la página en cuestión. Ahora, si lo hago bien, en última instancia, me encuentro a mí mismo con sólo una página en la que Mike Smith es si él está de hecho en la guía telefónica. Por supuesto, yo podría Nunca más llamar Mike. Pero el punto aquí es que si empezamos con 1.000 páginas, mi primer algoritmo, voltear la página, tal vez 1000 veces-- definitivamente menos porque es un nombre de S y no un nombre Z, pero como tantos como 1.000 páginas potencialmente. Segundo algoritmo, mejor. 500 páginas. En tercer algoritmo, sin embargo, cuántos pasos ¿verdad tomar para dividir una página de 1000 libreta de teléfonos en medio de esa manera? 10, más o menos. Así que sólo por mover de un tirón a través de ese guía telefónica, el buceo y la conquista, por así decir, 10 veces, voy a hacer mi camino hacia abajo a apenas una sola página. Y así podemos captar esta intuición ahora un poco gráficamente si solamente se considera esta super simple gráfico. Estamos en el eje x, u horizontal eje, es el tamaño de mi problema, el número de páginas de la guía telefónica. Y científicos de la computación en general, como para llamar el tamaño de un problema n, donde n es sólo una variable que represents-- en este caso-- número de páginas. El eje y vertical, o, aquí está va a ser el momento de resolver, tal vez el número de vueltas de página, Tal vez el número de segundos o minutos, cualquiera que sea su unidad de medida es. Y por lo que esta línea roja representa el primer algoritmo, porque hay una una a una relación entre el número de páginas y la cantidad de tiempo que tarda. Si Verizon duplica el número de páginas de la guía telefónica el próximo año, mi carrera tiempo-- la tiempo necesario para ejecutar que primero algorithm-- se duplica en el peor de los casos. Pero el segundo algoritmo, donde estoy volteando por dos, requiere menos tiempo para un problema determinado tamaño. Así que si tengo esto muchos Aviso páginas aquí-- que la línea amarilla sugiere menos tiempo para resolver. Y, en efecto, representa, vamos a decir, n más de dos. Pero lo que es la forma de la tercera y la curva final, va a parecer? Sí, ha hecho ir a Mira-- I no sabe lo que ibas a decir. Pero vamos a ver lo que ibas a decir. AUDIENCIA: Al igual que. DAVID J. MALAN: Va a parecer esto, un exactly-- slope-- logarítmica por el que usted tiene esta curiosa pendiente. Ya no es una línea recta. Y lo que es convincente acerca de esto es que a pesar de que el gráfico está ahora cortada, se puede extrapolar en su importa que esa línea verde no es va a aumentar en altura de todo lo que mucho a medida que avance aún más por ese eje horizontal. De hecho, Verizon, por ejemplo, podría duplicarse el número de páginas en el teléfono libro entre este año y el próximo año de 1.000 a 2.000 páginas, pero no es gran cosa. Con esta tercera y última, hay un algoritmo intuitivo de dividir y conquistar. Se me va a tomar cuantas más pasos el próximo año para encontrar a alguien gustaría Mike Smith? AUDIENCIA: Una. DAVID J. MALAN: Sólo hay una. Y pueden cuadruplicar él, es me va a tomar sólo dos pasos más y así sucesivamente. Y por lo que esta es una prueba de lo cierto cuidado diseño y un poco de aprecio por lo sus entradas son pueden hacer aún mejor. Ahora estamos engañando un poco en el sentido que estamos aprovechando una suposición. ¿Cuál es mi hipótesis acerca de nuestro directorio telefónico que me permitió dividir y conquistar de esta manera intuitiva y sigue siendo correcta? AUDIENCIA: [inaudible] DAVID J. MALAN: Si. Por lo que se le ordenó. Fue ordenada alfabéticamente por la empresa guía telefónica. Si estuviera en orden aleatorio, que sería un infierno de una guía telefónica, pero ciertamente no lo haría prestarse a que el algoritmo Yo solía, porque nunca lo haría sólo sucederá en toda Mike Smith si se mantenía la división en medio de esa manera por casualidad. Así que ahora vamos a formalizar lo que es claramente intuitiva. Así que algo que se llama pseudocódigo es donde vamos a comenzar algunos de nuestros problemas iniciales. Y esta es una forma genérica de describir un algoritmo o un programa de ordenador, no usando C o C ++, o Java, o cualquier lengua específica, pero sólo mediante Inglés, con que cualquier ser humano puede estar familiarizado. Y podríamos escribir el pseudocódigo para este problema de la siguiente manera. Paso uno, recoger la guía telefónica. Paso dos, abierta a mediados de la guía telefónica. Paso tres, mirar los nombres. Paso cuatro, si Smith se encuentra entre nombres-- Y ahora se trata de una constructo interesante. Es un punto de decisión. Es un tenedor en la carretera, si será, una rama, por así decirlo. Así que voy a sangrar sólo por convención step-- no cinco-- que es por ejemplo, voy a llamar a Mike. Así que esta sangría, totalmente convención humana arbitraria, pero es simplemente la intención de transmitir semánticamente que si Smith se encuentra entre nombres, entonces debo llamar a Mike. Mientras tanto, en el paso seis, previo aviso que el sangrado se ha ido. Así lo demás es otro tenedor en el carretera, el otro camino que podría viajar. Así lo demás si Smith es anteriormente en el libro, lo que es mi siguiente paso, probablemente, va a estar aquí? AUDIENCIA: Usted va a la izquierda. DAVID J. MALAN: Sí, así que ir a la mitad izquierda de la guía telefónica. Tire a la basura la mitad derecha si Smith es anterior en el libro. Así abierta a la mitad de la mitad izquierda del libro. Y luego paso ocho, pase a la línea de tres. Y esto es un bucle curioso que soy inducir, una recursividad por así decirlo. Pero más sobre esto en el futuro. Estoy usando mi mismo algoritmo, mi misma pseudocódigo, para resolver el mismo problema de nuevo porque lo único que ha cambiado es la magnitud del problema, no mi objetivo, y no a la persona Yo estoy buscando. Así que puedo volver a utilizar el algoritmo que ya he definido. Porque si Smith es tarde en libro-- te pueden adivinar-- abierta a la mitad de la mitad derecha del libro. Y de nuevo, ir a la línea de tres. Else-- lo que es la última línea en este programa va a ser? Si él no está entre los nombres en la página que estoy en, si no es a principios de el libro, y no más tarde de en el libro, ¿qué sé yo es verdad lo de Mike Smith ahora? AUDIENCIA: No está en el libro. DAVID J. MALAN: No está en el libro. Así que lo mejor que puedo hacer es darse por vencido y dejar de este programa. Bien. Así que en este punto, vamos a echar un rápido recorrido por algunos de lo que le espera. Y, de hecho, me acompañan aquí por un número de personal CS50. Si esta gente pudiera todo unirse a mí aquí en el escenario. [Aplausos] Eso sí, esto sólo es un subconjunto de personal CS50, ya que cada año tenemos cerca de 100 miembros del personal miembros en los roles de los asistentes del curso, Teaching Fellows, y más. Vamos arriba. Así que van a unirse a nosotros aquí torpemente por un momento mientras damos un revelará las últimas novedades usted debe esperar aquí en el curso. Así que, ante todo, tenemos SAT / UNS como la opción de clasificación en el curso. Esto está destinado deliberadamente ser una opción mediante el cual si usted es un poco incómodo por estar en el curso, y es que temes failure-- incluso si francamente fracaso significa perjudicar a su GPA, conseguir un B y no un A-- que es precisamente lo que, sin duda para una pasarela curso como CS50 y otro cursos de iniciación, esta opción de clasificación tiene por objeto permitir. Estoy totalmente de animo students-- especialmente si por el fence-- para iniciar el Por supuesto SAT / UNS, incluso permanecer SAT / UNS. Pero que sin duda puede cambiar a una carta grado al quinto lunes en el término. Francamente, cuando yo era un estudiante de primer año en 1995, Yo mismo ni siquiera tomé CS50 porque no he tenido el valor suficiente al paso realmente el pie en el aula. Parecía un dominio demasiado desconocido para mí y realmente sólo para esos amigos míos, francamente, que había sido la programación puesto que eran de seis o tal vez 10 años de edad. Y fue sólo porque yo era capaz de tomar CS50 en mi día en la versión equivalente de SAT / pase UNS-- / conmutación por recuperación en el día-- que incluso me llevó 50. Y de alguna manera u otra, estoy aquí de nuevo con ustedes hoy. Ahora mientras tanto qué más debe tener en cuenta sobre 50 es la inscripción simultánea. Contrariamente a los rumores que usted puede haber oído, usted puede, de hecho, al mismo tiempo inscribirse en CS50 y otra clase que se reúne al mismo o algún solapamiento tiempo que las conferencias de CS50 aquí. Ver el plan de estudios de las indicaciones de la aplicación de los mismos. Conferencias, por su parte, en contra de lo que es oficialmente en el catálogo, en general, sólo se reunirse por sólo una hora. En ocasiones podemos correr un poco más largo. Pero tenga en cuenta que el objetivo en las conferencias de CS50 es para ofrecerle una visión conceptual, con suerte algunas demostraciones, tal vez incluso algunos regalos, de lo que espera de la semana que sigue. Y así, en conferencias, exploraremos esos temas y ejemplos juntos, con lo que los estudiantes en el escenario, y personal en el escenario tan a menudo como podamos, por sólo un par de horas cada semana. Secciones, por su parte, serán ofrecido por estas personas aquí-- muchos de ellos la enseñanza de los becarios, algunos de ellos voluntad curso assistants-- estar sucediendo semanal. Y lo que es clave para mantener en cuenta es que no tener-- diferencia de la primera Noches, la música class-- diferentes pistas de secciones para estudiantes menos cómodos, más cómodo, y en algún punto intermedio. Y, francamente, ¿sabes si que es menos cómodo. Y usted probablemente sabe si se siente más cómodo. Y si usted no está realmente seguro, usted es por definición, en algún punto intermedio. Así que cuando llega el momento de la sección en una semana más o menos, por el plan de estudios, le pediremos que esa pregunta. Y usted puede auto-seleccione Basado en su propio nivel de comodidad y estar con students-- estar con verde dots-- similar en el nivel de comodidad para usted. Mientras tanto, tenemos un problema establece, que en última instancia definir su experiencia en este curso. Están ofrecen normalmente en múltiples ediciones. Una edición estándar que más esperamos cada estudiante en el curso para hacer frente a sino también una denominada edición pirata informático que no ofrece ninguna forma de crédito adicional pura y simple, pero en realidad los derechos de fanfarronear decir que lo intentaste y corrija ediciones de hackers del curso que acercarse al material similar pero desde un ángulo más sofisticado. Lo que ofrecemos para el edición estándar, para, de nuevo, una súper mayoría de los estudiantes, no son sólo a pie-through, que son vídeos dirigidos por el personal del curso que realmente se puede caminar a través de la problemas de los cursos y posible diseño implementaciones. Y también, después de la hecho, ofrecer autopsias, por el que si usted se está preguntando cómo se puede tener o debería haber resuelto algunos problema, el personal docente le guiará a través de aquellos en el vídeo también. Mientras tanto, lo que le espera también son cinco días de retraso y el hecho de que vamos a dejar su problema más bajo establecido puntuación. Ciertamente Apreciamos que a cambio para la carga de trabajo que 50 Espera de ti, la vida se interpone en el camino a veces, si no cinco veces. Y así, esta ofrecerá que un poco de flexibilidad, la ampliación de su plazo de, por ejemplo, un Jueves al mediodía para un viernes a mediodía. Ver el plan de estudios para la detalles de implementación de los mismos. Ahora lo que espera ahora? Y sólo se producen a mí ahora cuánto tiempo Estoy teniendo ustedes estar aquí en el escenario. [Risas] DAVID J. MALAN: Pero vamos a llegar a el acabado culminante en poco tiempo. Así que lo que le espera en términos de los conjuntos de problemas? Bueno, tal vez un teaser de lo que todos lo hizo el año pasado con sus predecesores. En el primer conjunto de problemas el año pasado, hemos introducido Scratch, una gráfica lenguaje de programación que permite programar literalmente por arrastrar y soltar las piezas del rompecabezas, como estos, que son que recuerda a las construcciones verá sólo una semana por lo tanto, cuando cambiamos a una más tradicional idioma, conocido como C. El año pasado se procedió a este conjunto de problemas, que implica para la criptografía, la codificación de la información para que no gubernamental o amigos ' ojos que no quieren verlo. Codificado en aquí es un mensaje de que pronto será capaz de descifrar o de-scramble. Breakout es un problema establecido el año pasado, en el que utiliza estos nuevos programas encontrado habilidades para poner en práctica en realidad un juego wherein-- como usted puede recordar de childhood-- el objetivo era golpear a la ladrillos que están encima de la pantalla aquí, acumulando una anotar en el camino, e implementar sus propios algoritmos con la que esta solución en última instancia te permite jugar el juego. Mientras tanto, más tarde en el semestre, le daremos un diccionario de 143.091 palabras en inglés. Y serás retado para escribir un programa que deletrear cheques, documentos, por carga que muchas palabras en la memoria tan eficientemente como sea posible. Generalmente las picaduras que en contra de sus compañeros de clase si se opta en un poco de un desafío en tabla de posiciones para ver quién puede utilizar la menor cantidad segundos de tiempo de ejecución, y el menor número de megabytes de memoria, y en realidad afinando sus programas ser increíblemente eficiente de los recursos no el tiempo justo. El año pasado, también, nos fijamos en el final del semestre en la programación web. Y, en efecto, lo haremos de nuevo este años con múltiples conjuntos de problemas, la introducción a las técnicas y la mentalidad con la que se puede aplicar estos conocimientos de programación para páginas web, sitios web dinámicos, sitios web que realmente resuelven problemas y se comportan de manera diferente y no son simplemente estática sitios con información estática. El proyecto final en última instancia, definirá, sin embargo, el punto culminante del curso para los estudiantes, en el que usted será desafiado para implementar más nada de interés para usted, siempre y cuando de alguna manera dibuja sobre las lecciones del curso. Y como se vio en el vídeo en la salida, vamos a concluir el semestre con el CS50 hackathon, que si, poco familiar, comenzará a las 7:00 pm una noche y poner fin a las 7:00 am de la mañana siguiente. Alrededor de las 9:00 de la tarde, vamos a orden en la primera cena. Alrededor de la 1:00 de la mañana, vamos a segundo orden en la cena. Y si usted todavía está de pie a las 5:00 de la mañana, nos voluntad de autobús que a IHOP para el desayuno. La Feria CS50, por su parte, es un evento a la que más de 2.000 profesores, estudiantes, y el personal de todo el campus será venir a ver sus logros en el curso y la final proyectos y creaciones que cree en sus computadoras portátiles, computadoras de escritorio o bulbos quizás incluso ligeras. Mientras tanto, las horas de oficina y la estructura de soporte. Y ahora lo que hubiera sido un mejor momento para llevar a todos ustedes. El horario de oficina tendrán lugar cuatro noches a la semana durante varias horas cada noche con generalmente de 20 a 30 de la El personal del curso de servicio a la vez para ofrecerle íntima uno-a-uno oportunidades de apoyo con conjuntos de problemas del curso. Tutoría también será disponible, en particular para los estudiantes menos comfortable-- o se atreven a decir lo menos comfortable-- para quienes horario de oficina no son la más ambiente de consolidación y ciertamente no son la más libre de estrés. Especialmente cuando los plazos están presionando, vamos a vincular de manera proactiva que nosotros mismos con un miembro del personal para trabajar con en algún horario regular como sus necesidades y su horario lo permite. Y el personal. Permítame presentarle Davon, Rob, y Gabriel, los jefes de este año. Si a usted le gustaría cada decir-- [Aplausos] palabra --un. [Aplausos] Davon aquí es la gerente del curso, que significa en su papel de tiempo completo él ayuda con la ejecución y logística de CS50. DAVON: Sí, hola, chicos. Usted verá un montón para mí en las horas de oficina. Voy a estar enseñando secciones. Y si usted tira correos electrónicos por delante, Probablemente estaré respondiendo. Así que voy a ver a muchos de ustedes durante todo el semestre. Y bienvenidos a CS50. DAVID J. MALAN: Y ahora Gabriel, que mismo era sólo un estudiante de primer año el año pasado, pero desde hace un par de años tiene estado operando su propia versión del CS50 en Brasil, por el que descargó todos content-- del curso que está siendo claramente filmado y puesto online-- para que pudiera traducirlo a Portugués y luego enseñar a más de 100 de sus compañeros de clase sobre el transcurso de un par de años, enseñanza en su lengua materna plan de estudios del curso. GABRIEL: Hola. [Aplausos] GABRIEL: Hola, soy Gabriel. Soy el jefe de la TF curso. Y espero que te encantará CS50. Esto es CS50. DAVID J. MALAN: Ahora para Rob. Oh, usted quiere introducción? ROB: No, yo no lo sé. [Risas] DAVID J. MALAN: Y Rob Boden. [Risas] ROB: Hola, soy Rob. Este es mi quinto año involucrado con el curso. Cada año, es sólo una mejor y mejor clase, así que ustedes son claramente va a ser impresionante. Espero que todos se diviertan con ella. Voy a tener diversión con ella. Así que nos vemos después. DAVID J. MALAN: Y tiempo no permitirá nosotros-- [Aplausos] El tiempo no nos permitirá introducir todos en el escenario y todos sus colegas que está haciendo compras clases hoy. Pero permítame presentarle Belinda y CS50 Puzzle Día, que espera a esta El próximo sábado, que es el primero de los eventos a gran escala de golf. Este en particular significado para recalcar el punto que la informática es en última instancia, No se trata de la programación, sino más bien sobre la resolución de problemas de manera más general. Y puzzle día, como usted ver, le traerá y sus compañeros de clase juntos-- esperamos este sábado. BELINDA: OK. Hola, chicos. Así que gracias. Así como nuestro ilustre capitán Dicho esto, mi nombre es Belinda. Soy un estudiante de segundo año en Quincy Casa. Yo, al igual que ustedes, tomé CS50 año pasado, realmente me encantó. Tengo una debilidad por ustedes en la tercera fila. Y estoy orgulloso de decir que estoy ahora en una relación de compromiso con CS50 [inaudible]. Okay. Esa fue mi versión cojo de una broma. De todos modos, por lo que seguir adelante, sólo quería invitar a ustedes todo a la i-lab o urticaria HBS. Vamos a estar teniendo Puzzle días de 12:00 a las 3:00. Y es una gran oportunidad para usted chicos para satisfacer sus compañeros CS amigos, resolver algunos puzzles no-CS, como el capitán mencionado, y también comer un poco de comida gratis, ganar algunos premios increíbles, como tarjetas de regalo, $ 75 por persona, y también-- ¿qué era? Wii U o algo así? Wii U? Sí. Para nuestro sorteo. Impresionante. Así que me quedaré por aquí después de clase. Y si ustedes tienen alguna preguntas, que me haga saber. DAVID J. MALAN: Y usted verá, más allá de esto no hay nada que hacer hoy. Establece el primer problema saldrá el viernes. Pero, para llevarnos a casa hoy, me gustaría presentarles a uno en concreto más miembro del personal, Colton Ogden aquí, cuyas manos están ahora protegida por encima de usted con este controlador MIDI para recalcar el punto más que la informática, también, tiene una aplicabilidad mucho más allá de la ingeniería y el tallo y la propia ciencia de la computación, se extiende incluso a dominios tales como la música. Colton tiene amablemente offered-- pensé uno de ellos iba a fijar el enfoque. Andrew, si pudiéramos convocar enfoque aquí sólo por un momento. ¿Qué ha hecho Colton de antemano es el programa este dispositivo, este pad de botones que ves imaginaste aquí, como un controlador MIDI, donde cada uno de esos botones está conectado a una nota musical en particular o un sonido, más en general una grabación, de tal manera que al jugar patrones de estas botones, tanto como los patrones de bits, puede representar a otro conceptos de más alto nivel. ¿Será capaz de última instancia para llevarnos a casa hoy? Sin más preámbulos, si podríamos atenuar las luces, y encienda la pantalla detrás de Colton. AUDIENCIA: Woo! DAVID J. MALAN: Este es CS50. [REPRODUCCIÓN DE MÚSICA] [Aplausos] Eso es todo por CS50. Nos vemos el viernes. Algunos pastel le espera en el crucero. [REPRODUCCIÓN DE MÚSICA]