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
- 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)
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:
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%).