1151042 - Algoritmos y Estructuras de Datos

Institución: Universidad Autónoma Metropolitana, Azcapotzalco.
Instructor: Rodrigo Alexander Castro Campos.
Trimestre: 2024-I.

Grupos: CSI01.
Horario: lunes, miércoles y viernes de 8:30 a 10:00.
Salón: G206.

Contenido oficial del curso:
  • Tipos de datos abstractos y estructuras dinámicas.
  • Recursividad y eficiencia.
  • Estructuras para listas.
  • Estructuras para árboles.
  • Estructuras para gráficas.
  • Algoritmos de búsqueda interna.
  • Algoritmos de ordenamiento interno.
Calificación:

Habrán diez tareas con un valor de 10 puntos cada una y tres exámenes. Las tareas consistirán en escribir programas para la plataforma omegaUp que resuelvan al 100% el problema de programación indicado para la evaluación. Sus datos de registro deberán enviarse mediante este formulario antes de la entrega de la primera tarea. No se calificarán programas de ninguna otra forma. Cada tarea estará disponible con al menos una semana de anticipación con respecto a la fecha de entrega. Los exámenes serán escritos y consistirán en la implementación de subrutinas en lenguaje C o C++ que resuelvan el o los problemas especificados. Los exámenes se llevarán a cabo de manera presencial en tiempo de clase y tendrán una duración máxima de 15 minutos. La fecha de cada examen se anunciará con al menos una clase de anticipación. No habrá evaluación terminal. El curso se impartirá en el lenguaje C++.

Es requisito para aprobar el curso obtener un promedio de exámenes aprobatorio. Cumpliendo eso, la calificación final se obtiene de sumar los puntos provenientes de las tareas. La escala de calificación en acta es:
  • Al menos 60 puntos para acreditar con S.
  • Al menos 73 puntos para acreditar con B.
  • Al menos 87 puntos para acreditar con MB.

De acuerdo al Reglamento de Alumnos de la UAM, es falta de los alumnos en contra de la institución el suplantar o permitir ser suplantado en la realización de actividades académicas y se impondrá desde amonestación escrita hasta suspensión por dos trimestres. Los alumnos que incurran en esta falta no tendrán derecho a aprobar el curso.

Pueden consultar esta lista de problemas de "Programación Estructurada" para que practiquen.
Pueden consultar esta lista de problemas de "Algoritmos y Estructuras de Datos" para que practiquen.

Calendario: El calendario es tentativo y podrá cambiar. Pueden consultar programas de ejemplo de los temas del curso.

  • 06/03: Presentación del curso. Introducción a omegaUp 1, 2. Prueba diagnóstica.
  • 08/03: Algoritmia y eficiencia. Tarea 1 para entrega el 18/03. Instancia de ejemplo. Envíos aceptados.
  • 11/03: Introducción a C++.
  • 13/03: La pila del proceso, paso por valor y por referencia.
  • 15/03: Recursión y sus aplicaciones. Tarea 2 para el 29/03. Envíos aceptados.
  • 18/03: Apuntadores, direcciones de memoria y secuencias.
  • 20/03: Algoritmos sobre secuencias.
  • 22/03: Búsqueda lineal y paso de predicados. Tarea 3 para el 05/04. Envíos aceptados.
  • 25/03: Búsqueda binaria en secuencias ordenadas. Ejemplos previos al examen 1 y posibles soluciones.
  • 27/03: Búsqueda binaria en la biblioteca de C++.
  • 29/03: Día de descanso obligatorio.
  • 01/04: Algoritmos de ordenamiento de secuencias. Tarea 4 para el 15/04. Envíos aceptados.
  • 03/04: Algoritmos de ordenamiento de secuencias.
  • 05/04: Predicados de ordenamiento. Examen 1. Calificaciones.
  • 08/04: Predicados de ordenamiento. Regiones de memoria.
  • 10/04: Uso del almacenamiento libre.
  • 12/04: Arreglos como contenedores y relocalización dinámica.
  • 15/04: Contenedores de C++ y semántica por valor. Tarea 5 para el 26/04. Envíos aceptados.
  • 17/04: Estructuras de datos. Dobles colas.
  • 19/04: Dobles colas e iteradores. Ejemplos previos al examen 2 y posibles soluciones.
  • 22/04: Pilas y colas. Tarea 6 para el 29/04. Envíos aceptados.
  • 24/04: Introducción a listas enlazadas.
  • 26/04: Listas enlazadas nulo-terminadas y listas enlazadas circulares.
  • 29/04: Listas enlazadas de la biblioteca de C++. Examen 2. Tarea 7 para el 10/05.
  • 01/05: Día de descanso obligatorio.
  • 03/05: Colas de prioridad y montículos binarios.
  • 06/05: Conjuntos ordenados y árboles binarios de búsqueda. Tarea 8 para el 17/05.
  • 08/05: Implementación de árboles binarios de búsqueda. Ejemplos previos al examen 3 y posibles soluciones.
  • 10/05: Día de descanso obligatorio.
  • 13/05: Árboles binarios de búsqueda balanceados.
  • 15/05: Día de descanso obligatorio.
  • 17/05: Árboles binarios de búsqueda en la biblioteca de C++.
  • 20/05: Introducción a gráficas y sus aplicaciones.
  • 22/05: Representaciones de gráficas y recorridos. Examen 3.
  • 24/05: Caminos más cortos y árboles abarcadores de costo mínimo.
  • Calificaciones hasta el momento.
Entornos de programación que pueden usar localmente:
Entornos de programación que pueden usar en línea:
Bibliografía:
  • Castro Campos. Notas de curso (se irán actualizando conforme avance el trimestre).
  • Aho A., Ullman J., Hopcroft J., "Estructuras de datos y algoritmos", Pearson.
  • Kernighan B., Ritchie D., "El lenguaje de programación C", Pearson.
  • Knuth D., "The Art of Computer Programming: Vol. 3 Sorting and Searching", Addison Wesley.
  • Llana L., et al., "Ejercicios de programación creativos y recreativos en C++", Prentice Hall, 2002.
  • Sedgewick R., "Algoritmos en C++", Pearson.
  • Stroustrup, B., "The C++ Programming Language", Addison-Wesley, 2013.
Enlaces de interés: