¡Esa es una buena pregunta!
Como estudiante en mi último año, definitivamente puedo ver el atractivo de saber en qué áreas enfocarme al completar un título en ciencias de la computación (ingeniería).
En cuanto a su pregunta, no creo que centrarse en ‘proyectos’ y ‘estructuras de datos y algoritmos’ tengan que ser tareas mutuamente excluyentes. La belleza de CS está en el hecho de que cada tema que aprende está entrelazado y puede aprovecharse en casi cualquier tarea / proyecto que intente.
- ¿Qué es el mapa de bits? ¿Dónde lo usamos?
- ¿Cuál es la mejor práctica y estructura de datos para la aplicación de autocompletado multilingüe?
- ¿Qué criterios se utilizan para contar un buen algoritmo?
- ¿Cuál es una buena explicación de la asignación de Dirichlet latente?
- ¿Cuántos números debajo de [matemática] 10 ^ n [/ matemática] hay cuyos dígitos suman [matemática] [/ matemática]?
Yo diría que, antes de graduarse o considerarse un experto en CS, hay algunos temas que debe conocer al menos con los que uno debería estar familiarizado. La mayoría de las universidades hoy en día comienzan con cursos de programación introductorios en un lenguaje (solía ser Java, muchas universidades se han mudado a Python y Javascript en los últimos años).
Una vez que el estudiante comprende los lenguajes de programación y las complejidades de la sintaxis, puede pasar a tareas más complicadas dentro de los mismos / diferentes idiomas (como C, C ++) exponiéndolo a una variedad de idiomas y dando la oportunidad para aprender a navegar su comprensión de los lenguajes de programación.
Luego vienen los cursos básicos clásicos, inconfundiblemente irremplazables:
- Estructuras de datos y algoritmos
- Análisis de algoritmos
- Arquitectura de la computadora (dado que estás en ingeniería informática, esto probablemente se ampliará en múltiples cursos)
- Programacion de Sistemas
Estos cursos son obligatorios. Los siguientes temas son muy recomendables y podrían considerarse básicos para muchos puestos para los que puede postularse. Esta lista definitivamente no es exhaustiva.
Un estudiante debe tener al menos uno o todos los siguientes en su haber:
- Compiladores
- Sistemas operativos
- Red de computadoras
Agregar una capa de seguridad nunca está de más;
- La seguridad informática
- Criptografía
Debe elegir el resto de sus cursos en torno a estos. Si desea especializarse en ML, o en cualquier otro campo, trate de no sacrificar tomar estas clases centrales de CS mientras persigue sus intereses. ¡Espero que esto ayude!