Python para Cálculo Científico y Técnico (X ed.)
Modalidad de celebración:
Univ. Granada (Plataforma MoodleCloud)
Duración (horas presenciales y horas no presenciales):
15 horas presenciales y/o síncronas online (de 16:30 a 19:00), + 15 horas asíncronas y 45 de trabajo autónomo del alumno. Horas totales 75.
Dirección:
Pedro González Rodelas
Prof. Titular de Universidad
Coordinación:
Francisco Miguel García Olmedo
Prof. Titular de Universidad
Nota: La información sobre el reconocimiento de créditos, puede consultarse en el siguiente enlace: reconocimiento de créditos
Este curso será reconocido en los siguientes Grados de la Universidad de Granada:
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Biología
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Biotecnología
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Ciencias Ambientales
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Estadística
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Física
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Geología
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Ingeniería Electrónica Industrial
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Ingeniería Química
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Matemáticas
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Óptica y Optometría
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Grado en Química
2 créditos ECTS OPTATIVOS en la Facultad de Ciencias en el Doble Grado en Física y Matemáticas
3 créditos ECTS OPTATIVOS en la E.T.S. de Ingeniería de la Edificación en el Grado en Edificación
3 créditos ECTS OPTATIVOS en la Facultad de Ciencias del Deporte en Todos los Grados adscritos
0,5 créditos ECTS OPTATIVOS en la E.T.S. de Arquitectura en elGrado en Arquitectura
3 créditos ECTS OPTATIVOS en la E.T.S. de Ingenierías Informáticas y Telecomunicaciones en el Grado en Ingeniería de Tecnologías de Telecomunicación
2 créditos ECTS OPTATIVOS en la E.T.S. de Ingenierías Informáticas y Telecomunicaciones en el Grado en Ingeniería Informática
3 créditos ECTS OPTATIVOS en la E.T.S de Ingeniería de Caminos, Canales y Puertos en Todos los Grados adscritos
Justificación del curso y objetivos
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, Maple, 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 módulos de cálculo simbólico (SymPy), numérico (NumPy, Scipy) y gráfico (PyPlot 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 gracias a Jupyter Notebook 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: 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.
En esta situación totalmente excepcional provocada por la actual pandemia de la COVID-19, que amenaza con la posibilidad de nuevos rebrotes a nivel general, y especialmente en el ambiente universitario, hemos optado por reconfigurar esta séptima edición del curso de manera que se pueda seguir y cursar de manera totalmente online, reduciendo al mínimo las horas síncronas, o posiblemente presenciales, que se limitarán a una mera orientación previa de cada sesión o alguna que otra tutoría grupal, que se podría realizar presencialmente sólo en caso de que fuese solicitada por un grupo suficientemente numeroso de alumnos y las condiciones sanitarias del momento y la disponibilidad del aula apropiada en un centro de la UGR lo permita.
El curso servirá pues para hacer más fácil y llevadera tanto la inmersión inicial, como el uso avanzado de muchos de los entresijos y detalles más técnicos de este potente y completo lenguaje de programación. Así pues estará orientado tanto a los estudiantes de carreras científico-técnicas y de ingeniería que quieran aprenderlo, como para los doctorandos e investigadores, a los que pueda resultar útil en su investigación.
a) El alumno sabrá/comprenderá:
• Las peculiaridades y diferencias fundamentales entre las distintas formas de programar: tanto en su forma procedural básica, o bien de tipo funcional, así como en su versión más avanzada (orientada a objetos).
• Las distintas estructuras de datos que se pueden usar en Python.
• El diálogo y significado de los errores básicos en el proceso de interpretación/compilación.
b) El alumno será capaz de:
• Descargar, instalar e interactuar con varias versiones y distribuciones de desarrollo con el lenguaje Python más extendidas de las disponibles actualmente.
• 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).
• 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 modo de instalación y aplicaciones fundamentales.
• Solucionar los errores surgidos en tiempo de interpretación/compilación.
La evaluación se llevará a cabo basándose en:
• La asistencia/conexión a las sesiones, que será obligatoria en no menos del 75% de las sesiones presenciales/síncronas.
• La evolución de la persona inscrita, comprobada a través de la realización de cortas actividades y ejercicios sencillos planteados sobre las explicaciones dadas o los videos grabados y materiales proporcionados en la plataforma online elegida.
• La evaluación rigurosa de al menos una práctica completa, de envergadura suficiente como para poder valorar la capacitación en la materia, que deberá ser realizada en las horas no presenciales/síncronas y presentada en tiempo y forma a través de la plataforma para la docencia elegida.
Cualificación personal o empleos a los que da acceso:
Curso capacitador para la programación en lenguaje Python.
Viernes, 7 de octubre de 2022 (online de manera síncrona y/o presencial)
16:30-19:00 | Presentación/Resumen sobre: Introducción e historia del lenguaje Python. Distintas vías de instalación del software (tanto via pip, conda, o bien con alguna de las distribuciones multiplataforma más extendidas). Uso de Virtualenv. Pedro González Rodelas. |
Desde el 7 al 14 de octubre del 2022 (online de manera asíncrona)
Título del material y vídeos desarrollados: Tipos y estructuras de datos: enteros, reales, listas, tuplas, strings, conjuntos y diccionarios Francisco M. García Olmedo |
Viernes, 14 de octubre de 2022 (online de manera síncrona y/o presencial)
16:30-19:00 | Presentación/Resumen sobre tipos y particularidades de la programación con el lenguaje Python Francisco M. García Olmedo |
Desde el 14 al 21 de octubre de 2022 (online de manera asíncrona)
Título del material y vídeos desarrollados: Programación procedural y de tipo funcional con Python. Funciones y módulos. Recursividad. Tratamiento de excepciones Francisco M. García Olmedo |
Viernes, 21 de octubre de 2022 (online de manera síncrona y/o presencial)
16:30-19:00 | Presentación/Resumen sobre: Introducción a la programación Orientada a Objetos; planteamiento general y conceptos básicos Francisco M. García Olmedo |
Desde el 21 al 28 de octubre de 2022 (online de manera asíncrona)
Título del material y vídeos desarrollados: Técnicas de programación Orientada a Objetos: uso de clases, ejemplos de herencia, polimorfismo y encapsulación con el lenguaje Python Francisco M. García Olmedo |
Viernes, 28 de octubre de 2022 (online de manera síncrona y/o presencial)
16:30-19:00 | Presentación/Resumen sobre: Cálculo Simbólico/aproximado y representaciones gráficas con Python Pedro González Rodelas |
Desde el 28 de octubre al 4 de noviembre de 2022 (online de manera asíncrona)
Título del material y vídeos desarrollados: Librería SymPy y módulo decimal. Aplicaciones. Librería Matplotlib y entornos Pyplot/Pylab), uso de bokeh y/o Mayavi para representaciones especiales Pedro González Rodelas |
Viernes, 4 de noviembre de 2022 (online de manera síncrona y/o presencial)
16:30-19:00 | Presentación/Resumen sobre: Métodos numérico/estadísticos y de tratamiento de datos con Python Pedro González Rodelas |
Desde el 4 al 11 de noviembre de 2022 (online de manera asíncrona)
Título del material y vídeos desarrollados: Librerías 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. Introducción a la librería 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, 11 de noviembre de 2022 (online de manera síncrona y/o presencial)
16:30-19:00 | Presentación/Resumen sobre: 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 |
Desde el 11 de noviembre de 2022 (online de manera asíncrona)
Título del material y vídeos desarrollados: Combinando código Python con C, C++ y Fortran, adaptación de códigos MATLAB/Octave. Otras herramientas especiales: interacción con el SO y scripting, introducción al tratamiento de expresiones regulares, uso de LaTeX y generación automática de informes con gráficas usando Python. Introducción al Web Scraping y a TensorFlow para Deep Learning Alejandro E. Martínez Castro |