Este repositorio contiene el material (apuntes, notebook y códigos) de la asignatura Programación Científica en Python, dictado en el Departamento de Informática de la UTFSM.
- Manejo y conocimiento de los lenguages
Python
yC
. - Conocimiento del paradigma de Orientación a objetos.
- Manejo del algebra lineal.
- Conocimiento básico de Sistemas Operativos y Sistemas Linux/Unix.
- (Recomendable) Conocimiento básico de Ecuaciones Diferenciales.
- Comprender el funcionamiento interno de
Python
en cuanto al uso y manipulación de arreglo numéricos. - Desarrollar código optimizado para la resolución de problemas científicos.
- Analizar y detectar secciones críticas del código (cuellos de botellas) por medio de profiling.
- Crear gráficos que permitan entender y visualizar fenómenos de distinto tipo.
- Crear soluciones eficientes a problemas científicos reales.
- Hacer interfaces en
Python
de bibliotecas enC
(Wrapping).
- Introducción a Anaconda, GIT, Ipython y Jupyter Notebooks.
- Computación Numérica (1): Programación vectorizada, NumPy y NumExpr.
- Computación Numérica (2): NumPy y manipulación de arrays de gran tamaño.
- Visualización: Matplotlib + Ipython Widgets.
- Acelerando Python con Numba: y compilación en tiempo real (JIT).
- Acelerando Python con Cython: Escribiendo C en Python.
- Profiling de códigos y optimización.
- Aplicaciones: Resolviendo problemas numéricos.
- (*) Paralelización en Python: Threads y
IPython.Parallel
. - (*) Modulos de C a Python: Wrapping.
El sistema de evaluación será del siguiente modo:
nota final = 0.2 * asistencia + 0.5 * actividades en clases + 0.3 * proyecto final
Observaciones:
- Las actividades en clases serán evaluadas en el rango de 0-3 del siguiente modo:
0
: No entrega,1
: Entrega,2
: Entrega pero no funciona del todo bien y3
: Entrega y funciona todo correctamente. Las soluciones deben ser subidas a un repositorio github. - Los temas de proyectos se presentarán después de la 5ta sesión. Los alumnos tienen la posibilidad de proponer sus propios temas. Los proyectos son individuales.
El material presentado en este repositorio esta basado en conocimiento propio, información encontrada en internet (referenciada en los notebooks) y los siguientes textos: