Document related concepts
Transcript
Universidad Nacional Escuela de Informática EIF400 Paradigmas de Programación Profesor: Dr. Oldemar Rodríguez Rojas E-mail: [email protected] Documentos del curso en: www.oldemarrodriguez.com CARTA AL ESTUDIANTE A. Objetivos Generales 1. Estudie en detalle la evolución de los lenguajes de programación. 2. Domine los conceptos más importantes de los paradigmas de programación funcional y de la programación lógica. 3. Estudie los conceptos avanzados del paradigma de Programación Orientado a Objetos. 4. Use adecuadamente el Lenguaje Unificado de Modelado (UML, Unified Modeling Language) para representar jerarquías de clases. 5. Sea capaz de desarrollar un compilador de una pasada. B. Contenido Para lograr los objetivos propuestos estudiaremos los siguientes temas: 1. Historia y evolución de los lenguajes de programación Evolución de lenguajes. Historia de los lenguajes, FOTRAN, COBOL, Pascal, C, Modula-2, Smalltalk, ML, ADA y otros Flujo de control. Efectos de la asignación. Procedimientos y funciones. Tipos de Datos Abstractos (TDA). 2. Programación Funcional Scheme como dialecto de Lisp. Listas. Recursión. Manipulación simbólica de datos. Programación simbólica. Lenguajes funcionales para la programación de aplicaciones científicas y simbólicas - Mathematica 3. Programación Lógica Introducción al Prolog. Cálculos con relaciones. Estructuras de datos en Prolog. Control en Prolog. Cortes ("Cut"). 4. Tópicos especiales Programación Orientada a Objetos Representación en UML de las jerarquías de clases. Listas genéricas y polimorfismo. Clases parametrizadas, plantillas “Templates”. Uso de la librería STL. Funciones amigas. Manejo de excepciones. El puntero “this”. Sobrecarga de operadores. Consideraciones especiales sobre los constructores y destructores. 5. Compiladores e intérpretes Análisis del programa fuente. Las fases de un compilador. El agrupamiento de las fases. Construcción de compiladores. Definición de sintaxis. Traducción dirigida por sintaxis. Gramáticas independientes de contexto. Analizadores sintéticos LR. Análisis léxico. Máquinas de pilas abstractas. Autómatas finitos. Expresiones regulares en AFN. Uso de gramáticas ambiguas. C. Evaluación El curso se evaluará mediante tareas programadas, una investigación y dos exámenes. La ponderación es la siguiente: Actividad Tareas Programadas Primer Examen Segundo Examen Investigación Puntaje 30 30 30 10 NOTAS: Este curso NO tiene examen extraordinario. Los trabajos se realizaran en grupos de máximo 2 personas. D. Bibliografía 1. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools (2nd Edition), Hardcover, 2005. 2. Iain Ferguson. The Schemer’s Guide, Schmers INC. 1997. 3. Matthias Felleisen, Robert Findler, Matthew Flatt and Shriram Krishnamurthi. How to Design Programs:An Introduction to Computing and Programming. The MIT PressCambridge, Massachusetts London, England, 2001. 4. Max Bramer. Logic Programming with Prolog. Springer, 2005. 5. Rodríguez Oldemar. "Introducción a la Programación Orientada a Objetos en C++ en ambiente Windows". Editorial tecnológica de Costa Rica, 1997. 6. Sethi Ravi. Lenguajes de Programación: Conceptos y constructores. Addison-Wesley, 1992. 7. http://plt-scheme.org/ para bajar DrScheme. 8. http://www.dobrev.com/index.html para bajar Strawberry Prolog.