Punto interesante a tener en cuenta primero: ¡puedes hacer ambas cosas! No quiero decir que en un sentido de “puedes doble mayor y hacer las dos cosas”. Hay algunas universidades (como la Universidad de Nevada-Reno, también conocida como mi universidad) que tienen un título de Bachiller en Ciencias en Ciencias de la Computación e Ingeniería que incorpora cursos de Ciencias de la Computación e Ingeniería en Computación.
En cuanto a los pros y los contras de Computer Science vs Computer Engineering, creo que “pros y contras” es una forma sesgada de ver este debate. Es como preguntar los pros y los contras de la biología y la química: puede hacerlo, pero es mucho mejor ver que los dos campos tienen diferentes propósitos.
Con eso en mente, una nota rápida: hay 3 grados “directos” en ingeniería de software, y luego algunos otros que pueden llegar tangencialmente allí. El dirige: Ingeniería de Software, Informática, Ingeniería Informática. Algunos tangenciales: Matemáticas, Estadística, Economía, otros grados “cuantitativos”. Estos grados tangenciales no requerirán que realice los grandes proyectos de software que necesita para estar preparado, pero vale la pena señalar que están completos.
- Cómo ser contratado como desarrollador de software en Nueva York
- Deslocalización (negocios): ¿Cuál es el mejor sitio web donde puedo contratar programadores de diferentes dominios y hacer un seguimiento eficaz del trabajo de desarrollo?
- Para los estudiantes de Ciencias de la Computación, ¿por qué es tan diferente postularse a una escuela de posgrado que a las empresas?
- ¿Qué tan creíble se ve un candidato como desarrollador de software cuando se ha internado en una empresa comercial de alta frecuencia / algorítmica?
- ¿Qué tan útil es aprender el diseño VLSI?
En cierto sentido, puede modelar la relación entre informática, ingeniería informática e ingeniería de software en un gráfico jerárquico:
(Nota: Esto debería haber sido un gráfico dirigido en el que todas las flechas apuntan hacia abajo, pero hice esto en paint rápidamente y paint no tiene flechas bonitas)
Esta jerarquía no es una jerarquía de “cosas en la parte superior es mejor”, sino más bien “las cosas en la parte inferior son una aplicación de la parte superior”. Esto tampoco es un gráfico completo, en el sentido de que hay muchos más campos y temas y flechas que tendrían que colocarse para completar, pero esto proporciona una visión general aproximada.
Desglosando por qué podría elegir uno de los tres grados “directos”:
Ciencias de la Computación
La informática se ocupa mucho más de la teoría detrás de cómo funcionan las computadoras, especialmente en términos de los componentes matemáticos de fondo. Computer Science te prepara para sobresalir en los aspectos teóricos del software (generalmente investigación, pero también se muestra bastante) como el análisis de algoritmos (comprender los tipos comunes de algoritmos que aparecen en problemas, comprender la relación entre el número de entradas y número de cálculos para una solución dada, etc.), diseño del compilador, diseño del sistema operativo, lenguajes formales (piense en lenguajes de programación como C ++, python, haskell, etc., pero también piense en lenguajes de marcado como HTML y XML), redes ( ¿Cómo está de acuerdo cada computadora sobre cómo manejar la transmisión de correo electrónico, solicitudes web o transferencias de archivos? ¿Cómo se conecta mi computadora a “Internet” y de repente tiene la capacidad de interactuar con un servidor de computadora en Europa?), inteligencia artificial , aprendizaje automático, visión por computadora, etc. Yo diría que Computer Science le brinda la mayor flexibilidad para saltar a Ingeniería en Computación o Ingeniería de Software después, a costa de 1. tener para aprender teoría adicional (que generalmente es útil, aunque probablemente no lo notarás) y 2. tener que pasar un tiempo extra aprendiendo también los dominios de ingeniería.
Ingeniería Informática
La ingeniería informática se resume mejor como una especie de mezcla entre la ingeniería eléctrica y la informática. Dejas caer gran parte de la teoría de la informática y aprendes muchos de los conocimientos de física / circuitos / hardware de la ingeniería eléctrica. Por el mérito de ser un título de ingeniería, mucho menos de lo que aprende tiene la intención de ayudarlo a trabajar en la investigación teórica más adelante, pero aún aprende muchos de los mismos fundamentos. Ingeniería informática, en mi opinión, tiende a sincronizarse con los términos Sistemas integrados (el ejemplo clásico es cómo programar un Furby), firmware e ingeniero de hardware (redes físicas, procesadores, GPU, circuitos, discos duros, RAM, etc.). La transición de un ingeniero informático a un ingeniero de software es probablemente la más difícil de estas tres, pero tal vez realmente quiera trabajar más cerca del hardware (que definitivamente necesitamos).
Ingeniería de software
La ingeniería de software se aplica a la informática, centrándose más en la creación de productos tangibles a partir de las construcciones teóricas. También insisto en que la ingeniería de software está relacionada tangencialmente con la arquitectura en el sentido de que los sistemas de software suelen ser muy grandes, consisten en muchos subsistemas y requieren una planificación cuidadosa de cómo interactúan estos subsistemas. Insisto nuevamente, esta planificación es principalmente en lo que el ingeniero de software es especialmente bueno y en lo que se enfoca. Claro, el ingeniero de software también hace mucha programación para lograr su diseño. Sin embargo, escribir código para un ingeniero de software es algo así como dibujar un diseño para un arquitecto: es fundamental que el diseño coincida con la idea y que las personas puedan entender el diseño, pero la idea en sí es dónde está el dinero. Además, si observa la jerarquía de Ingeniería de software, “Arquitecto de software” se encuentra en la parte superior de la escala o es una parte de la descripción del trabajo para cualquiera que sea el rol principal (suponiendo que esté buscando la ruta de contribuyente individual; obviamente el el juego cambia si te mueves a la gestión).
Dato final: sugeriría que la mejor manera de determinar en cuál de estas especialidades debe especializarse es echar un vistazo a las clases requeridas para el título y tratar de determinar qué clases parecen más aplicables a lo que desea aprender. Algunos de ellos no tendrán mucho sentido al principio porque no sabes lo que no sabes, pero aún así te animo a que realices este ejercicio con muchas universidades / títulos diferentes y veas la tendencia entre los grados, y luego decide qué tendencia parece tener más sentido para ti.