La materia tiene por objetivo principal enseñar conceptos de Tipos de Datos Abstractos y su correcto uso. Adicionalmente se enseñan conceptos de análisis de algoritmos que ayudan a comparar deferentes implementaciones y a elegir la mas adecuada según el caso.
Lenguajes compilados e interpretados. Lenguaje de programación C. Punteros. Manejo de memoria.
Análisis de algoritmos y complejidad computacional. Notación Big O. Teorema maestro.
Algoritmos recursivos. Recursividad de cola. Resolución de problemas con backtracking.
Programación y calidad del Software. Introducción a la metodología de desarrollo por pruebas (TDD).
Tipos de datos abstractos (TDA). Concepto y uso. TDA básicos pila y cola.
TDA Lista. Operaciones básicas. Iteradores internos y externos.
TDA árbol. Árbol binario, ABB, AVL y Rojo negro. Árboles B. Heap binario.
Métodos de ordenamiento. Quicksort, Merge sort, Heap sort. Métodos no comparativos.
Diccionarios, definición y uso. Implementación de diccionario con tablas de Hash. Hashes abiertos y cerrados.
Introducción a grafos. Conceptos, características y representación. Dijkstra, Prim, Kruskal. Recorridos de grafos.