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.
- ¿Qué opciones tengo si quiero estudiar astrofísica / cosmología en la India o los Estados Unidos? ¿Qué institutos ofrecen el curso?
- Cómo investigar sobre universidades alemanas para la ingeniería mecánica para los cursos de maestría y los detalles de admisión predicciones de la universidad
- ¿Cómo puede un título de una prestigiosa universidad ayudar a sus ingresos en la vida?
- ¿Cuáles son algunas desventajas en contra de completar un programa de pregrado de ciencias de la computación de cuatro años en dos años?
- ¿Qué universidad es mejor para una maestría en informática: Syracuse University o Illinois Tech? ¿Por qué?
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