Centro Mediterráneo

GR22.- PYTHON PARA CÁLCULO CIENTÍFICO Y TÉCNICO.

Dirección:
Pedro González Rodelas.
Dpto. de Matemática Aplicada.
Universidad de Granada.

Presentación del curso

No cabe la menor duda de que en muchas áreas de carácter científico-técnico la adecuada elección del software y/o lenguaje de programación empleado es determinante , de cara a la potencia, versatilidad, facilidad de uso y acceso por parte de todos los usuarios en sus propios dispositivos, de manera generalizada y gratuita.

Nosotros, los profesores participantes en esta iniciativa, tenemos una experiencia de más de 20 años usando software de cálculo simbólico y numérico de todo tipo, tanto software libre (Fortran, C, Maxima, Octave, SAGE, Python, …) como de tipo propietario (Mathematica, Mapple, Matlab, … ) y podemos afirmar que cada uno de ellos posee sus ventajas e inconvenientes, pudiéndose adaptar mejor uno u otro a distintas tareas concretas.

No obstante, dentro del software libre, uno de los que últimamente ha tenido una mejora sustancial, con la inclusión de potentes y versátiles nuevos paquetes de cálculo simbólico (SymPy), numérico (NumPy, Scipy) y gráfico (Pylab y Matplotlib) ha sido sin duda Python, y de ahí su vertiginosa evolución y expansión a nivel mundial, no sólo en el ámbito académico, sino también en el científico e industrial.

De hecho, basta con echar un vistazo a las numerosas propuestas, tanto de comunidades de desarrolladores como de empresas privadas, surgidas a raíz de la versión de base inicial de Python, como por ejemplo IPython (interface interactivo de fácil uso, que permite una versión HTML similar a los notebooks de Mathematica o Maple) o Spyder (entorno integrado para cálculo científico parecido al de Matlab u Octave).

Por otro lado existen versiones completas de desarrollo, integrando Python como soporte de cálculo, pero con editores avanzados de texto para la programación y la depuración de código, ventanas de gráficos y datos, etc. La mayoría de estas plataformas integradas están disponibles para los distintos sistemas operativos Linux, MacOS X y Windows. Entre ellas cabría destacar Enthought Python Distribution (EPD), PyCharm y Anaconda CE (de Continuum Analytics).

Aparte de todo esto, se dispone ya de una gran cantidad de ejemplos, así como material de apoyo como manuales, libros, blogs y páginas web desarrollados por numerosos científicos y profesores de todo el mundo, siendo tan ingente dicho material que a veces resulta complicado realizar una selección del mismo para poder empezar.

Por todo ello, creemos que este potente software de cálculo científico se encuentra en su máximo apogeo y con un nivel de madurez y versatilidad extraordinario, como para poder iniciar su exitosa incursión en el mundo científico-técnico español, tanto universitario como empresarial, y más concretamente en la Universidad de Granada.

Y de ahí surge esta iniciativa de formación para todo el que estuviera interesado en aprender a usar esta potente herramienta para su uso personal a nivel de investigación y desarrollo.

Competencias:

a) El alumno sabrá:

  • Instalar e interactuar con varias versiones y distribuciones más extendidas de este potente y completo software.
  • Las distintas formas de programar, tanto en su forma procedural básica, de tipo funcional y como en su versión más avanzada (orientada a objetos).
  • Buscar y revisar información relevante acerca de los distintos paquetes y funcionalidades del software.
  • Realizar sus primeros programas con Python, así como interactuar con distintos entornos de programación, como Spyder e iPython (via Jupyter).
b) El alumno será capaz de:
  • Conocer las distintas estructuras de datos que se pueden usar en Python.
  • Reconocer y usar algunos de los distintos paquetes externos que complementan la distribución básica de Python (NumPy, SciPy, SymPy, Pandas, matplotlib, etc.), así como su instalación y funcionalidades.
  • Dominar el lenguaje de programación Python, así como el uso de alguno de los paquetes más útiles y extendidos.

Evaluación:

Aparte de la asistencia continuada a las clases presenciales, la evaluación final definitiva se llevará a cabo teniendo en cuenta fundamentalmente la correcta realización de los ejercicios y tareas de programación propuestos.

Destinatarios:

Aunque los principales destinatarios de este curso serán los estudiantes y titulados de carreras técnicas y de ciencias en general, el curso debería de estar abierto a cualquier persona con interés en este potente y versátil lenguaje de programación, o en aprender a programar en general, ya que Python puede suponer un buen lenguaje de iniciación a la programación, tanto de tipo procedural como orientada a objetos.

                                     PROGRAMA DEL CURSO

VIERNES 24 DE FEBRERO
16:00-21:30 Introducción y distintas vías de instalación de Python (tanto via pip, conda, o bien con alguna de las distribuciones multiplataforma más extendidas). Uso de Virtualenv.

Tipos y estructuras de datos: enteros, reales, listas, tuplas, strings, conjuntos y diccionarios.
Pedro González Rodelas.
Dpto. de Matemática Aplicada, Universidad de Granada.

Francisco Miguel García Olmedo.
Dpto. Álgebra, Universidad de Granada.
VIERNES 3 DE MARZO
16:00-21:30
Programación procedural y de tipo funcional con Python. Funciones y módulos. Recursividad. Tratamiento de excepciones. Evaluación del rendimiento y optimización de código.

Francisco Miguel García Olmedo.
VIERNES 10 DE MARZO
16:00-21:30 Técnicas de programación Orientada a Objetos: uso de clases, conceptos de herencia, polimorfismo y encapsulación.

Francisco Miguel García Olmedo.
VIERNES 17 DE MARZO
16:00-21:30 Cálculo simbólico y aproximado (paquete SymPy). Aplicaciones.

Representaciones gráficas y visualización de datos (paquete matplotlib y entornos pyplot/pylab), uso de bokeh y/o Mayavi para representaciones especiales.

Pedro González Rodelas.
VIERNES 24 DE MARZO
16:00-21:30 Métodos numéricos con Python (paquetes NumPy y SciPy), rutinas y módulos de Álgebra Lineal (linalg), resolución de ecuaciones no lineales (bisect, fsolve), integración numérica (integrate, quad), resolución de ecuaciones diferenciales (odeint), interpolación (interpolate), ajuste de curvas (polyfit), optimización (optimize), transformadas de Fourier (fft), etc.

Métodos estadísticos con Python (paquetes SciPy y Pandas), funciones y paquetes estadísticos (stats), usando código R con iPython, clustering y tratamiento de series temporales, etc.
Pedro González Rodelas.
VIERNES 31 DE MARZO
16:00-21:30
Otras herramientas especiales: interacción con el SO y scripting, tratamiento de expresiones regulares, combinando código Python con C, C++ y Fortran, adaptación de códigos MATLAB/Octave, uso de LaTeX con iPython, Introducción a la creación de widgets (librería Tkinter) e interfaces gráficas (wxPython, JPython) y a la gestión web con Python (uso de Flask).

Pedro González Rodelas.

Francisco Miguel García Olmedo.