Depende de lo que quieras decir con “matemáticas avanzadas”. Para mí, la frase significa el tipo de matemática que hacen los matemáticos profesionales, que no será útil para los programadores de computadoras, excepto quizás el caso específico que discuto al final. Sin embargo, creo que la mayoría de las personas se refieren a las matemáticas de nivel universitario cuando hacen esta pregunta, o incluso a nivel de escuela secundaria avanzada, en cuyo caso la respuesta depende en gran medida del tipo de trabajo de ingeniería de software que esté haciendo o esté interesado en hacer. Varía según el dominio:
- Si está haciendo algo con gráficos por computadora, debe comprender todas las matemáticas de la escuela secundaria. En particular, debe tener una trigonometría internalizada hasta el punto de no pensar en ello. Más allá de eso, si está haciendo algo relacionado con 3D, tendrá que sentirse cómodo con al menos el álgebra lineal básica. Necesita saber qué es un vector, qué es una matriz y para qué sirve. El cálculo puede ser útil si desea poder leer y comprender documentos académicos sobre algoritmos en procesamiento de imágenes o renderizado 3D, pero generalmente no es necesario para la programación gráfica diaria.
- Si está interesado en la ciencia de datos, necesitará tener un conocimiento profundo de las estadísticas a nivel de pregrado, particularmente las estadísticas bayesianas. Debería haber internalizado la noción de varianza, correlación y los demás términos del arte; debe saber para qué sirven todas las diferentes distribuciones y cómo usarlas, y, por supuesto, para comprender realmente la mayor parte de este material, necesitaría conocer el cálculo multivariable como requisito previo. Los llamados algoritmos de “aprendizaje automático” son todos algoritmos de optimización estadística básicamente iterativos, por lo que primero querrá comprender algoritmos de optimización más tradicionales, por ejemplo, programación lineal a través del método simplex, etc.
- Si está interesado en compiladores y analizadores y tecnología relacionada, necesita conocer la “teoría de la computación”, que se llama diferentes cosas en diferentes currículos: el MIT la llama “teoría de la computación”; Creo que Carnegie Mellon llama a este programa “Lógica y Computación”, etc., pero básicamente esta es la parte de la informática que es tan abstracta que sin lugar a dudas es una parte de las matemáticas. Es el estudio de varias máquinas abstractas que forman una jerarquía que los matemáticos han usado para definir una jerarquía de complejidad computacional.
- En todos los dominios, a menudo es útil haber estado expuesto a matemáticas discretas: combinatoria, optimización combinatoria, teoría de grafos, etc., particularmente teoría de grafos. Los gráficos tienen una forma de aparecer en lugares inesperados y es útil haber estado expuesto a ellos formalmente antes de que necesite implementar un algoritmo gráfico en un contexto profesional.
Más allá de lo anterior, las matemáticas verdaderamente avanzadas son de interés si quieres dedicarte a la informática en lugar de la ingeniería de software, ya que la informática es esencialmente una rama de las matemáticas. En la industria, es importante entender esta visión del campo si uno se involucra con la programación funcional de manera seria. La perspectiva que uno debe adoptar para convertirse en un buen, digamos, el programador Haskell está más cerca de una postura matemática que de la postura de ingeniería tradicional. Para hacer un buen trabajo no trivial en Haskell, uno necesita convertirse básicamente en un matemático en actitud.
- Dados n objetos y p posiciones divididas equitativamente alrededor de una tabla, n <= p, ¿cuántas combinaciones de ubicación existen?
- ¿Debo continuar las matemáticas con la ciencia actuarial o cambiar a la informática y por qué?
- ¿Cuál es el concepto de tipos en la teoría de tipos (de una manera simple pero rigurosa)?
- ¿Cuál es una forma simple o intuitiva de entender por qué todos los números aleatorios son normales (Teorema de Borel)?
- ¿Qué significa esta notación de satisfacción de proposiciones compuestas para resolver un rompecabezas de Sudoku dado en matemáticas discretas?