La materia tiene por objetivo que l@s estudiantes comprendan la noción de dato y de estructuras de datos, y su importancia e interrelación estrecha con la estructura algorítmica de un programa.
Entienda la diferencia entre acceso aleatorio y acceso secuencial. Conozcan la idea de interface de una estructura de datos, y sea capaz de utilizarla productivamente para la solución de problemas, entre otras cosas.
Modos de Cursada: Cuatrimestral Presencial
Horas Semanales: 8 horas
Demanda de tiempo en casa semanal: 8 horas
Sitio web:
Programa de la materia:
Contenidos Mínimos:
- Recursión sobre listas y árboles. Programas recursivos.
- Tipos algebraicos: maybe, either, enumerativos, listas, árboles binarios, árboles generales.
- Estructuras contenedoras: pilas, colas, diccionarios, heaps, árboles balanceados, contenedores basados en representaciones numéricas.
- Nociones de representación e invariante de representación y su utilidad en el diseño e implementación de estructuras de datos.
- Uso imperativo de estructuras de datos. Iteración en listas y árboles.
- Modelo de memoria imperativo: stack/heap, alocación de memoria. Punteros. Variables por referencia.
- Listas encadenadas y sus variantes. árboles implementados con punteros. Binary heaps implementadas con arrays.
- Hashing. Análisis de eficiencia e implementación.
- Algoritmos de ordenamiento. Clasificación e implementación.
- Nociones básicas de algoritmos sobre grafos.