¿Qué hace que un programa universitario de Ciencias de la Computación sea ‘bueno’?

Aquí está mi opinión sobre lo que constituiría un buen plan de estudios de pregrado en informática:

  • Requisitos no CS
    1. Una secuencia completa de cálculo
    2. Matemáticas discretas
    3. Álgebra Lineal y Ecuaciones Diferenciales
    4. Probabilidades y estadísticas
    5. Una secuencia de física
    6. Composición inglesa
  • Requisitos de CS
    1. Introducción a la programación
    2. Teoría de la computación
    3. Algoritmos y Estructuras de Datos
    4. Complejidad computacional
    5. Principios de ingeniería de software
    6. Sistemas operativos
    7. Bases de datos
    8. Compiladores
    9. Redes de computadoras
    10. Diseño y construcción de grandes sistemas de software
    11. Lógica digital
    12. Arquitectura de Computadores
  • Optativas de CS ofrecidas en las siguientes áreas
    1. Inteligencia artificial
    2. Procesamiento paralelo y computación distribuida
    3. Aprendizaje automático y Big Data
    4. Procesamiento natural del lenguaje
    5. Gráficos por computadora y geometría computacional
    6. Robótica
    7. La interacción persona-ordenador
    8. Bioinformática
    9. Ingeniería de software

El tamaño y la experiencia de la facultad determinarán cuántas asignaturas optativas se ofrecen en las diferentes áreas. Si tiene interés en campos particulares, no debe evitar una escuela si no ofrece cursos electivos en cosas que no le interesan.

Respuesta corta: buena facultad y una sólida base teórica.

Respuesta más larga: definamos un buen programa de ciencias de la computación como aquel que prepara a los estudiantes para su carrera profesional elegida que involucra computadoras, donde eso podría significar una escuela de posgrado, convertirse en programador, etc.

La primera pregunta es, ¿quién te va a enseñar? Cuando obtuve mi título universitario en la Universidad de Colorado-Denver, mis clases incluyeron:

– Fundamentos teóricos de la informática con uno de los principales investigadores en algoritmos gráficos (con quien más tarde hice mi doctorado)
– Inteligencia artificial con la persona que creó la Geometría Lingüística
– Gráficos por computadora con un nuevo profesor que ya había recibido una subvención de medio millón de dólares

En algunas universidades, los programas de pregrado serán impartidos por estudiantes graduados que pueden o no enfocarse en esa área. (Como TA, enseñé Fundamentos de Ciencias de la Computación, que resulta ser mi área de interés, pero en general los TA no pueden elegir lo que van a enseñar). En otros, los expertos de primer nivel en el campo le enseñarán.

En cuanto a la segunda parte de mi breve respuesta: encuentro que muchos estudiantes que estudian ciencias de la computación realmente están más interesados ​​en la programación de computadoras y evitan las clases teóricas. Por lo tanto, cuando dirigía el laboratorio, a menudo ayudaba a los estudiantes que trabajaban en programas de Java y no tenían problemas con la parte de Java, pero no entendían cómo resolver el problema antes de programarlo. Entonces, diría que un buen programa debería requerir una clase teórica como Automata Theory que requiera que los estudiantes piensen en cómo resolver problemas. Requerir tal clase no garantiza que el programa general sea bueno, pero es un buen comienzo.