¿Qué puede hacer un ingeniero con la informática teórica?

Mi respuesta tiene dos lados: uno general y uno específico en relación con campos desafiantes e interesantes.

Lado general. La informática te dota de tres conceptos cruciales:

  1. Análisis de algoritmos, diseño e implementación. Los algoritmos y las estructuras de datos son el equivalente del cálculo, la mecánica y la física para la informática. Aprende rápidamente que los problemas comunes a menudo siguen patrones similares, que se estudian en profundidad. Este último le permite buscar el lenguaje apropiado para la tarea mientras conserva importantes propiedades de eficiencia (en el espacio o el tiempo).
  2. Reducciones Suponga que conoce la solución para el problema A. Se encuentra con un nuevo problema B y se da cuenta de que, al realizar un número limitado (y con suerte eficiente) de transformaciones a la entrada, obtiene una instancia de A. Esta es una reducción. Muchos problemas pueden entenderse en general a gran profundidad a través de este dispositivo abstracto.
  3. Trazabilidad Saber si un problema es manejable (es decir, existe un número finito y razonable de pasos para resolverlo) o no proporciona una visión de ingeniería. Si no se sabe que el problema es soluble de manera eficiente, puede proceder con aproximaciones, muchas de las cuales se garantiza que son correctas en algún porcentaje del tiempo o para un rango limitado de instancias.

Lado específico. Con su experiencia en ingeniería, hay varias áreas donde tendría una ventaja única:

  • Diseño de controladores y software especializado para instrumentos científicos.
  • Desarrollo de nueva maquinaria que se basa en implementaciones de software de teoría de control.
  • Modelado y simulación de maquinaria o procesos industriales.
  • Desarrollo de herramientas de evaluación de riesgos para software que interactúa con maquinaria
  • Implementación de software seguro y / o seguro para sistemas de misión crítica

Si estuviera en su posición, definitivamente dedicaría tiempo a aprender Haskell / Clean y la verificación y análisis de software formal (por ejemplo, Fundamentos de la especificación algebraica y desarrollo de software formal) y luego comercializarme como un consultor que construye software en el que se puede confiar. Este es uno de los caminos menos explorados pero más gratificantes en la intersección entre CS e ingeniería.

More Interesting

¿Puede una resta dar un resultado negativo usando un número sin signo?

¿Cuál es el enfoque algorítmico para encontrar el área rectangular máxima en un histograma?

¿Cuál es el tipo de datos de optimización de memoria más apropiado en Matlab para importar un archivo de audio que tiene un valor máximo de 0.495971679687500 y el valor mínimo es -0.488983154296875?

Dada una matriz que consta de N enteros, ¿puedes encontrar el valor máximo de xor de dos números en una matriz (ai xor aj)?

¿Cuál es la forma más rápida de determinar si una serpiente tiene un camino hacia su cola?

¿Se conocieron y / o trabajaron juntos Alan Turing (1912-1954) y John von Neumann (1903-1957)?

¿La comunidad académica evita los intentos de resolver un problema NP-difícil en tiempo polinómico?

Estoy en mi último año como estudiante de ciencias de la computación y me encanta resolver problemas. Siempre trato de resolver los problemas, pero no logro crear soluciones rápidamente. Quiero mejorar para construir una lógica clara. ¿Dónde me estoy equivocando o qué debo hacer?

En programación, ¿lo nuevo suele ser mejor?

¿Cuál es la diferencia entre NP-hard y NP-complete?

¿Cuánto conocimiento de matemáticas se requiere para ser un programador?

¿Quiénes son los equipos más notables que trabajan para resolver el problema P vs NP?

¿Cómo podría razonar matemáticamente sobre la corrección y solidez de un programa en programación funcional?

¿Cuál es la mejor manera de dibujar gráficos extremadamente grandes?

¿Por qué una función está tan definida?