Como nuevo estudiante de doctorado, ¿se requiere una sólida formación en programación de computadoras para comenzar la investigación en aspectos computacionales de la ingeniería química? ¿O se puede comenzar desde cero con solo el conocimiento preliminar y aprender más programación en el camino?

Si puede llamarse a sí mismo un modelador al final de su doctorado, entonces es un experto en la configuración adecuada de problemas, es muy experto en los métodos utilizados para resolverlos y tiene suficiente conocimiento de programación para lograr estas dos cosas.

Yo diría que no se requiere un fondo sólido, pero sí cierto fondo. El grupo en el que estoy trabajando hace un trabajo puramente computacional, pero tenemos un código grupal que es mantenido por un miembro permanente del equipo de investigación, por lo que la necesidad de escribir un gran programa para mi tesis fue eliminada. Modifico el código a diario y ciertamente escribo mis propios scripts para realizar muchos análisis de datos, pero mi experiencia de codificación se limitó a MATLAB y al conocimiento práctico de FORTRAN y Python. He tenido que aprender C / C ++ mientras estaba en el grupo.

En estos días, los grupos se enfrentan a una pequeña elección. Pueden hacer que cada alumno produzca su propio código o usar otro. Cuando un estudiante escribe el suyo, está limitado en el alcance de los problemas que puede resolver. Si el grupo mantiene un código, pueden resolver problemas muy complejos, pero los estudiantes a menudo no aprenden tan bien la codificación o las matemáticas / algoritmos. Por lo tanto, realmente depende del grupo al que desees ingresar. Si elige un grupo más fundamental, probablemente estará desarrollando su propio código para resolver problemas más fundamentales. Otros grupos mantendrán códigos o emplearán / modificarán códigos ampliamente disponibles que requieren mucha menos experiencia en programación.

Dicho esto, creo que la mayoría de los profesores de ingeniería química le dirán que preferirán fundamentos científicos sólidos a fundamentos sólidos de programación. La programación en su mayor parte se puede aprender y el tipo de programación que se realiza en estas situaciones suele ser bastante básico, mientras que la ciencia y las matemáticas que se estudian son realmente el corazón del doctorado. Incluso las personas que conozco que provenían de grupos más fundamentales no eran programadores expertos al principio.

Por otra parte, la falta de habilidades de programación es probablemente la razón por la cual los códigos científicos tienden a estar mal escritos u optimizados y por qué los informáticos nos odian.

Dependiendo de lo que otros en su campo estén haciendo, debería estar familiarizado con Fortran / C / Matlab / Maple / Mathematica. No está de más saber un poco acerca de los métodos numéricos (por ejemplo, del libro Numerical Recipes) y los algoritmos de optimización de procesos. Pero realmente se reduce a su campo, su asesor o las clases a las que asistirá le darán los detalles específicos.

Sin embargo, le aconsejaría que aprenda algunas de las mejores prácticas de desarrollo de software moderno, que serán muy útiles a largo plazo. Por ejemplo, aprenda a configurar y usar un sistema de Control de versiones (git, por ejemplo), extraiga y realice un seguimiento de los “requisitos” y los cambios en un sistema como Trello y use pruebas automáticas (pruebas unitarias) para asegurarse de que las partes importantes de su código se comporten mientras debería (calcular el resultado esperado, siempre terminar, son lo suficientemente rápidos). Además, aprenda a analizar las partes críticas de su algoritmo por su complejidad de tiempo (usando la notación O).

Ah, y aprende un lenguaje orientado a objetos como Java si tienes tiempo. Puede tener una GUI agradable para modificar algún parámetro sobre la marcha en lugar de jugar con el código todo el tiempo.

More Interesting

¿Debería un profesor ayudarse con notas mientras enseña?

Como profesor, ¿le has dado a un estudiante una F (o su equivalente)?

¿Qué tan común / raro es para un profesor decirle a un estudiante "Sé que algún día harás grandes cosas?"

¿Por qué Obokata Haruko aún presentaba su investigación a la Naturaleza, ya que sabía tan bien que nadie podría repetir su experimento?

¿Cómo difiere la sociolingüística de la sociología del lenguaje?

¿Cuál es una buena manera de conocer a mis profesores cuando a menudo no necesito ayuda en las clases?

¿Por qué las humanidades están en contra del acceso abierto?

¿Cuál es el procedimiento para convertirse en profesor en India después de MBA?

¿Hasta dónde debe llegar un asesor / IP para consolar a su estudiante con problemas? Y viceversa.

¿Qué tipo de correos electrónicos atraen a los profesores? ¿Hay algo que los profesores no quieran ver en los correos electrónicos de estudiantes o asistentes de investigación?

¿Quiénes son algunas personas excelentes que hacen investigación de aprendizaje automático en universidades de menor rango?

¿Qué piensan los profesores de un estudiante que entrega un trabajo brillante y conmovedor, pero que siempre supera el plazo?

¿Cuáles son algunas políticas académicas típicas?

¿Cuáles son las principales diferencias entre ser un profesor universitario en los Estados Unidos hoy en día en el pasado?

¿Cómo se refiere la comunidad científica de CS a la investigación de Stephen Wolfram?