¿Cuáles son las partes más útiles de un plan de estudios de ciencias informáticas de pregrado típico y cómo puedo aprenderlas yo solo?

Creo que esta es una gran pregunta, una que realmente resalta el hecho de que las personas buscan comprender sus propios campos de manera más amplia al ramificarse.

Creo que para una persona que hace EE y tiene un interés parcial en la física, las mejores cosas para probar y aprender son las cosas que no aprende como EE que haría como compE major. Entonces, arquitectura, sistemas, SO, compiladores, computación paralela, ese tipo de cosas. Eso será realmente bueno para convertirlo en un trabajador altamente calificado que puede hacer mucho a nivel de hardware y software de bajo nivel. Eso es bueno si quieres ese tipo de habilidad, y para responder a tu pregunta directamente, creo que será más útil que aprendas eso, ya que ya tendrás una especie de experiencia. Una vez que tenga estos antecedentes, puede comenzar a ramificarse aún más a más disciplinas CS-y donde aún puede aprovechar su fondo pero contribuir de manera diferente. Algunos ejemplos que vienen a la mente son los ingenieros de infraestructura web y los expertos en informática de alto rendimiento. Particularmente en computación paralela, existe la necesidad de compiladores y middleware más avanzados, y creo que en este último es donde podría hacer la mayor diferencia.

Si está buscando hacer una especie de salto a algo que podría pensar que también es útil en lugar de solo una mirada de CS en su propio campo, creo que algunas de las cosas más esclarecedoras serán las cosas teóricas para hacer con los algoritmos, particularmente algo de teoría de grafos y lenguajes. Estos son realmente interesantes si eres un tipo matemático abstracto, pero es realmente un 50/50 si eres EE (si te gusta la física teórica, el procesamiento de señales, el análisis de Fourier y esas cosas, entonces creo que probablemente seguro decir que eres bueno con las matemáticas abstractas). Sin embargo, no estoy seguro de cuánto te beneficiarán a menos que también aprendas algunas habilidades de software. Particularmente, los algoritmos lo beneficiarán más si está buscando software, pero realmente estoy hablando de software de alto nivel. Su experiencia en EE probablemente será más adecuada para software de bajo nivel, incluso si le interesa hacer software.

Otro campo que está relativamente desconectado de su experiencia es la inteligencia artificial, a menos que cuente la robótica. De hecho, la robótica podría ser un campo muy interesante para usted, especialmente teniendo en cuenta que tiene una buena base matemática y que le interesa un poco CS. Si puede aprender a programar con habilidad en C, eso es aún mejor. La mayoría de las otras cosas de IA se realizan en un plano diferente y probablemente no serán útiles o fáciles a menos que tenga conocimiento de algoritmos, estadísticas y / o algunos de los aspectos más teóricos de CS. Pero nada está escrito en piedra.

De todos modos, como resumen, esto es lo que aprendería si fuera usted:

  • Aprende C muy bien (todo lo útil / relevante para ti se hace en C)
  • Aprenda sobre los sistemas operativos (kernel de Linux, escrito en C)
  • Aprenda sobre computación paralela y de alto rendimiento (MPI, GPU, subprocesos)
  • Aprende un poco sobre compiladores
  • Aprende robótica

Es difícil para mí decir lo que debes y no debes aprender. Creo que pareces una persona interdisciplinaria, y como compañero interdisciplinario, realmente odio decir qué debes elegir y qué será útil porque todo podría ser útil. Simplemente haga lo que le interese y le resultará útil, estas son solo mis opiniones.