Programación Avanzada

Programación Avanzada

 

Objetivo: En este curso se revisan distintos paradigmas de programación: estructurado, funcional, y orientado a objetos entre otros. Se discuten estrategias para optimizar la implementación de algoritmos, dependiendo del paradigma que se trabaje. Una parte de curso hace revisión de manejo de apuntadores (a datos, estructuras y a funciones), y los equivalentes en otros paradigmas de programación (selectores y tablas de funciones). En la parte de Programación Orientada a Objetos se discuten algunos de los patrones de diseño más utilizados, como pueden ser oberver, MVC, o decorator, por mencionar algunos.
 

Contenido

1. Introducción
        1. Conceptos básicos.
        2. Proceso de desarrollo de un programa.
        3. Tipos de datos abstractos.
        4. Organización de código.
        5. Funciones.
        5. Punteros y manejo de memoria.
        6. Fugas de memoria.

2. Estructura de datos
             1) Pilas, colas, listas, listas doblemente ligadas.
             2) árboles: árboles, binarios, recorridos, balanceo, búsqueda.
             3) Algoritmos de búsqueda, ordenamiento y hash.

 3. STL (Standard Template Library)
             1) Vectores
             2) Iteradores
             3) Vectores bidimensionales
             4) Colas y listas

4. Scripts
             1. Shell
             2. Perl
             3. Python
             4. Ruby

                                

Bibliografía básica:
* Reema Thareja. Data Structures Using C. Oxford University Press, Inc., New York, NY, USA. 2011.
* Kernighan, Brian W., Rob Pike. El entorno de programación UNIX. Prentice-Hall Hispanoamericana, 1987.
* Kernighan, Brian W., and Dennis M. Ritchie. El lenguaje de programación C. Pearson Educación, 1991.
* Wall, Larry, Tom Christiansen, and Jon Orwant. Programming Perl. O'Reilly Media, Inc., 2004.
* Sanner, Michel F. Python: a programming language for software integration and development. J Mol Graph Model 17.1 (1999): 57-61.
* Flanagan, David, and Yukihiro Matsumoto. The ruby programming language. O'Reilly Media, Inc.", 2008.
* Márquez, Francisco. Unix-Programación Avanzada. Alfaomega Grupo Editor, 2005.