Dado que me gradué con un título de CS en 1985, esto puede ser un poco anticuado, pero …
Principios de lógica:
Matemáticas booleanas, básicamente. Realmente hundido en casa el valor de las tablas de verdad. Una gran ayuda para comprender no solo las operaciones lógicas utilizadas en la codificación, sino también para comprender el hardware informático que se encuentra en su nivel más bajo (digital), una colección de puertas lógicas.
Lenguaje ensamblador:
- No soy bueno hablando inglés. ¿Debería hacer un curso de comunicación masiva?
- Soy bueno en estadística y quiero saber sobre el curso de actuario. ¿Es bueno o malo?
- ¿Debo pasar mis cursos optativos gratuitos de francés?
- ¿Por qué la mayoría de los estudiantes de bhilwara están interesados en el curso de CA?
- ¿Cómo se supone que debes saber qué curso debes tomar?
Creo firmemente que todo ingeniero de software debería al menos estar expuesto al lenguaje ensamblador, si no es por otra razón que es el único lenguaje que requiere aprender sobre los componentes internos de la CPU (registros, banderas, etc.), qué son las diferentes regiones de memoria y para qué se usan, y muchos otros conceptos básicos de computación a los que nunca estarías expuesto a solo conocer idiomas de nivel superior. Una ayuda tremenda para desmitificar el hardware en el que se ejecuta nuestro código; después de aprender el lenguaje ensamblador, el hardware nunca más será simplemente una “caja negra”. Serás un programador mucho mejor en cualquier idioma después de aprender el lenguaje ensamblador.
Teoría de sistemas operativos:
Los sistemas operativos en los años 80 eran mucho menos complejos que en la actualidad, pero lo que más me atrapó de esa clase fue tener que crear una simulación de una multitarea (o multiproceso, lo mismo que solían llamarse “hilos” tareas “: gracias a Microsoft por crear otro nombre innecesario para algo para el que ya teníamos un nombre) Sistema operativo que muestra una representación gráfica del espacio de memoria de la computadora a medida que las tareas se creaban, ejecutaban y terminaban dinámicamente. Cosas muy chulas.
Teoría de la base de datos:
No es una clase de “base de datos”, sino una clase de teoría y “partes” básicas necesarias para crear un sistema de base de datos (piense: crear su propio reemplazo de SQL desde cero). Los diversos tipos de árboles de búsqueda y sus algoritmos relacionados, tablas hash, etc. Reforzaron de manera excelente lo que se aprendió en la clase Algorithms & Data Structures (otra clase excelente, pero solo solicitó los 4 primeros) al tener que estudiar y usar muchos varios tipos de estructuras de datos, especialmente listas vinculadas, algoritmos de clasificación, etc.