¿Qué universidades están más enfocadas en CS teórica que en CS aplicada para estudiantes universitarios?

El departamento de Yale es conocido por ser más teórico. Nuestra clase de algoritmos está completamente basada en pruebas, sin codificación (obtienes suficiente codificación tanto en las clases de Estructuras de datos como de Programación de sistemas). Mi experiencia a nivel de pregrado en el departamento de CS de Yale se ha centrado en los fundamentos de la informática y realmente la he disfrutado. Muchos de nuestros graduados reciben grandes ofertas de compañías tecnológicas de primer nivel (Google, Microsoft, Facebook, etc.) o continúan con buenos programas de posgrado en CS debido al enfoque en una educación técnica rigurosa que enfatiza el plan de estudios de Yale CS. Los cursos han sido extremadamente rigurosos (con varios cursos básicos que tienen más de 20 a 30 horas de trabajo a la semana), pero los profesores han sido excepcionales.

Estos son algunos de los cursos que he tomado que se requieren para cada especialidad de CS.

La clase de Algoritmos de Dan Spielman (CPSC 365) me ha abierto la mente a tantas metodologías diferentes de resolución de problemas. Cada semana, Dan asigna varios problemas relacionados con un tema general (Programación dinámica, Divide y vencerás, Algoritmos codiciosos, Algoritmos de gráficos, etc.) en los que tienes que diseñar un algoritmo y demostrar su corrección. Escribir páginas y páginas de pruebas todas las semanas para demostrar la exactitud de mis algoritmos ha mejorado enormemente mis habilidades de razonamiento matemático (y la habilidad de LaTeX 😉). La clase también mejora en gran medida sus habilidades creativas de resolución de problemas, ya que los problemas requieren una gran cantidad de pensamiento innovador para resolver.

La clase de programación de sistemas de Stan Eisenstat (CPSC 323) fue la primera experiencia en su clase en la que tuve que diseñar e implementar arquitecturas para sistemas a gran escala. El curso se imparte en C (léase: sin retención y tiene que escribir cualquier estructura de datos que utilice usted mismo). Durante mi año, escribimos un shell completamente operativo (terminal, versión de Bash), implementamos un Archivador de archivos y el Algoritmo Lempel-Ziv-Welch para la Compresión de datos, y diseñamos un macroprocesador básico (similar a LaTeX). Sí, no nos enseñó PHP o Javascript, pero, francamente, estas cosas eran más geniales. Esta clase es conocida por ser uno de los cursos más largos en Yale, pero también es uno de los más gratificantes.

La clase de estructuras de datos de James Aspnes (CS 223) me mostró un recorrido por todas las principales estructuras de datos imaginables. Los conjuntos de problemas incluyeron implementaciones de Hash Tables, AVL Trees, Deques, Graphs with Breadth First Search y Heaps, entre otras cosas. Una vez más enseñado en C, esta clase obligó a los estudiantes a aprender el funcionamiento interno de cada estructura de datos cubierta sin agarre de la mano. También tenía un sorprendente conjunto de notas, si está interesado en leer más: http://www.cs.yale.edu/homes/asp…

Como puede C (juego de palabras), el plan de estudios de informática de Yale hace un trabajo fantástico al enseñar a sus estudiantes a comprender los fundamentos de la informática. Los cursos básicos enseñan conceptos que son clave para cualquier científico informático o ingeniero de software respetable. La mayoría de los estudiantes que logran completar el currículo requerido de CS en Yale no tienen el desafío de aprender otros idiomas (como Java, Python, HTML / CSS / Javascript, PHP, etc.) en el trabajo.

En mi opinión personal, es mucho más fácil aprender un nuevo idioma si ya conoces los fundamentos de la informática, que aprender los conceptos básicos de la informática si solo conoces un lenguaje de programación de alto nivel. Creo que el plan de estudios de Yale CS tiene éxito a este respecto.

Aquí hay una lista de cursos: Cursos de informática
Más información: Informática

CMI, Instituto de Matemáticas de Chennai. Echa un vistazo a su estructura del curso y la lista de profesores.

Caltech es definitivamente una teoría pesada. Incluso nuestra clase de algoritmos de introducción (CS38) está completamente basada en pruebas y no contiene codificación. Por supuesto, también tenemos una buena cantidad de clases de codificación, pero creo que Caltech ofrece una cantidad significativa de CS basada en la teoría como requisito de graduación.

EDITAR: Vaya, no leí la descripción de tu pregunta hasta después de que publiqué. Mi mala jajaja

Es probable que las escuelas que tienen muchos módulos obligatorios estén bastante equilibradas (porque necesitan asegurarse de que sus graduados puedan hacer lo que el mercado laboral quiera). Por lo tanto, si lo desea, vaya a las escuelas que le permiten personalizar su plan de estudios. Si no me equivoco, Harvard tiene muy pocos módulos obligatorios, lo que significa que puede sesgar su plan de estudios hacia la teoría.

La Universidad de Illinois en Urbana / Champaign, donde asistí a la escuela de posgrado, es fuerte en CS teórico.

U Chicago será uno.