UAM


1151040 Análisis y Diseño de Algoritmos
Trimestre 2023 Invierno


Profesor
: Dr. Francisco Javier Zaragoza Martínez.
Inicio y fin del curso: lunes 6 de febrero de 2023 a viernes 16 de junio de 2023.
Grupo: CSI81 (lunes, miércoles y viernes de 16:00 a 17:30).
Asesorías: por correo electrónico a través de cuentas institucionales.
Lugar: G206.
Cupo: 36.

Contenido

Se cubrirá el contenido oficial del curso (el cual se detalla abajo). Es posible que el temario se cubra en un orden distinto al allí mencionado.
  1. Análisis de correctitud y complejidad.
  2. Recursividad y ecuaciones de recurrencia.
  3. Algoritmos de divide y vencerás.
  4. Algoritmos de búsqueda con retroceso.
  5. Algoritmos de programación dinámica.
  6. Algoritmos de búsqueda local.
  7. Algoritmos glotones.
  8. Problemas NP completos.

Evaluación

Habrá al menos diez tareas semanales (valor máximo de 100 puntos cada una, habrá puntos parciales) y cuatro exámenes en clase (valor máximo de 3 puntos cada uno, no habrá puntos parciales). La mayoría de estas evaluaciones serán programas en C, C++ o Java que se enviarán a omegaUp. Para acreditar el curso se requieren al menos:
Consideraré cualquier copia o plagio de cualquier evaluación (ya sea programa o no) de forma automática como NA para todos los involucrados. Reportaré los casos que se presenten a las autoridades correspondientes. No copies. No pases la tarea. No plagies.

Recuerden que, de acuerdo al Reglamento del Alumnado de la UAM, es falta del alumnado en contra de la Institución el suplantar o permitir ser suplantado en la realización de actividades académicas (Artículo 9) y se impondrá desde amonestación escrita hasta suspensión por dos trimestres (Artículo 13).

Calendario

El calendario que muestro abajo es tentativo e irá apareciendo paulatinamente. Allí colocaré el material de estudio y de consulta. Mientras tanto, unas transparencias para los primeros temas están aquí y unos materiales para los otros temas están acá.

Preparativos: 23 de enero a 3 de febrero

  1. Asegúrate de tener disponible una computadora con internet en la que puedas editar, compilar y ejecutar programas en C. Si tienes alguna distribución de Linux es probable que ya tengas gcc y algún editor de texto instalado. Otra posibilidad es instalar Code::Blocks. En Windows instala la versión 17.12 para 32 bits o la 20.03 para 32 o 64 bits (tutorial) o bien instala Dev-C++. Para Mac OS X la versión más reciente de Code::Blocks es la 13.12 o instala Xcode. En Android instala Coding C y en iOS instala Mobile C. Como último recurso, existen compiladores de C en línea (repl.it, tio.run y onlinegdb).
  2. Usaremos exclusivamente el correo institucional. Si no tienes el tuyo, actívalo con la Coordinación de Servicios de Cómputo (CSC).
  3. Usaremos la plataforma omegaUp de forma extensiva. Crea una cuenta usando tu correo institucional, tu usuario deberá ser tu nombre y los cuatro últimos dígitos de tu matrícula (ejemplo: FranciscoZaragoza1234). En tu perfil debes anotar tu nombre completo y como escuela UAM Azcapotzalco. Mira el tutorial de omegaUp.
  4. Envía un correo a mi ayudante Samuel Hernández (rshs@azc.uam.mx) desde tu correo institucional con esta información: tu nombre completo, tu número de matrícula, tu carrera y tu usuario de omegaUp. Una vez que le envíes este correo, él te registrará en el curso ADA 2023 Invierno de omegaUp.

Si tienes alguna duda acerca de estos preparativos, envía un correo a mi ayudante desde tu correo institucional. No lo dejes para el último momento.

Semana 1: 6 de febrero a 10 de febrero

Esta semana iniciaremos el Tema 1: Análisis de correctitud y complejidad.

Semana 2: 13 de febrero a 17 de febrero

Esta semana cubriremos el Tema 2: Recursividad y ecuaciones de recurrencia.

Semana 3: 20 de febrero a 24 de febrero

Esta semana iniciaremos el Tema 3: Algoritmos de divide y vencerás.

Semana 4: 27 de febrero a 3 de marzo

Esta semana continuaremos el Tema 3: Algoritmos de divide y vencerás.

Semana 5: 6 de marzo a 10 de marzo

Esta semana terminaremos el Tema 3: Algoritmos de divide y vencerás.

Debido al paro de la UAM, tomaremos las siguientes medidas:

  1. Como ya vieron, la tarea que tenía originalmente su fecha de entrega para el 11 de marzo cambió para tener fecha de entrega el 12 de marzo.
  2. La tarea que inició el 12 de marzo y que tenía fecha de entrega para el 18 de marzo tendrá fecha de entrega el 16 de mayo.
  3. No iniciarán más tareas mientras no se levante el paro.
  4. Una vez que se levante el paro, agendaré un nuevo calendario para las tareas restantes.
  5. De la misma manera, una vez que se levante el paro, agendaré un nuevo calendario para los exámenes restantes.

Mientras tanto, yo me encuentro disponible por correo electrónico para cualquier duda que pueda surgir.

Semana 6: 8 de mayo a 12 de mayo.

Esta semana repasaremos algunos temas con sesiones en línea (por Meet de 16:00 a 17:00).

Semana 7: 15 de mayo a 19 de mayo

Esta semana cubriremos el Tema 4: Algoritmos de búsqueda con retroceso.

Semana 8: 22 de mayo a 26 de mayo

Esta semana iniciaremos el Tema 5: Algoritmos de programación dinámica.

Semana 9: 29 de mayo a 2 de junio

Esta semana terminaremos el Tema 5: Algoritmos de programación dinámica.

Semana 10: 5 de junio a 9 de junio

Esta semana cubriremos el Tema 6: Algoritmos de búsqueda local.

Semana 11: 12 de junio a 16 de junio

Esta semana cubriremos el Tema 7: Algoritmos glotones.

Entrega de actas y evaluación de recuperación: 19 de junio a 3 de julio

Estos días ocurrirán las evaluaciones de recuperación.

Bibliografía

  1. Baase y Van Gelder. Algoritmos computacionales: Introducción al análisis y diseño. Addison Wesley.
  2. Castro Campos. Análisis y diseño de algoritmos. UAM Azcapotzalco.
  3. Dasgupta, Papadimitriou, Vazirani. Algorithms. Mc Graw Hill.
  4. Erickson. Algorithms. UIUC.
  5. Kleinberg y Tardos. Algorithm Design. Addison Wesley.
  6. Knuth. The Art of Computer Programming: Vol. 3 Sorting and Searching. Addison Wesley.
  7. Parberry. Problems on Algorithms. Prentice Hall.
  8. Roberts. Thinking Recursively. Wiley.
  9. Sedgewick y Flajolet. An Introduction to the Analysis of Algorithms. Addison Wesley.
  10. Sedgewick y Wayne. Algorithms. Addison Wesley.