CURSO : Programacion Avanzada SIGLA : IIC1222 CRÉDITOS : 10 REQUISITOS : IIC1102 Introduccion a la Programacion SEMESTRE : I y II 1. OBJETIVOS Capacitar al alumno para dise?ar, codificar, probar y evaluar programas que resuelvan problemas algoritmicos a partir de especificaciones detalladas. Para lograr este objetivo, el alumno completara el aprendizaje del lenguaje utilizado en el curso introductorio, conocera diversas estructuras de datos, aprendera tecnicas de dise?o y analisis de algoritmos, dominara diversas herramientas de apoyo a la programacion, y estudiara y aplicara conceptos de dise?o y programacion orientados a objetos. 2. CONTENIDO - Elementos avanzados de programacion: Repaso del curso IIC1102; Compilacion separada; Preprocesador; Memoria dinamica; Herramientas: make, procesador de macros, lenguaje de comandos. - Complejidad de algoritmos: Medidas de complejidad; Calculo de la complejidad de un algoritmo; Ecuaciones de recurrencia. - Estructuras de datos: Tipos abstractos de datos; Listas, colas, pilas; Hashing; Arboles; Grafos. - Prueba y evaluacion de programas: Robustez; Prueba de programas; Metodos de depuracion; Benchmarking; Herramientas: depuradores, profilers. - Tecnicas de dise?o de algoritmos: Refinamiento sucesivo, Division y conquista, Backtracking; Programacion dinamica; Algoritmos codiciosos; Generacion y prueba (fuerza bruta). - Programacion orientada a objetos: Clases y objetos; Herencia; Polimorfismo; Lenguaje de programacion orientado a objetos C++. - Estructura de aplicaciones orientadas a objetos: Librerias de clases; Arquitectura de software; Desarrollo de aplicaciones de manipulacion directa. 3. BIBLIOGRAFIA Minima: MAIN, M. and SAVITCH, W. Data structures and other objects using C++. Addison Wesley, 1997. Complementaria: AMMERAAL, L. STL for C++ programmers. Wiley 1997. KERNIGHAN, Brian W. and RITCHE, Dennis M. The C programming language. 2nd ed. Englewood Cliffs, N. J., Prentice Hall, 1988. LERMAN, S. Problem solving and computation for scientists and engineers: an introduction using C. Prentice Hall, Englewood Cliffs, New Jersey, 1993. STROUSTROUP, B. The C++ programming language. Reading, Mass., Addison Wesley, 1997.