¿Puede ingresar a la programación científica solo con un título de CS, o necesita un título doble en el campo científico, como la física, por ejemplo?

Ser un comandante de CS en realidad lo pone en una ventaja relativa en el sentido de que ya debería saber lenguajes de programación y no necesita superar esa curva de aprendizaje. He tenido amigos que son increíblemente buenos con la Física pero que luchan con la Programación. Si bien un Físico podría tener la parte de Física cubierta, aún necesitan adquirir el mismo nivel de competencia en programación que un comandante de CS y viceversa.

Con la Programación científica, hay esencialmente 2 aspectos que necesita dominar: Matemáticas (Algoritmos) y Programación.

Programación (La más fácil)

Un conocimiento de Python sería de gran ayuda aquí. SciPy.org: SciPy.org es la biblioteca preeminente en Python para todo Data Science y es excelente para lo que necesita. De hecho, abarca todo lo que necesitas para la Programación Científica.

– Estructuras de datos en Python Data Analysis Library

– Operaciones de matriz usando NumPy – Numpy

– Matemáticas simbólicas utilizando SymPy

– Visualización utilizando el trazado de Python – Documentación de Matplotlib 1.5.0

– y puede usar todo esto con scikit-learn: aprendizaje automático en Python según sea necesario

Para obtener más operaciones matemáticas en profundidad, puede utilizar MATLAB y Simulink para Informática Técnica o su Octava de GNU equivalente de código abierto (casi).

Matemáticas

Realmente no hay un atajo, solo necesitas bajar a las brasstacks y leer + practicar una y otra vez. Dicho esto, si tienes interés en los algoritmos, deberías encontrar esto agradable e interesante. Sin conocer sus intereses actuales, es difícil para mí asesorar con precisión, pero en resumen, el cálculo, las ecuaciones diferenciales (parciales), el álgebra lineal y los métodos numéricos son prácticamente todo lo que hay en el nivel básico.

Cálculo: Cálculo para principiantes

Ecuaciones diferenciales: Video conferencias | Ecuaciones diferenciales | Matematicas | MIT OpenCourseWare

Métodos numéricos: módulos para métodos numéricos (parece cubrir una amplia gama de temas como Newton-Raphson, Maclaurin Series, etc.)

Algebra Lineal: Algebra Lineal

Y finalmente,

Una introducción a la programación científica con Python (Textos en ciencia computacional e ingeniería): Hans Petter Langtangen: 9783642302923: Amazon.com: Libros

¿Por qué usar Python para computación científica?

Como sugiere Richard Muller, no sin algún entrenamiento o asistencia en:

  • Big Data
  • Representación de grandes números y algoritmos.
  • Aritmática de alta precisión
  • Conocimiento específico del dominio sobre los temas científicos, algoritmos utilizados y cómo los datos se representan o intercambian con frecuencia.

Mi intuición (basada en la experiencia de trabajo en la Universidad de Michigan) es que el conocimiento específico del dominio DEBE provenir de los científicos, especialmente qué algoritmos se aplican cuando (y probablemente qué formatos de datos deben admitirse).

Tratar con big data, grandes números y aritmática de alta precisión es una subespecialidad de Ciencias de la Computación. Nos lo presentan, pero no obtenemos la suficiente experiencia durante un BS (o BSE) para tener habilidades prácticas (como la mayoría del resto de CS), aprendemos lo suficiente como para saber cómo ampliar nuestras habilidades. de una manera razonablemente rápida.) Un científico también puede aprender estas habilidades, especialmente cuando es asesorado por otro científico que ha tratado estos temas.

Los beneficios que aporta la licenciatura en CS (y especialmente el CS / CE práctico) son, por escrito, un código mantenible, portátil y distribuible, adecuado para compartir. Esto puede hacer que sea más fácil para los científicos actualizar el código, o compartirlo con otros científicos para ampliarlo o usarlo.

Claramente, alguien que es experto en ambos es mejor.

También he visto situaciones en las que un científico se convirtió en un experto departamental / administrador de sistemas porque “conocía” las computadoras mejor que sus colegas, o estaba lo suficientemente dispuesto a asumir esas tareas. Eso fue perjudicial para su carrera científica.

Con frecuencia hemos contratado programadores, que trabajan bajo la dirección de físicos. Muchos de los problemas para una persona así incluyen formas de manejar grandes volúmenes de datos, y eso a menudo no es algo que un físico sepa.

Sin embargo, en mi experiencia, los mejores programadores científicos han sido los físicos a quienes les encanta amar y tener talento para la programación.

Yo diría que depende.

Trabajé unos años en una instalación de sincrotrón y he visto ambos. Uno de mis colegas era un químico convertido en programador, otro era un ingeniero de software puro, que estaba transfiriendo el código existente (a menudo python / numpy) a GPGPUs. Sin embargo, la mayoría de las personas que hacían análisis de datos eran científicos.

He leído muchos códigos escritos por científicos “puros”, y una buena parte de ellos fue una pesadilla. Funcionó e hizo el trabajo, pero no estaba bien diseñado, era difícil de leer / entender, no tenía comentarios y era difícil de reutilizar.

Para evitar eso, un par de colegas que enseñaron python (y los sospechosos habituales: adormecidos / escépticos) a científicos pasaron un tiempo explicando buenas prácticas, cómo empaquetar su código, cómo usar git, etc.

Yo diría que un científico con un buen conocimiento de las mejores prácticas de ingeniería de software (y no solo la programación) funciona mejor para la programación científica pura. Para tareas más complicadas, tuvimos equipos mixtos con tipos puramente informáticos que colaboraban con científicos, cada uno trabajando en lo que mejor conocían.