Info

Curso Astrofísica USACH. Primer Semestre 2023. Sala Pabellón Forma.

El 2024 este curso fue dictado por el Dr Miguel Cárcamo (Ingeniería Informática) y luego por Ricardo Hasbún (Ingeniería Informática), desde un enfoque más "ingenieríl".

Descripción

La ciencia está experimentando una explosión de datos y la astronomía está a la cabeza. Los telescopios modernos producen terabytes de datos por cada observación y las simulaciones necesarias para modelar nuestro Universo observable llevan a las supercomputadoras al límite. Así, la astrofísica ha entrado en una era en la que el software bien diseñado es tan importante para el éxito de un proyecto como el hardware.

Algunos ejemplos de software altamente complejos que se usan en astrofísica incluyen herramientas de reducción de datos para la instrumentación en telescopios o ‘data reduction pipelines’ (por ejemplo, CASA usado en radioastronomía), paquetes para análisis de datos, como astropy, por ejemplo, y códigos que simulan procesos físicos, como la hidrodinámica (por ejemplo, los códigos FARGO3D y Phantom), la evolución estelar (por ejemplo, el código MESA), la dinámica de N-cuerpos (el código GADGET) y la transferencia radiativa (por ejemplo, RADMC3D).

Por otro lado, las técnicas estadísticas avanzadas y el aprendizaje automático juegan un papel cada vez más importante en la reducción de grandes volúmenes de datos en astronomía, y también requieren de códigos complejos. Muchos paquetes de software son desarrollados por grandes equipos y deben hacer uso de tipos heterogéneos de plataformas de hardware, desde CPUs de propósito general que se ejecutan en computadoras portátiles, hasta computación multinúcleo (clusters) que hacen uso de paralelización masiva y unidades de procesamiento gráfico (GPU).

El desarrollo de software se ha convertido en una parte esencial de todos los subcampos de la astronomía y el ecosistema científico está implementando cada vez más maneras de acreditar, citar, y medir el impacto de la investigación y desarrollo de software. Hasta ahora el mundo académico y científico solo se fijaba en la contribución a nivel de “publicaciones” o “papers” para evaluar cuán exitosa es la carrera de una o un científico. Hoy entramos a la era de la astronomía de los “petabytes” donde hacer contribuciones significativas a software será tan valioso como el impacto en papers. En la Licenciatura en Astrofísica con mención en Ciencia de Datos reconocemos que el desarrollo de software es parte importante de la formación de futuras astrofísicas y astrofísicos.

Las habilidades clave necesarias para la investigación científica intensiva en datos también son muy valoradas en sectores de la industria, el gobierno y los medios/comunicaciones. Estas habilidades requieren conocimiento del oficio de desarrollar software.

Objetivo

A lo largo de este curso, trabajarás con un pequeño grupo de colaboradores (entre 1 y 3 personas máximo) en un proyecto final, un paquete Python real de código abierto para astronomía. Si ya tienes compañeros de grupo en mente, escriban al correo electrónico del profesor de cátedra. De lo contrario, les asignaremos grupos de forma aleatoria. Esta es una oportunidad para poner en práctica el conocimiento que han aprendido en los cursos anteriores de la carrera. Al final del curso tendrán la oportunidad de presentar su paquete a los demás estudiantes del curso. Antes de comenzar, con su grupo logren:

  • Crear una cuenta GitHub (Usach ofrece licencias "pro" gratis para estudiantes)
  • Familiarizarte con algún ambiente de trabajo (Jupyter en Google Collab, por ejemplo).

Estructura y lectures

El curso se separa en dos partes:
  1. la parte técnica, de programación,
  2. la parte más humana, en cuanto al trabajo en equipo y el contacto con el usuario.

Estas son algunas de los materiales de apoyo al curso, a modo de nivelar los conocimientos de programación de las y los estudiantes (en PDF):

Evaluación del curso

Desarrollar un paquete Python de código abierto para astronomía desde cero. Su proyecto debe cumplir con los siguientes requerimientos:
  • [Versionamiento] => Mantenerse en GitHub, generar releases.
  • [Documentación] => Comentar cada función del código, y en las funciones que son más "complejas", indicar la lógica del algoritmo. Cada función debe llevar nombres representativos (que indiquen acciones) y variables.
  • [Modulación] => Generar módulos que en su conjunto cumplan el objetivo del software. Cada módulo se compone de funciones, métodos y/o atributos que resuelven una parte del software.
  • [Pruebas] => Contener tests de funcionamiento, que son las que indican si el software cumple con los objetivos planteados.
  • [Compatibilidad] => Ser pip instalable y ejecutable en otras computadoras.
  • [Distribución] => Ser una herramienta con una API (es decir, no un solo script o notebook). Deberíamos poder importar el paquete y llamarlo.
Cada uno de estos objetivos se cubrirán durante el curso, por lo que está completamente bien si no saben cómo hacer cada uno de estos pasos por ahora.

Recursos

Inclusión y Género

Si algún estudiante siente que necesita ajustes didácticos para poder participar y realizar el curso, les invito a contactar al Departamento de Formación Integral e Inclusión, y/o a mi directamente para que juntos busquemos las mejoras junto a los organismos universitarios especializados. También es importante mencionar que se pueden aplicar actividades de sensibilización y formación con perspectiva de género a través de la Dirección de Género, Diversidad y Equidad.