¿Qué matemática se requiere en ingeniería de software?

Estoy de acuerdo con la respuesta de Bill Karwin, pero las matemáticas discretas son un campo bastante amplio con diferentes subtemas. Si tuviera que limitarlo, diría que hay algunos temas que generalmente son más útiles para los ingenieros de software que otros. La lógica matemática, el álgebra abstracta, la teoría de conjuntos, la teoría de grafos y la teoría de la información probablemente surjan más en el desarrollo general de software.

La lógica matemática incluye álgebra booleana y pruebas, que ayudan a razonar sobre el software, especialmente en torno al flujo de control. Aunque no se usa comúnmente, también es la base de la verificación formal.

El álgebra abstracta (junto con la lógica matemática), la teoría de conjuntos y la teoría de gráficos se unen si quieres razonar sobre bases de datos. Estas son las bases de todas las bases de datos relacionales y algunas bases de datos no relacionales. Si combina esto con otros temas de las matemáticas, puede obtener una comprensión más profunda de la ciencia de datos.

La teoría de la información trata, entre otras cosas, la compresión y el cifrado. Si desea comprender varios algoritmos de compresión y cómo funcionan o si está interesado en la seguridad.

Otras áreas de las matemáticas dependen más del trabajo específico que está haciendo. Entender el cálculo ayudó bastante cuando estaba trabajando en el procesamiento de imágenes, y sospecharía que también ayudaría en otras formas de procesamiento de señales o computación científica. La estadística también es generalmente útil, pero aparece regularmente en el aprendizaje automático y la ciencia de datos.

Normalmente, para las matemáticas básicas de inicio que se habían pensado en nuestro nivel escolar es suficiente. Pero, cuando profundizamos en el desarrollo del software, necesitamos un poco más.

Algunos de ellos son,

  1. Trigonometría
  2. Teoría de ecuaciones y álgebra
  3. Cálculo diferencial e integrales múltiples
  4. Álgebra Matriz
  5. Método numérico y estadístico

Estos son más que suficientes.

Pero afortunadamente se pensó en el primer año de nuestros estudios de ingeniería.

Siendo realistas, ninguno. Fuera del análisis de la complejidad del tiempo, en cuatro años en el campo una vez he necesitado usar matemáticas más avanzadas que la aritmética de quinto grado. En ese caso, necesitaba usar álgebra de sexto grado.

Hay campos en los que necesitarías matemáticas más avanzadas. Pero incluso entonces, en el 90% de los casos, solo usaría una biblioteca para hacer todo el trabajo por usted, y todo lo que realmente necesita es un conocimiento de muy alto nivel de qué herramientas aplicar a qué problemas. Nunca, y nunca debe, codificar manualmente una rutina de álgebra lineal, o un modelo de regresión, o incluso un algoritmo de clasificación.

Si trabajas mucho con el aprendizaje automático, debes tener una buena comprensión de las estadísticas y el cálculo vectorial. Si bien no lo necesita, es probable que tome decisiones tontas si no comprende las matemáticas subyacentes. Pero incluso entonces, no necesitas una comprensión profunda . El equivalente a un curso universitario de nivel introductorio debería ser suficiente.

No necesitas ningún estudio formal de la lógica. Si bien puede ayudar a darle un mejor lenguaje para expresar ideas, las ‘reglas’ de la lógica son casi completamente intuitivas. Si al menos uno de A o B es verdadero y B es falso, ¿es verdadero A? Si respondiste que sí, felicidades, ya conoces la lógica.

Debes tener una buena comprensión de la lógica. De lo contrario, todo depende de su dominio (campo de trabajo). Ejemplos:

Los desarrolladores de juegos necesitan saber algo de dinámica y física.

Los desarrolladores de seguridad necesitan saber algo de criptografía.

Los científicos de datos necesitan saber mucho sobre estadísticas y probabilidad.

Un desarrollador que trabaja en un software como AutoCad necesita saber sobre geometría.

Saludos.

Matemática discreta es directamente aplicable a las técnicas de programación. Uso muchas de las habilidades que aprendí en esa clase todos los días.

Vea la respuesta de Bill Karwin a ¿Es necesario aprender matemáticas discretas y sus aplicaciones para comenzar la programación en Python? para algunos ejemplos

Sería útil tener la capacidad de contar desde cero. Además, la lógica matemática es fundamental para la mayoría de los lenguajes de programación y debería ser parte de la caja de herramientas de cada desarrollador de software. De lo contrario, una sólida comprensión del álgebra suele ser suficiente.

Las operaciones aritméticas juegan un papel vital en la programación o podemos decir que la programación se basa en operaciones aritméticas que + – * /%.

More Interesting

Como ingeniero de software con más de 7 años de experiencia, ¿debo abandonar la programación y pasar al puesto de gerencia?

¿Todos los ingenieros de software de Google necesitan tener conocimiento de sus lenguajes principales, C ++ y Java, o pueden ser simplemente expertos en su propio campo, digamos Python / Swift, etc.?

¿Cuáles son las estimaciones típicas de esfuerzo de las tareas de programación?

¿Por qué vemos más avances técnicos en el software y todo lo relacionado con él, pero no hacia la generación de electricidad cuando es la fuente de todo?

Si quiero ser ingeniero de software en Google, ¿cuáles son los principales lenguajes de programación que debo dominar?

¿Cuáles son los algoritmos importantes que cada ingeniero de software debe implementar en su trabajo?

Aunque C no es un lenguaje orientado a objetos, ¿puede hacer todo lo que Java o C ++ pueden hacer?

¿Cuál es la importancia del tema de ingeniería de software?

¿El puesto de ingeniero de software de robótica de automóviles autónomos de Google requiere el mismo nivel de experiencia en codificación que un puesto de ingeniero de SW normal?

¿Los ingenieros de software de Google dominan todo el lenguaje de programación?

¿Es necesaria la programación orientada a objetos para la programación integrada?

¿Tengo un bajo rendimiento para ser un SDE de Microsoft en el nivel 60 a la edad de 26 años?

¿Por qué es tan difícil programar?

¿Por qué todos quieren unirse a Google o Facebook en lugar de pensar en construir su propia startup?

Un ingeniero de software se casa con un ingeniero de software. ¿Cómo serían sus vidas?