D. Programa de Estructuras de Datos y Algoritmos
Datos de la Actividad Curricular
- Nombre: Estructuras de Datos y Algoritmos
- Área de formación: Programación
- Créditos: 12
Objetivos
El objetivo de esta actividad curricular es introducir estructuras de datos básicas y sus algoritmos de manipulación, realizar un análisis de su eficiencia, e introducir el concepto de abstracción de datos para el diseño y la evaluación de algoritmos de porte mediano.
A nivel de los objetivos de aprendizaje, el estudiante será capaz de:
- Implementar y analizar algoritmos recursivos.
- Definir y manipular estructuras de datos lineales y arborescentes, tantto estáticas como dinámicas.
- Reconocer los conceptos de modularización, abstracción de datos, en- capsulamiento y Tipo Abstracto de Datos (TAD).
- Explicar la diferencia entre especificación, implementación y uso de TADs.
- Especificar diferentes TADs y ejemplificar su uso. Por ejemplo: Lista, Pila, Cola de Prioridad, Conjunto, Mapping y Grafo.
- Implementar TADs usando estructuras de datos, por ejemplo arreglos, estructuras de datos lineales y arborescentes de memoria dinámica, tablas de dispersión y árboles parcialmente ordenados.
- Elegir estructuras de datos adecuadas para implementar los TADs teniendo en cuenta requerimientos de eficiencia en tiempo de ejecución y espacio de almacenamiento.
- Definir nociones de eficiencia para aplicarlas al análisis de los algoritmos de las estructuras vistas.
- Identificar qué TADs se vinculan con la resolución de ciertos problemas.
Metodología de enseñanza
- Horas clase (teórico): 45
- Horas clase (práctico y laboratorio): 75
- Horas evaluación: 6
- Horas estudio: 54
Total de horas de dedicación del estudiante: 180
Temario
- Iteración y recursión
- Implementación de invocaciones a procedimientos y funciones
- Implementación y uso de esquemas recursivos
- Análisis comparativo entre algoritmos recursivos e iterativos
- Introducción al análisis de algoritmos
- Eficiencia en espacio de almacenamiento y tiempo de ejecución
- Tiempo de ejecución y orden del peor caso de algoritmos iterativos y recursivos
- Introducción al análisis del caso promedio
- Estructuras de datos estáticas y dinámicas
- Estructuras de datos lineales. Distintos tipos de listas
- Estructuras de datos arborescentes. En particular, árboles binarios, binarios de búsqueda, árboles balanceados y árboles generales
- Tablas de dispersión (hashing)
- ) Montículos binarios (binary heap)
- Implementación de estructuras múltiples para resolver problemas con restricciones de eficiencia
- Tipos abstractos de datos (TADs)
- El rol de la abstracción en el diseño de sistemas
- Especificación e implementación de TADs Distintos tipos de listas, pilas y colas
Conjuntos, multiconjuntos, funciones parciales (mappings, tablas) y colas de prioridad.
Grafos
- Uso de TADs en la resolución de problemas de porte mediano
Bibliografía
Tema | Básica | Complementaria |
Iteración y recursión | (1) | (1,2) |
Introducción al análisis de algoritmos | (1) | (3) |
Estructuras de datos estáticas y dinámicas | (1) | (1,2,3) |
Tipos abstractos de datos (TADs) | (1) | (3) |
Básica
1. Mark A. Weiss. Data Structures and Algorithm Analysis in C (2nd Edition), (1996).
Complementaria
- B. W. Kernighan, D. M. Ritchie. El lenguaje de programación C (Spanish Edition), (2021).
- H. M. Deitel, P. J. Deitel. Cómo programar en C/C++. Prentice-Hall Hispanoamericana, (1998).
- G. Brassard, P. Bratley. Fundamentos de Algoritmia. Prentice Hall, (1998).
Conocimientos Recomendados
Conocimientos Previos Exigidos Matemática Discreta y Lógica 1. Introducción a la Programación.
Conocimientos Previos Recomendados Solo se requieren conocimientos de los cursos Matemática Discreta y Lógica 1, e Introducción a la Programación. Se ubicaría en el segundo semestre del primer año de la carrera.