¿Qué cursos de informática me ayudarán más con la ingeniería de software real?

Depende de su escuela y de las clases que ofrece en su programa de CS. Sin embargo, en mi humilde opinión, creo que estos cursos son importantes para cualquier ingeniero de software, y probablemente se ofrecen en cualquier programa de CS:

1. estructura de datos y algoritmos.
2. Matemáticas discretas.
3. bases de datos.
4. redes.
5. sistemas operativos.
6. teoría de la computación.
7. arquitectura de la computadora.
8. Análisis y diseño de algoritmos.

Probablemente me haya perdido algunas otras clases importantes.
– 1 es muy importante para que tenga antecedentes sobre cómo organizar sus datos en su código para permitir un procesamiento rápido, el uso de matrices para todo simplemente no va a ser suficiente.

– 2 es importante porque le presenta algunas cosas útiles, como la escritura de pruebas, que es muy importante cuando quiere demostrarle a alguien que su programa hace lo que se supone que debe hacer. También estudias algunas otras cosas realmente útiles como la combinatoria y la teoría de grafos. Todos estos son muy importantes.

– 3 es importante porque las bases de datos están EN TODAS PARTES y el conocimiento de cómo diseñar y consultar bases de datos es extremadamente importante.

– 4 este es útil porque normalmente como ingeniero de software diseñarás programas que funcionen en una red y no solo en una máquina local. Por lo tanto, deberá comprender los sockets, la pila TCP / IP, los protocolos de red, etc.

– 5 este es útil porque aprende qué son los sistemas operativos y cómo funcionan, también aprende algunas cosas útiles como el subprocesamiento múltiple.

– 6 algunas personas pueden decir que es una exageración si solo quieres escribir software, pero creo que es muy útil, también muy divertido. Te desafía y te hace más inteligente. También aprende sobre autómatas (computadoras muy simples), expresiones regulares, gramáticas, máquinas de Turing, y también aprende algunas cosas sobre la complejidad computacional. Si toma esta clase, comprenderá qué problemas puede resolver una computadora y qué problemas no puede resolver. También comprenderá que hay ciertos problemas que no tienen un algoritmo eficiente para resolver, por lo que si enfrenta uno de estos problemas en la práctica, puede reconocerlo rápidamente y encontrar un algoritmo que se aproxime a la respuesta.

– 7 este es útil (aunque lo odio) porque aprendes qué es la computadora y cómo funciona. Aprenderá qué constituye el hardware de la computadora, cómo están conectados entre sí y cuál es el trabajo de cada componente. Probablemente también aprenderá algo de programación de ensamblaje en esta clase. El conocimiento de este material lo ayudará a escribir un mejor código.

– 8 esta es la versión avanzada de estructuras de datos y algoritmos. Estudiarás más estructuras de datos y técnicas avanzadas de diseño de algoritmos. Es extremadamente útil y las principales compañías como Google, Microsoft, Dropbox, etc. hacen muchas preguntas algorítmicas durante sus entrevistas.

Para mí, además de esos cursos fundamentales de informática, algunos cursos orientados a proyectos de la vida real también ayudan mucho. Por ejemplo, el curso Startup Engineering en coursera.org, proporcionado por la Universidad de Stanford, es bueno. Ingeniería de software SaaS en coursera.org proporcionada por UC Berkeley.