7541 - Algoritmos y Programación II PLANIFICACIONES Planificaciones 7541 - Algoritmos y Programación II Docente responsable: WACHENCHAUZER ROSA GRACIELA 1 de 5 Actualización: 2ºC/2016 7541 - Algoritmos y Programación II PLANIFICACIONES Actualización: 2ºC/2016 OBJETIVOS Introducir los conceptos de diseño de algoritmos y de estructuras de datos, utilizando nociones de eficiencia algorítmica para poder seleccionar la solución más adecuada para un contexto dado. CONTENIDOS MÍNIMOS Eficiencia de algoritmos. Métodos de diseño de algoritmos. Tipos Abstractos de Datos. Implementaciones eficientes de los Tipos Abstractos de Datos. Resolución de problemas usando Tipos Abstractos de Datos. Análisis de la eficiencia de esas soluciones. PROGRAMA SINTÉTICO Eficiencia de algoritmos. Notación O. Diseño de algoritmos: División y Conquista (métodos de búsqueda y ordenamiento, multiplicación por Karatsuba Ofman) y Teorema Maestro de la División y Conquista; Programación Dinámica; Algoritmos Golosos; resolución por Backtracking. TAD: Pilas, Colas, Conjuntos, Diccionarios, Colas de Prioridad, Grafos. Implementación de conjuntos y diccionarios mediante listas enlazadas, mapas de bits, hashing abierto y cerrado, árboles binarios de búsqueda, árboles binarios de búsqueda balanceados. Implementación de colas de prioridad mediante heaps. Más métodos de ordenamiento por comparación: el heapsort. Métodos de ordenamiento cuando hay más información sobre las claves. Algoritmos en grafos. PROGRAMA ANALÍTICO Cálculo de eficiencia, notación O. Recursividad - División y conquista - Merge sort. Quick sort - Teorema maestro - Karatsuba Ofman. Tipos abstractos de datos. Notación. Pilas. Colas. Diccionarios. Uso de TADs: Aplicaciones usando pilas, colas y diccionarios. Listas enlazadas. Pilas y Colas implementadas sobre arrays y sobre listas enlazadas. Implementaciones de diccionario I: mapas de bits, hashing cerrado, hashing abierto. Árboles binarios y sus recorridos. Árboles binarios de búsqueda. Implementaciones de diccionario II: árboles binarios de búsqueda. Árboles AVL. Implementaciones de diccionario III: Árboles AVL. Colas de prioridad. Heaps. Heapsort El ordenamiento por comparación es n log n. Métodos de ordenamiento con más información: Bin Sort, Radix Sort. Diseño de algoritmos: Programación dinámica, algoritmos golosos, backtracking. TAD Grafos. Representación con listas de adyacencia y con matriz de adyacencia. Orden topológico en grafos orientados acíclicos. Algoritmos de camino mínimo según el tipo de grafo. Algoritmo de Prim para el cálculo del árbol de tendido mínimo de un grafo no orientado. Cálculo de puntos de articulación y de componentes fuertemente conexas. BIBLIOGRAFÍA - Weiss, Mark Allen: “Estructuras de datos y algoritmos", Addison- Wesley Iberoamericana, 1995. - Kruse, Robert Leroy; Tondon, Clovis L.; Leung, Bruce P: “Data structures and program design in C", PrenticeHall, 1997. - Brassard, Gilles; Bratley, Paul: “Algorithmics: theory and practice", Prentice-Hall, 1988. - Sedgewick, Robert: “Algorithms in C++", Addison-Wesley, 1992. - Tenenbaum, Aaron M.; Langsam, Yedidyah; Augenstein, Moshe J.: “Estructuras de datos en C", Prentice-Hall Hispanoamericana, 1993. - Kernighan, Brian W.; Ritchie, Dennis M.: “El lenguaje de programación C", Prentice-Hall Hispanoamericana, 1991. 2 de 5 7541 - Algoritmos y Programación II PLANIFICACIONES Actualización: 2ºC/2016 RÉGIMEN DE CURSADA Metodología de enseñanza La materia sera dictada en 32 clases a lo largo de 16 semanas. Cada clase estara dividida en una parte teórica y una práctica, de 1:30 hs cada una. Una vez por semana la práctica se dictará en laboratorio. Modalidad de Evaluación Parcial Se tomarán cuatro parciales a lo largo del curso y se deberán entregar tres trabajos prácticos grupales. 3 de 5 7541 - Algoritmos y Programación II PLANIFICACIONES Actualización: 2ºC/2016 CALENDARIO DE CLASES Semana Temas de teoría Resolución de problemas Laboratorio <1> 15/08 al 20/08 <2> 22/08 al 27/08 <3> 29/08 al 03/09 <4> 05/09 al 10/09 <5> 12/09 al 17/09 <6> 19/09 al 24/09 <7> 26/09 al 01/10 <8> 03/10 al 08/10 <9> 10/10 al 15/10 <10> 17/10 al 22/10 <11> 24/10 al 29/10 <12> 31/10 al 05/11 <13> 07/11 al 12/11 <14> 14/11 al 19/11 <15> 21/11 al 26/11 <16> 28/11 al 03/12 4 de 5 Otro tipo Fecha entrega Informe TP Bibliografía básica 7541 - Algoritmos y Programación II PLANIFICACIONES Actualización: 2ºC/2016 CALENDARIO DE EVALUACIONES Evaluación Parcial Oportunidad Semana Fecha 1º 2º 3º 4º 5 de 5 Hora Aula