Encabezado Facultad de Ciencias
Presentación

Física Biomédica (plan 2015) 2022-2

Cuarto Semestre, Algoritmos Computacionales

Grupo 3007, 25 lugares. 14 alumnos.
Profesor Diego Alberto Barceló Nieves ma ju 13 a 15
Ayudante Mauricio Sandoval Cuenca
 

Algoritmos Computacionales

Objetivo del curso

Resolver problemas específicos mediante el diseño y la implementación de programas computacionales.

Dinámica del curso en línea

Como plataforma para llevar el curso utilizaremos la aplicación de mensajería instantánea Telegram, por donde haremos videollamadas en el horario de clase, además de atender dudas y publicar avisos y recursos didácticos fuera del horario de clase. El curso está elaborado principalmente a base de cuadernos interactivos (notebooks) y está diseñado para poder llevarse a cabo de manera totalmente autodidacta para quien así lo desee; sin embargo, las clases serán grabadas y publicadas en un canal de Telegram creado para el curso. Para tener acceso al canal, contáctanos usando la información disponible al final de esta presentación.

El material del curso se publicará en el repositorio de GitHub https://github.com/dabnciencias/AC, el cual será actualizado constantemente a lo largo del semestre. Ahí también podrán encontrar las instrucciones para instalar todo el software necesario para abrir y ejecutar los notebooks del curso. Es importante que hayan realizado todo el proceso de instalación antes de la primera clase; si tienen problemas con la instalación, ¡contáctanos!

Temario del curso

El siguiente temario está basado en el temario oficial del curso. Al elaborarlo, asumimos que quienes tomarán el curso no tienen experiencia previa con programación, pero tienen bases teóricas sólidas de álgebra lineal y cálculo diferencial e integral de una variable, así como nociones básicas de ecuaciones diferenciales ordinarias, pues esto último será necesario en el módulo 3. Para los módulos 1, 2 y 3 utilizaremos el lenguaje de programación Julia. La duración aproximada de cada módulo se indica en paréntesis.

Módulo 0 - Introducción a la programación (3 semanas)

  1. ¿Qué es un programa? (Paradigma imperativo de la programación)
  2. ¿Cómo se ejecuta un programa? (Lenguaje de programación, código fuente y sintáxis, comentarios y mensajes de error)
  3. Licencias: legalidad y ética. (Software de código abierto y de código cerrado, software propietario y software libre)
  4. ¿Cómo escribo y ejecuto un programa? (Editor de texto y terminal virtual, REPLs e IDEs)
  5. ¿Cómo aprendo a programar? (Manuales, documentación y foros de preguntas)
  6. Herramientas útiles para hacer programación. (Jupyter y Pluto, Git y GitHub/GitLab)

Módulo 1 - Estructura básica de la programación (5 semanas)

  1. Algoritmos, diagramas de flujo y pseudocódigo.
  2. Conceptos fundamentales. (Operaciones aritméticas, precedencia y asociatividad, tipos de datos, arreglos, variables y constantes, funciones, manejo de memoria y recursividad)
  3. Estructura lógica. (Operaciones lógicas, condicionales y ciclos)
  4. Sistemas numéricos de punto flotante y error numérico. (Épsilon de máquina y propagación de errores)
  5. Métodos numéricos. (Estabilidad y convergencia)
  6. Estructura de la programación modular. (Bibliotecas)

Módulo 2 - Representaciones visuales (2 semanas)

  1. Gráficación de funciones, animaciones y visualización de datos con Plots.
  2. Manipulación de imágenes digitales con JuliaImages.

Módulo 3 - Cómputo científico (5 semanas)

  1. Solución de sistemas lineales de ecuaciones algebráicas. (Método de eliminación Gaussiana)
  2. Aproximación de raíces. (Método de Newton)
  3. Solución de ecuaciones diferenciales ordinarias. (Método de Euler)
  4. Caminante aleatorio.

Módulo 4 - Introducción a otros lenguajes de programación (1 semana)

  1. GNU Octave.
  2. R.

Forma de evaluación

Bibliografía recomendada para el curso

  1. Lauwens y Downey, Think Julia: How to Think Like a Computer Scientist (2019).
  2. Burden, Faires y Burden, Numerical Analysis (2016).
  3. Cormen, Leiserson, Rivest y Stein, Introduction to Algorithms (2009).
  4. Cairó, Metodología de la programación: Algoritmos, diagramas de flujo y programas (2003).

Bibliografía complementaria

  1. Documentación de Julia.
  2. Documentación de Jupyter.
  3. Material del curso ''Introduction to Computational Thinking'' del MIT.
  4. Blum y Bresnahan, Linux Command Line and Shell Scripting Bible (2015).

¡Contáctanos!

  • Diego - dabn@ciencias.unam.mx ó https://t.me/dabnciencias (@dabnciencias, desde Telegram).
  • Mauricio - msandoval@ciencias.unam.mx ó https://t.me/msandoval (@msandoval).

 


Hecho en México, todos los derechos reservados 2011-2016. Esta página puede ser reproducida con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma requiere permiso previo por escrito de la Institución.
Sitio web administrado por la Coordinación de los Servicios de Cómputo de la Facultad de Ciencias. ¿Dudas?, ¿comentarios?. Escribenos. Aviso de privacidad.