REVISIÓN: Harvard CS50 Introduction to Computer Science

  • por

CS50 es una verdadera y completa introducción a la informática. El curso es impartido por el vivaz David Malan y está alojado en edX. Hay 13 semanas de instrucción con 8 conjuntos de problemas obligatorios (psets) y un proyecto final:

  • Semana 0: Binario. ASCII. Algoritmos. Pseudocódigo. Código fuente. Compilador. Código objeto. Scratch. Sentencias. Expresiones booleanas. Condiciones. Bucles. Variables. Funciones. Matrices. Hilos. Eventos. pset1
  • Semana 1: Linux. C. Compilación. Bibliotecas. Tipos. Salida estándar. pset1
  • Semana 2: Casting. Imprecisión. Interruptores. Ámbito de aplicación. Cadenas. Arrays. Criptografía. pset2
  • Semana 3: Argumentos de la línea de comandos. Búsqueda. Ordenación. Ordenación por burbujas. Ordenación por selección. Ordenación por inserción. O. Ω .Θ. Recursión. Merge Sort. pset3
  • Semana 4: Pila. Depuración. E/S de archivos. Hexadecimal. Cadenas. Punteros. Asignación dinámica de memoria. pset4
  • Semana 5: Heap. Desbordamiento del búfer. Listas enlazadas. Tablas de hash. Pruebas. Árboles. Pilas. Colas.
  • Semana 6: TCP/IP. HTTP. pset5
  • Semana 7: HTML. CSS. PHP (editar: Python sustituye a PHP en otoño de 2016). pset6
  • Semana 8: MVC. SQL. pset7
  • Semana 9: JavaScript. Ajax. pset8
  • Semana 10: Seguridad. Inteligencia artificial.
  • Semana 11: Inteligencia artificial, continuación.
  • Semana 12: Emocionante conclusión. (Alerta de spoiler: montajes, CS50 Family Feud, ¡pastel!) Proyecto final
  • Hay dos conferencias por semana. Cada clase tiene una duración de 50 minutos. Cada semana tiene una serie de vídeos más cortos también:

    • Walkthroughs: vídeos de 1-3 minutos de David Malan guiándote a través del código de ejemplo de la conferencia a un ritmo más lento
    • Sección: Vídeos de 5-30 minutos de un profesor de Harvard explicando los conceptos de la conferencia en profundidad
    • Cortos: Vídeos de 5-15 minutos de otros miembros del personal de CS50 que explican los conceptos de la clase con ejemplos adicionales (y a veces extravagantes)
    • Un corto de la semana 2 de CS50.

      Los conjuntos de problemas son «tareas de programación que te desafían a aplicar conceptos a problemas inspirados en dominios del mundo real.» Se califican mediante un sistema de calificación automatizado. Tu nota global para un conjunto de problemas es la fracción de pruebas que tu código pasa (1,0 = 100%).

      Sistema de calificación automática deCS50.

      Línea de tiempo

      No hay una estimación de horas de Harvard. Ellos afirman que los conjuntos de problemas tardan entre 10 y 20 horas en completarse. Con 8 conjuntos de problemas, ~5 horas de contenido de vídeo por semana, y un proyecto final, una estimación aproximada sería en algún lugar al norte de 200 horas. A mí me llevó 200 horas y cinco minutos, según el seguimiento de Toggl.

      El desglose semanal de mi línea de tiempo del CS50.

      Pasé como un día y medio averiguando cómo funciona el alojamiento web y editando este estúpido vídeo para mi proyecto final, ambas cosas no son necesarias, así que 185 horas más o menos es un número más reflexivo.

      ¿Vale la pena el precio?

      El curso es gratuito, así que sí. Tienes acceso a todos los materiales y a la calificación sin coste alguno. Probablemente el mejor curso de informática de pregrado del mundo está disponible para cualquiera que tenga una conexión a Internet. Eso sigue siendo genial.

      Probablemente el mejor curso de informática del mundo está disponible para cualquiera que tenga una conexión a Internet. Eso sigue siendo genial.

      Puedes pagar por un certificado verificado, que actualmente cuesta 90 dólares, si lo quieres por razones personales o profesionales.

      Aprendiendo C

      Las primeras 6 semanas de Harvard CS50 se pasan en C, un lenguaje notorio por su complejidad. Parece una elección curiosa, ¿no? Aunque es probable que no use mucho C en el futuro, estoy muy contento de que haya sido el lenguaje elegido por esta razón:

      La ventaja de saber C es que tienes una muy buena idea de cómo funciona un ordenador. No sólo cómo funciona su modelo de programación, sino cómo está dispuesta la memoria, y cosas así. Saber C también te permite apreciar cuánto menos trabajo tienes que hacer en un lenguaje de nivel superior… y el coste que supone trabajar en ese lenguaje de nivel superior.

      Los equivalentes de CS101 de Udacity y el MIT (vía edX) utilizan ambos Python. El curso de Stanford de Nick Parlante utiliza C, pero el nivel de dificultad de ese curso no está a la altura de los tres mencionados.

      ¿Qué tan desafiante es?

      Es difícil, pero es bien difícil. En ningún momento me sentí perdido. El curso está bien estructurado y hay toneladas de recursos adicionales. Básicamente, cada plataforma de medios sociales que puedas imaginar tiene una comunidad oficial de CS50 – encontré Reddit y Stack Exchange los más útiles.

      El personal de CS50 dice que la sección de punteros del curso es la más dura y tienen razón. Se trata íntimamente de punteros y asignación de memoria en pset5 y pset6. Hay que hacer gimnasia mental. Descubrir por fin los punteros es probablemente lo que más me enorgullece al salir del curso.

      Un tuit sobre pset5.

      Las 10-20 horas para cada conjunto de problemas son exactas. Tu código no funcionará y te frustrarás (sobre todo porque la mitad del curso es en C), pero la frustración es buena. La frustración conquistada es el aprendizaje.

      Dirigiéndose a los que odian PHP

      Edición (26/8/16): La edición de otoño de 2016 de CS50 sustituye PHP por Python, otro lenguaje de programación de alto nivel, lo que anula la siguiente preocupación.

      Estuve a punto de no matricularme en CS50 después de leer esta popular respuesta de Quora en relación a que CS50 enseña desarrollo web usando PHP:

      Confía en mí. NO quieres pasar tu tiempo aprendiendo PHP en 2014.

      Eso puede ser cierto, pero no es particularmente relevante para la decisión de tomar este curso. Sólo hay una semana de contenido lectivo y dos conjuntos de problemas que utilizan PHP. No se le dedica una cantidad de tiempo significativa. La función educativa de PHP es demostrar la utilidad de los lenguajes de programación de alto nivel.

      Una de las razones por las que utilizan PHP en CS50 es porque está fuertemente inspirado en C. En la semana 7, los estudiantes tienen una sólida base de C. Aprender PHP en ese momento no es difícil debido a las similitudes sintácticas.

      En resumen: no dejes que dos semanas de PHP te disuadan de esta experiencia de aprendizaje única.

      Pensamientos finales

      Me cuesta describir CS50 sin sonar hiperbólico. El curso fue tan condenadamente bueno. Este artículo en el Harvard Crimson es ridículamente dramático, pero es tan cierto. El contenido es atractivo. David Malan es demasiado bueno en su trabajo. El valor de la producción es absurdo. Honestamente, vaya a ver una conferencia sólo por el valor de producción. La edición de otoño de 2016 será aún más loca: van a grabar las conferencias en 6K y en VR.

      La primera conferencia de la edición 2015 de Harvard CS50.

      Ya he completado el CS50, el CS101 de Stanford y la mitad del CS101 de Udacity y sin duda la introducción a la informática de Harvard es mi favorita. Unas semanas después de la graduación, ya he tenido una legítima nostalgia. Fue toda una experiencia.

      Calificación: ★★★★★

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *