1151042 - Algoritmos y Estructuras de Datos
Institución: Universidad Autónoma Metropolitana, Azcapotzalco.
Instructor: Rodrigo Alexander Castro Campos.
Trimestre: 2025-P.
Grupo: CSI04.
Horario: Lunes, miércoles y viernes de 7:00 a 8:30.
Salón: E-309.
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á diez tareas con un valor de 10 puntos cada una y tres exámenes con una calificación máxima de 10 cada uno. 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 evaluación. Cada tarea estará disponible con al menos una semana de anticipación con respecto a la fecha de entrega. Los exámenes consistirán en escribir a papel la implementación de subrutinas o programas 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 de 25 minutos. Los exámenes comenzarán 30 minutos antes de terminar la sesión y se requiere asistencia puntual a ellos. 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++.
La escala de calificación en acta es:
- Al menos 60 puntos en tareas y al menos 6.0 de promedio en exámenes para acreditar con S.
- Al menos 73 puntos en tareas y al menos 7.3 de promedio en exámenes para acreditar con B.
- Al menos 87 puntos en tareas y al menos 8.7 de promedio en exámenes para acreditar con MB.
Todas las actividades anteriormente mencionadas deben realizarse exclusivamente por el alumno a ser evaluado, y no por otras personas ni por herramientas de generación tales como las basadas en inteligencia artificial. 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, presentar como propios trabajos u obra intelectual que sean de la autoría o titularidad de otra persona, esto en las actividades que se requieran en las UEA, y engañar a una persona para obtener ilícitamente un bien o para alcanzar un beneficio indebido. Quienes incurran en estas faltas no tendrán derecho a aprobar el curso y podrán recibir sanciones por parte de la institución que van desde la amonestación escrita hasta la suspensión.
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.
- 26/05: Segunda ronda del proceso de inscripción 2025-P.
- 28/05: Repaso de programación estructurada.
- 30/05: Presentación del curso. Introducción a omegaUp 1, 2.
- 02/06: Algoritmia y eficiencia.
- 04/06: Introducción a C++.
- 06/06: La pila del proceso, paso por valor y por referencia.
- 09/06: Algoritmos iterativos y recursivos.
- 11/06: Recursión y sus aplicaciones.
- 13/06: Apuntadores y direcciones de memoria.
- 16/06: Apuntadores como una forma de recorrer secuencias.
- 18/06: Algoritmos sobre secuencias.
- 20/06: Búsqueda lineal y paso de predicados.
- 23/06: Búsqueda binaria en secuencias ordenadas.
- 25/06: Búsqueda binaria en la biblioteca de C++.
- 27/06: Algoritmos de ordenamiento de secuencias. Examen 1.
- 30/06: Algoritmos de ordenamiento de secuencias.
- 02/07: Algoritmos de ordenamiento de secuencias. Predicados de ordenamiento.
- 04/07: Predicados de ordenamiento de tipos struct. Regiones de memoria.
- 07/07: Memoria dinámica y arreglos como contenedores.
- 09/07: Contenedores de C++ y semántica por valor.
- 11/07: Estructuras de datos. Dobles colas.
- 14/07: Dobles colas e iteradores.
- 16/07: Pilas y colas. Introducción a listas enlazadas.
- 18/07: Listas enlazadas nulo-terminadas y listas enlazadas circulares.
- 21/07: Listas enlazadas de la biblioteca de C++.
- 23/07: Colas de prioridad y montículos binarios. Examen 2.
- 25/07: Colas de prioridad de la biblioteca de C++. Árboles binarios de búsqueda.
- 28/07: Implementación de árboles binarios de búsqueda.
- 30/07: Árboles binarios de búsqueda balanceados.
- 01/08: Árboles binarios de búsqueda en la biblioteca de C++.
- 04/08: Introducción a gráficas, aplicaciones y representaciones.
- 06/08: Recorridos en gráficas. Examen 3.
- 08/08: Caminos más cortos y árboles abarcadores de costo mínimo.
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.
- 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: