Qué cursos debería hacer todo estudiante de informática?

Las asignaturas más fáciles de aprender fuera de la escuela son las que se pueden aplicar directamente a la resolución de algún problema existente en tu vida. Quieres hacer una página web? Ve a aprender JavaScript. Quieres escribir una aplicación para iOS? Ve a aprender Objective C. Cuando tienes un caso de uso claro en mente, la automotivación se vuelve mucho más fácil.

En cambio, el conocimiento obtenido de, por ejemplo, la lectura de un libro sobre algún tema teórico abstracto se olvida rápidamente (o nunca se aprende de verdad) cuando no puedes' encontrar una manera de ponerlo en práctica. Esto es lo valioso de un entorno académico. Los deberes, los exámenes, los proyectos trimestrales: estas cosas te obligan a lidiar con conceptos importantes que, a primera vista, podrían parecer insignificantes.

Estructuras de Datos y Algoritmos es un ejemplo perfecto de este tipo de asignaturas. Es tentador, después de leer un libro sobre algoritmos famosos, lamentar el hecho de que todos esos algoritmos se hayan implementado como llamadas a la API estándar. ¿Por qué tomarse el tiempo de entender el pivoteo aleatorio en quicksort cuando nunca necesitarás escribir un algoritmo de ordenación en tu vida? Es sólo después de unos pocos años, cuando te enfrentas a un problema que se parece sospechosamente a algo que viste en tu final de algoritmos, que finalmente aprendes el valor de ese conocimiento.

El curso antes mencionado es el grande. Si no tomas nada más, deberías tomar Estructuras de Datos y Algoritmos porque:

  1. No estarás motivado para aprender realmente el material fuera de un entorno académico
  2. Todas las entrevistas de las grandes empresas tecnológicas hacen preguntas que requieren conocimientos de este curso en particular
  3. Todos los temas de CS realmente interesantes de nivel superior requieren una comprensión firme del material de este curso
    1. A partir de ahí, todo es cuestión de lo que te interesa. Si quieres conseguir un trabajo como ingeniero de software, sugiero un curso de algoritmos de nivel superior y un curso de diseño orientado a objetos. Si eres como yo y te gusta la inteligencia artificial, está la minería de datos y el aprendizaje automático. La gente que le gusta vivir más cerca del metal podría gustar de los sistemas operativos o las arquitecturas informáticas.

Si usted está realmente en un programa de CS y quiere ser un científico de la computación bien redondeado, entonces, obviamente, usted debe aprender acerca de todas estas cosas en cierta medida, además de la teoría de autómatas y los principios de los lenguajes de programación, a continuación, se ramifican desde allí.