curso-python-cientifico icon indicating copy to clipboard operation
curso-python-cientifico copied to clipboard

Curso de Python orientado a estudiantes de ciencias e ingeniería, profesores, investigadores e ingenieros

Curso de Python para ciencias e ingenierías

Un curso de Python orientado a estudiantes, investigadores y profesionales de ingeniería y ciencias.

.. image:: http://mybinder.org/badge.svg :target: http://mybinder.org/repo/mgaitan/curso-python-cientifico

:docente: Ing. Martín Gaitán

Resumen

En las últimas décadas la computación se ha convertido en un pilar de la ingeniería y el desarrollo científico-tecnológico. En la mayoría de las áreas, el trabajo computacional es un complemento fundamental de la experimentación tradicional y de la teoría, ya que cada vez más se involucra simulaciones numéricas y modelado computacional. Frecuentemente, la tarea de los profesionales involucra el uso de aplicaciones específicas que requieren un gran trabajo de procesamiento de los datos de entrada y un post-procesamiento de los resultados utilizando otras herramientas.

Este curso brinda una introducción sólida al poderoso lenguaje de programación Python (http://python.org) y a las herramientas fundamentales del "ecosistema científico" (Jupyter, Numpy, Matplotlib, Scipy, entre otras) que conforman un entorno de programación interactivo de vanguardia, simple, libre, gratuito y multiplataforma.

Sobre el docente

Martín Gaitán es Ingeniero en Computación por la Universidad Nacional de Córdoba (2011). Socio fundador de Phasety, emprendimiento incubado en la UNC entre 2012 y 2015, donde desarrolló software de simulación especializado para la industria del petróleo y el gas. Actualmente trabaja en Onapsis <https://onapsis.com>_. Pythonista desde hace muchos años, es especialista en el framework web Django y cree entender las necesidades del software científico. Es frecuente orador en eventos de software libre. Hincha de Boca y fundamentalista del locro.

Más información en su blog <http://mgaitan.github.io/>_

Programa

Clase 1 <https://nbviewer.jupyter.org/github/mgaitan/curso-python-cientifico/blob/fcefyn/Clase%201.ipynb>_: Características de Python. Instalación de entorno en Windows/Linux. Modos de usar Python. Anaconda. Introducción a Ipython Notebook. Tipos de datos: enteros, floats, complejos, strings. Estructuras de datos incorporadas: listas, tuplas, diccionarios, conjuntos. Packing, indexing, slicing. Conceptos de mutabilidad, inmutabilidad, secuencia, iterador. Control de flujo: if, for, while. Estructuras por comprensión.

Clase 2 <https://nbviewer.jupyter.org/github/mgaitan/curso-python-cientifico/blob/fcefyn/Clase%202.ipynb>_: Funciones: definición, argumentos posicionales y nominales. Generadores. Funciones incorporadas: zip, range, enumerate, etc. Manejo de I/O: lectura y escritura de archivos. Manejo de excepciones. Manejadores de contexto.

Clase 3 <https://nbviewer.jupyter.org/github/mgaitan/curso-python-cientifico/blob/fcefyn/Clase%203.ipynb>_: Estructura de proyectos: módulos, paquetes, importación. Paseo por la biblioteca estandar: math, CSV, json, pickle Conceptos básicos de programacion orientada a objetos. Introduccion a Matplotlib y Numpy.

Clase 4 <https://nbviewer.jupyter.org/github/mgaitan/curso-python-cientifico/blob/fcefyn/Clase%204.ipynb>_: Numpy: introducción al objeto Array. Slicing extendido, métodos y funciones importantes, importación de datos. Concepto de vista. Máscaras y fancy indexing. Aplicación de Numpy en álgebra lineal. Resolución de sistemas de ecuaciones lineales. Matplotlib: generación de gráficos cartesianos continuos, puntos, histogramas. Matplotlib avanzado: API orientada a objetos. Manipulación del formato y apariencia. Gráficos 3D, otros tipos de gráficos 2D. Exportación con calidad de publicación.

Clase 5 <https://nbviewer.jupyter.org/github/mgaitan/curso-python-cientifico/blob/fcefyn/Clase%205.ipynb>_: Vectorización de funciones. Scipy: algoritmos optimización, integración, procesamiento de imágenes, ajuste de curvas etc. Sympy, cálculo simbólico de precisión arbitraria con Python. Evaluación numérica de expresiones Sympy con Numpy y otras herramientas de alta performance

Licencia

.. figure:: http://i.creativecommons.org/l/by-sa/2.5/ar/88x31.png :target: http://creativecommons.org/licenses/by-sa/2.5/ar/deed.es_AR

Licencia Creative Commons Atribución-CompartirIgual 2.5 Argentina (CC BY-SA 2.5 AR)

Créditos

Parte de este material ha sido inspirado y/o adaptado de múltiples fuentes

  • Scipy Lectures <http://scipy-lectures.github.io/>_
  • Scientific Python Lectures <https://github.com/jrjohansson/scientific-python-lectures>_ de J.R. Johansson
  • El tutorial de Python <http://docs.python.org.ar/tutorial/2/contenido.html>_ traducción al castellano por la comunidad Python Argentina <http://python.org.ar/>_
  • Matplotlib tutorial <http://webloria.loria.fr/~rougier/teaching/matplotlib/>_ por Nicolas P. Rougier
  • Integrar Fortran con Python usando F2py <http://pybonacci.wordpress.com/2013/02/22/integrar-fortran-con-python-usando-f2py/>_ por Pybonacci.
  • Numba vs Python, take 2 <http://nbviewer.ipython.org/url/jakevdp.github.io/downloads/notebooks/NumbaCython.ipynb>_ de Jake Vanderplasf
  • Cómo acelerar tu código python con numba <http://pybonacci.org/2015/03/13/como-acelerar-tu-codigo-python-con-numba/>_ por Pybonacci