Programa y Bibliografía
Contenidos
Fundamentación
Este curso continúa con la formación de aspectos de la programación. El alumno aprenderá a utilizar estructuras de accesos a los datos más complejas, eligiendo aquella más adecuada, en términos de tiempos de acceso y modificación de los datos.
Complementará su formación con el estudio de familias de algoritmos para resolver problemas tipo y aprenderá conceptos básicos de paralelismo y sincronización.
Objetivos
Que el alumno aprenda algoritmos y técnicas de resolución de problemas, y entienda el impacto en la complejidad computacional.
Que el alumno conozca y aprenda a manipular las Estructuras de datos básicas.
Contenidos mínimos
Estructuras de manejo de datos: listas, árboles, grafos, tablas de acceso rápido (dispersión), estructuras híbridas.
Servicios y consultas de datos sobre las estructuras: Altas -bajas - modificaciones.
Recursión. Nociones de Complejidad computacional.
Familias de problemas: Búsqueda exhaustiva, Greedy, algoritmos de ordenamiento.
Uso de Threads. Sincronismo. Acceso restringido.
Bliografía y Material de Referencia
- Apuntes y material publicado en este sitio por la cátedra.
- "Introducción a los Algoritmos" - Cormen, Leiserson, Rivest.
- "Estructura de Datos y Algoritmos" - A. Aho, J. Ullman y J. Hopcroft
- "Estructuras de datos en JAVA" - M.A. Weiss
- Threads, referencia online: https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html