/diseno_sci_sfw

Curso doctoral FAMAF: Diseño de software para cómputo científico

Primary LanguageJupyter NotebookBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Curso doctoral FAMAF: Diseño de software para cómputo científico

Versión. 2024

https://github.com/leliel12/diseno_sci_sfw

Clases 🏫

1. Antecedentes

2. Enfoque práctico en paradigmas de programación

3. Calidad de software

4. Diseño de software

5. Optimización, concurrencia y paralelismo

6. Tooling 🧉

Estos temas no tienen un contenido teórico muy robusto e involucran primordialmente aprender a utilizar alguna librería o framework que implementa alguna técnica de calidad o patrón de diseño

El práctico ☢️

Máximas

  1. Si el código del práctico no está en un repositorio, y no esta con PEP-8, No se revisa.
  2. Si el código no tiene testing no se existe.

Entrega 0:

  • Establecer el problema científico a resolver. Las bases teóricas del problema deben estar bien entendidas. Recordar que esto no es un proyecto de investigación científica, es un proyecto de desarrollo de software. El problema no debe tener una implementación de Python. BUSCAR en PyPI https://pypi.org/
  • Repositorio público en GitHub/Gitlab/BitBucket. El prototipo debe estar disponible en un repositorio de github con el nombre del proyecto. Configurar el repositorio para que todos los integrantes del grupo tengan acceso.
  • Grupos: Entre 3 y 5 personas. No hace falta que todos sean expertos en el tema. Ya tuvimos matemáticos haciendo dinámica y formación galáctica; y un biotecnólogo haciendo economía. Agarren un tema que les interese. Grupos más chicos tienen que justificarlo MUY bien. Más grandes no van a ser aceptados bajo ninguna circunstancia.

Entrega 1: Aun No definido

  • Prototipo funcional de código. El prototipo debe ser capaz de resolver el problema científico propuesto. Considerar que en esta etapa no se pide ningún criterio de calidad de software, solo la funcionalidad del prototipo. El prototipo debe estar escrito en Python 3.12 válido.

Entrega $i-ésima$:

Todas las clases van a haber consultas.

Entrega Final (En proceso)

O como sacar un 10

  • La funcionalidad del proyecto de software tiene que estar completa.

  • El valor del Coverage >= 90% (ideal ~95%).

  • Todo el código tiene que tener estilo y tiene que ser validado por un linter (Ejemplos: Flake8 para Python, Fortran-Linter para Fortran.

  • Usar un integrador de testing (como tox o un Make), que integre tests, coverage, check-manifest, docstyle y doc-build.

  • Tiene que andar y ser probado (local y remotamente) con todo python "vivo" actualmente. Vivo es todo lo que este en security o bugfix en este enlace https://devguide.python.org/versions/

  • Algún integrador continuo (travis, github actions, gitlab, circle-ci, azure, etc) que se encargue de comprobar las métricas de testing del proyecto

  • Documentación online que incluya:

    • Motivación.
    • Contactos.
    • Guía de instalación.
    • Tutorial con un ejemplo práctico.
    • Referencia de API.
  • README, con motivación, badges, mini guia de instalacion e información de contacto.

  • LICENCIA (archivo en la raiz del repo LICENSE o COPIYING).

  • Todo el proyecto versionado en github/gitlab.

  • Subir el proyecto a PyPI

  • Presentar informe hasta 48hs antes. Hay un template latex sugerido en el repositorio Github del curso (diseno_sci_sfw). Debe incluir el contexto científico, definir el problema a resolver, explicar la API, ejemplo de uso y calidad de software.

  • En el template para el informe final hay un archivo txt que contiene una lista de publicaciones listas para citar.

  • El final es una presentación grupal (con slides) con tiempo máximo de 40 min, en el cual uno explica el proyecto si entrar tanto en detalles técnicos, sino mas bien USO y por que es un aporte.

Validar el curso en otra facultad/universidad:

Si van a van a validar el curso en otro programa doctoral que no sea del de FaMAF-UNC, van a necesitar:

Editores 📝

Estos son los editores o IDE más populares en Python

Bibliografía 📚

Ediciones anteriores ⏰