Programación
Requisitos de la materia: Álgebra Lineal.
Descripción de la asignatura: Se presenta el arte de la programación, aplicando fundamentos y desarrollo de algoritmos implementados principalmente en Fortran y que puedan ser aplicados a otros lenguajes de programación científica, tal como Python y C/C++. Durante el curso se deben incluir módulos que permitan al estudiante visualizar y graficar datos, también como los fundamentos básicos de
la programación en paralelo.
Índice Temático:
- Introducción a Linux y a la línea de comandos: Descripción general de linux y el uso de una terminal con instrucciones para la manipulación de archivos y directorios.
- Conceptos y características de algoritmos: diseño del algoritmo, pseudocódigo, diagramas de flujo y estructura general de un programa.
- Tipo de datos: String, Character, enteros, punto flotante (float, complejos). Operaciones con datos de diferentes tipos. Además identificar que operaciones son permitidas con los diferentes tipos de datos y evaluar sus resultados.
- Asignación y variables: Manipulación de datos del mismo y diferente tipo. Entrada y salida: Lectura e impresión en dispositivo estándar. Lectura e impresión a archivos con y sin formato.
- Decisiones/condicionales y Ciclos: Manejo de sumatorias, productos, funciones, juegos de azar (generación y aplicación de números aleatorios).
- Arreglos: Manejo de diferentes estructuras de datos y su manipulación. (Sorting and searching).
- Aritmética de punto flotante: Representación de números en lenguaje maquina. Ejemplos relacionados con el manejo de la precisión.
- Funciones y subrutinas: Manejo de subprogramas internas y externos generados por el estudiante Uso y manejo de librerías (IMSL, LAPACK, Numerical Recipes, etc.).
- Visualización y graficado.
- Programación en paralelo: Conceptos básicos de programación en paralelo mediante ejemplos sencillos que usen paquetería de MPICH y/o similares.
Bibliografía básica:
- Luis Joyanes Aguilar, Fundamentos de programación: Algoritmos, estructura de datos y objetos. (McGraw-Hill, España, 2008), 4a ed.
- Ian Chivers and Jane Sleightholme, Introduction to Programming with Fortran: With coverage of Fortran 90, 95, 2003 and 77. (Springer, United States of America, 2006).
- Michael Mecalf, John Reid, and Malcom Cohen, Modern fortran explained. (Oxford University Press, New York, 2011).
Bibliografía complementaria:
- Stephen J. Chapman, “Fortran 95/2003 for Scientists and Engineers 3ed”, McGrawll-Hill 2007.
- Jane Sleightholme, “Introduction to Programming with Fortran”, Springer 2006.
- Hans Petter Langtangen, “ A primer on Scientific Programming with Python”, Springer 2009.
Planeación educacional
Competencias a desarrollar
- Capacidad de abstracción, análisis y síntesis
- Capacidad de aprender y actualizarse permanentemente
- Habilidad para trabajar en forma autónoma
- Utilizar y elaborar programas o sistemas de computación para el procesamiento de información, cálculo numérico, simulación de procesos físicos o control de experimentos
- Buscar, interpretar y utilizar literatura científica
Resultados del aprendizaje | Actividades educacionales | TETEH | Evaluación |
---|---|---|---|
Introducción a Linux y líneas de comando. Conceptos y características de algoritmos. Tipos de datos. Asignación y variables. | Teóricas, prácticas: (15T+15P) Autoestudio: 20 | 30 20 | Examen escrito, programas |
Entrada y salida. Decisiones/condicionales y Ciclos. Arreglos. Aritmética de punto flotante. | Teóricas prácticas: (10T+20P) Autoestudio: 20 | 30 20 | Examen escrito, programas |
Funciones y subrutinas. Visualización y graficado. Programación en paralelo. | Teóricas prácticas: (10T+20P) Autoestudio: 30 | 30 30 | Examen escrito, programas |
Tiempo total de trabajo del estudiante: 90 horas presenciales + 60 horas de autoestudio = 160 horas.
Número de créditos: 10