Download Guía de Estudio de la Asignatura de Teoría de los Lenguajes de
Document related concepts
Transcript
GUÍA DE ESTUDIO DE LA ASIGNATURA GRADO TEORÍA DE LOS LENGUAJES DE PROGRAMACIÓN Equipo docente: Ana García Serrano y Fernando López Ostenero 2014-2015 GRADO EN INGENIERÍA EN INFORMÁTICA UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Contenido 1. PLAN DE TRABAJO..............................................................................................................................3 2. ORIENTACIONES PARA EL ESTUDIO DE LOS CONTENIDOS..................................................7 2.1. UNIDAD DIDÁCTICA 1: PRINCIPIOS DE DISEÑO DE LOS LENGUAJES DE PROGRAMACIÓN.............7 2.1.1. Descripción detallada de los contenidos...................................................................................7 2.1.2. Resultados de aprendizaje asociados a los contenidos..............................................................7 2.1.3. Bibliografía básica y material complementario........................................................................7 2.2. UNIDAD DIDÁCTICA 2: PROGRAMACIÓN DECLARATIVA..............................................................8 2.2.1. Descripción de tallada de los contenidos..................................................................................8 2.2.2. Resultados de aprendizaje asociados a los contenidos..............................................................8 2.2.3. Bibliografía básica y material complementario........................................................................8 2.3. UNIDAD DIDÁCTICA 3: PRINCIPIOS BÁSICOS DEL DISEÑO DE LENGUAJES...................................9 2.3.1. Descripción de tallada de los contenidos .................................................................................9 2.3.2. Resultados de aprendizaje asociados a los contenidos..............................................................9 2.3.3. Bibliografía básica y material complementario......................................................................10 2.4. UNIDAD DIDÁCTICA 4: ABSTRACCIÓN Y ESTRUCTURA DEL CONTROL Y LA ORGANIZACIÓN DE ENTORNOS DE EJECUCIÓN........................................................................................................................11 2.4.1. Descripción de tallada de los contenidos ...............................................................................11 2.4.2. Resultados de aprendizaje asociados a los contenidos............................................................11 2.4.3. Bibliografía básica y material complementario......................................................................12 2.5. CONTEXTUALIZACIÓN.......................................................................................................................13 3. ORIENTACIONES PARA LA REALIZACIÓN DEL PLAN DE ACTIVIDADES........................14 3.1. MEDIOS Y RECURSOS........................................................................................................................14 3.2. EVALUACIÓN.....................................................................................................................................14 3.2.1. Examen.....................................................................................................................................14 3.2.2. Realización de la práctica........................................................................................................15 2 1. PLAN DE TRABAJO En la guía de estudio o segunda parte de la guía didáctica de la asignatura “Teoría de los lenguajes de programación” (de los estudios de grado en Ingeniería Informática) se detalla el plan de trabajo y se aportan sugerencias para el estudio de la misma y para la realización de las actividades planificadas. Esta asignatura presenta los contenidos relacionados con la teoría y la práctica de los lenguajes de programación (LP) y lo óptimo es estudiarla de forma continuada a lo largo del cuatrimestre. Recordemos (primera parte de la guía) que los objetivos generales de la asignatura son el estudio formal de los Lenguajes de Programación (LP) y su especificación, para que el estudiante tenga una visión general que le permita entender el papel de la sintaxis y la semántica en los LP y conocer los mecanismos de los LP y sus construcciones, para que el estudiante pueda distinguir, por ejemplo, entre el control de secuencia y el control de datos en un programa, los rasgos que caracterizan a los elementos de datos en un lenguaje o su sistema de tipo. Para alcanzar estos objetivos el estudiante se familiarizará con los paradigmas de los lenguajes de programación existentes, enmarcando los LP en paradigmas y conociendo las características de los LP que los hacen adecuados para sus diseños de programas. Otros detalles de esta asignatura OBLIGATORIA en el SEGUNDO SEMESTRE, de 6 créditos ECTS (150h de dedicación), son los relacionados con la planificación de la dedicación esperada del estudiante (en horas): • Horas de estudio teórico: 90 (60%) • Horas de trabajo práctico: 45 (30%) • Horas de actividades complementarias: 15 (10%) Los contenidos del curso están organizados en cuatro unidades didácticas: en la primera, a modo de introducción, se abordan los principios generales del diseño de los lenguajes de programación, en la segunda los conceptos fundamentales y la práctica de la programación declarativa, en la tercera los principios básicos del diseño de los lenguajes de programación y en la cuarta las estructuras de control y los entornos de ejecución de los lenguajes de programación. El cuadro siguiente muestra el cronograma que marca unas pautas adecuadas para que el estudiante medio, que comienza a estudiar al principio del segundo semestre, alcance los objetivos al final del curso. Este cronograma incluye los contenidos de cada tema y las actividades a realizar, tanto de estudio teórico como práctico. 3 Contenidos Plan de actividades UNIDAD DIDÁCTICA I Principios de diseño de los lenguajes de programación (1 Semana) Tema 1: Paradigmas de computación. Semana 1 1. Estudiar las secciones indicadas del capítulo 1 del libro base de la asignatura para adquirir un conocimiento básico sobre los conceptos relacionados con los paradigmas de computación 1. Abstracción en los lenguajes de programación (sección 1.1) 2. Paradigmas de computación (sección 1.2) Tema 2. Principios de diseño de los lenguajes. Semana 1 1. Estudiar las secciones indicadas del capítulo 1 del libro base de la asignatura 2. Instalar los intérpretes de Haskell y Prolog 1. Descripción de los lenguajes de programación (sección 1.3) 2. Diseño de los lenguajes de programación (sección 1.4) UNIDAD DIDÁCTICA II Programación Declarativa (5 Semanas) Tema 3. Programación Funcional. Semanas 2-4 1. Programas como funciones (sección 2.1) 2. Evaluación perezosa (sección 2.2) 3. Introducción al lenguaje Haskell (sección 2.3) 1. Estudiar las secciones 2.1 y 2.2 del libro base 2. Estudiar la sección 2.3 del libro base realizando, al tiempo, ejercicios con el intérprete de Haskell 3. Realizar las actividades optativas referentes a la programación funcional correspondientes a esta unidad didáctica Tema 4. Programación Lógica. Semanas 5-6 1. Especificación de programas (sección 3.1) 2. Computación lógica (sección 3.2) 3. Técnicas avanzadas de programación lógica (sección 3.3) 4 1. Estudiar el capítulo 3 del libro base realizando ejercicios con el intérprete de Prolog 2. Realizar las actividades optativas referentes a la programación lógica correspondientes a esta unidad didáctica Contenidos Plan de actividades UNIDAD DIDÁCTICA III Principios básicos del diseño de los lenguajes (4 Semanas) Tema 5. Sintaxis de los lenguajes de programación. Semana 7 1. Estructura léxica de los lenguajes de programación (sección 4.1.1) 2. Gramáticas libres de contexto y BNF (secciones 4.1.2 y 4.1.3) 3. Estructura sintáctica: árboles sintácticos (sección 4.1.4) 4. Ambigüedad, asociatividad y precedencia (sección 4.1.5) 5. Diagramas sintácticos (sección 4.1.6) 1. Estudiar la sección 4.1 del capítulo 4 del libro base 2. Identificar los conceptos estudiados en el tema dentro del código de la práctica y relacionarlos con sus equivalentes en otros lenguajes 3. Realizar las actividades optativas Tema 6. Semántica básica. Semanas 8-9 1. Atributos, ligaduras y funciones semánticas (sección 4.2.1) 2. Declaraciones, bloques y alcance (sección 4.2.2) 3. La tabla de símbolos (sección 4.2.3) 4. Asignación, tiempo de vida y ambiente (sección 4.2.4) 5. Variables y constantes (sección 4.2.5) 1. Estudiar la sección 4.2 del capítulo 4 del libro base 2. Identificar los conceptos estudiados en el tema dentro del código de la práctica y relacionarlos con sus equivalentes en otros lenguajes Tema 7. Tipos de datos. Semanas 9-10 1. Tipos de datos (introducción de la sección 5.1) 2. Tipos atómicos (sección 5.1.1) 3. Tipos estructurados (sección 5.1.2) 4. Equivalencia de tipos de datos (sección 5.2) 5. Conversión de tipos de datos (sección 5.3) 1. Estudiar el capítulo 5 del libro base 2. Identificar los tipos de datos necesarios para la realización de la práctica y comparar su declaración en diferentes lenguajes 3. Realizar las actividades optativas correspondientes a esta unidad didáctica Contenidos Plan de actividades 5 UNIDAD DIDÁCTICA IV Abstracción y estructura del control y la organización de entornos de ejecución (3 Semanas) Tema 8: Control I: Expresiones y sentencias. Semanas 11-12 1. Estudiar los apartados indicados del capítulo 6 del libro base. 2. Identificar los conceptos estudiados en el tema dentro del código de la práctica y relacionarlos con sus equivalentes en otros lenguajes. 1. Evaluación de Expresiones (sección 6.1) 2. Sentencias Condicionales (sección 6.2) 3. Bucles (sección 6.3) 4. Excepciones (sección 6.4) Tema 9: Control II: Subprogramas y ambientes. Semanas 12-13 1. Definición y activación de los subprogramas (introducción de la sección 6.5) 2. Semántica de los subprogramas (sección 6.5.1) 3. Mecanismos de paso de parámetros (sección 6.5.2) 4. Ambientes de Ejecución (sección 6.5.3) 6 1. Estudiar los apartados indicados del capítulo 6 del libro base. 2. Identificar los conceptos estudiados en el tema dentro del código de la práctica y relacionarlos con sus equivalentes en otros lenguajes. 3. Realizar las actividades optativas correspondientes a esta unidad didáctica. 2. ORIENTACIONES PARA EL ESTUDIO DE LOS CONTENIDOS A continuación se incluyen algunas orientaciones para el estudio de los contenidos de esta asignatura. 2.1. UNIDAD DIDÁCTICA 1: Principios de diseño de los lenguajes de programación La primera unidad didáctica hace un repaso sobre los conceptos fundamentales dentro de los lenguajes de programación. Se parte introduciendo los conceptos básicos generales que subyacen a la construcción de un LP. A continuación se enumeran detalladamente los criterios tanto de diseño como externos que han provocado el éxito o fracaso de algunos LP, además se describe la evolución y cambio de estos criterios a lo largo del tiempo y las necesidades o evoluciones en materias de computación que los provocaron. 2.1.1. Descripción detallada de los contenidos Tema 1: Paradigmas de computación Es un tema en el que se presentan y definen conceptos que se verán con más profundidad en temas posteriores. La mayoría de los conceptos no son nuevos para los estudiantes, ya que han sido presentados en otras asignaturas. Sin embargo, conviene hacer una recapitulación y volver a recordarlos de cara a su comprensión y utilización adecuada a lo largo del curso. Tema 2: Principios de diseño de los lenguajes Este tema es presenta un panorama general de los principios de diseño de los lenguajes de programación. 2.1.2. Resultados de aprendizaje asociados a los contenidos Situar y motivar al estudiante respecto al estudio de los LP. Repasar y aclarar conceptos básicos relacionados con los lenguajes de programación y los procesadores de lenguajes. Presentar los principios de diseño de los lenguajes, tanto los fundamentales como otros adicionales. 2.1.3. Bibliografía básica y material complementario Capítulo 1 del libro básico: Teoría de los lenguajes de programación. Fernando López Ostenero y Ana Mª García Serrano. Editorial Universitaria Ramón Areces, 2014. 7 En la primera parte de esta guía se han indicado varios libros de consulta que pueden utilizarse como material complementario, tanto para afianzar los conocimientos relacionados con esta unidad, como para adquirir nuevos conocimientos relacionados. 2.2. UNIDAD DIDÁCTICA 2: Programación Declarativa El objetivo global de esta unidad didáctica es el conocimiento de los lenguajes de programación declarativa, en sus dos modalidades, la lógica y la funcional. La práctica obligatoria de la asignatura se corresponde con esta unidad didáctica. 2.2.1. Descripción de tallada de los contenidos Tema 3: Programación Funcional Este tema presentan los principios de la programación funcional. Se repasa el concepto matemático de función y la forma en que pueden considerarse los programas como funciones, partiendo del modelo matemático que subyace a la programación funcional. Se da una introducción al modelo de evaluación perezosa, propio de este tipo de lenguajes y, a continuación, se presenta una introducción al lenguaje funcional Haskell, analizando algunas de sus propiedades. Tema 4: Programación Lógica Este tema comienza con una breve introducción a la lógica computacional y a la forma en que puede utilizarse la lógica como un lenguaje de programación. Después, describe el lenguaje Prolog y las técnicas para escribir programas en este lenguaje. También se presentan algunos de los puntos fuertes y débiles de este lenguaje. El tema finaliza con la presentación de la programación lógica en problemas complejos. 2.2.2. Resultados de aprendizaje asociados a los contenidos Tema 3: Presentar los principios de la programación funcional. Analizar las propiedades del lenguaje Haskell como principal ejemplo de lenguaje de programación funcional. Conocer el modelo matemático que subyace a la programación funcional. Tema 4: Presentar los principios de la programación lógica, destacando la lógica de primer orden y la resolución/unificación en el modelo de cláusulas de Horn. Analizar las propiedades del lenguaje Prolog como principal ejemplo de lenguaje de programación lógico. 8 2.2.3. Bibliografía básica y material complementario Capítulos 2 y 3 del libro básico: Teoría de los lenguajes de programación. Fernando López Ostenero y Ana Mª García Serrano. Editorial Universitaria Ramón Areces, 2014. En la primera parte de esta guía se han indicado varios libros de consulta que pueden utilizarse como material complementario, tanto para afianzar los conocimientos relacionados con esta unidad, como para adquirir nuevos conocimientos relacionados. 2.3. UNIDAD DIDÁCTICA 3: Principios básicos del diseño de lenguajes El objetivo global de esta unidad didáctica es el conocimiento teórico y práctico de los principios relacionados con la sintaxis y semántica de los lenguajes de programación no declarativos. Además se revisarán conceptos relacionados con los tipos de datos de un lenguaje de programación. 2.3.1. Descripción de tallada de los contenidos Tema 5: Sintaxis de los lenguajes de programación Este tema se ocupa con cierto detalle de la sintaxis de los lenguajes de programación, mostrando el uso de diferentes herramientas, como BNF, EBNF y los diagramas sintácticos, para la definición formal de las gramáticas de los lenguajes. Tema 6: Semántica básica Este tema cubre los aspectos semánticos básicos de los lenguajes de programación: declaración, asignación y evaluación de variables y constantes; el uso de la tabla de símbolos y aspectos relacionados con el entorno de los símbolos definidos en los programas. Tema 7: Tipos de datos Este tema comienza describiendo los tipos de datos y los principales tipos y constructores de tipos disponibles en la mayoría de los lenguajes. Después de analizar estos principios básicos, se estudian los conceptos de verificación y equivalencia de tipos de datos, analizando los principales problemas que se plantean. 2.3.2. Resultados de aprendizaje asociados a los contenidos Tema 5: Introducir al estudiante a las distintas herramientas conceptuales de construcción de gramáticas, como el uso de BNF, EBNF, árboles de sintaxis, etc. 9 Comprender cómo afecta la ambigüedad a una gramática y sus posibles soluciones. Tema 6: Comprensión de algunos conceptos claves en el análisis semántico, como son las ligaduras, entornos de ejecución, tabla de símbolos, etc. Familiarizar al estudiante con el comportamiento de los símbolos definidos en un lenguaje a la hora de acceder al contenido de los mismos. Tema 7: Familiarizar al estudiante con una descripción formal del conjunto de datos (simples y complejos) que incluya un LP. Comprender en profundidad los distintos procesos que forman parte de la tarea de verificación de tipos en su forma estática o dinámica. 2.3.3. Bibliografía básica y material complementario Capítulos 4 y 5 del libro básico: Teoría de los lenguajes de programación. Fernando López Ostenero y Ana Mª García Serrano. Editorial Universitaria Ramón Areces, 2014. Además, en la primera parte de esta guía se han indicado varios libros de consulta que pueden utilizarse como material complementario, tanto para afianzar los conocimientos relacionados con esta unidad, como para adquirir nuevos conocimientos relacionados. 10 2.4. UNIDAD DIDÁCTICA 4: Abstracción y estructura del control y la organización de entornos de ejecución El objetivo global de esta unidad didáctica es el conocimiento teórico y práctico de los principios relacionados con las estructuras de control y los entornos de ejecución de los lenguajes de programación. En el tema 8 se estudian las expresiones, cuya evaluación permitirá que el programa pueda variar el flujo de ejecución mediante las estructuras de control. En el tema 9 se tratan los subprogramas, que son bloques de código cuya ejecución se pospone y que cuentan con una interfaz claramente especificada. 2.4.1. Descripción de tallada de los contenidos Tema 8: Control I: Expresiones y sentencias En este tema se analizan, en primer lugar, las expresiones y la diversidad de problemas de control que pueden surgir durante su evaluación. Después se tratan los mecanismos de control estructurados como las sentencias condicionales y los bucles. Posteriormente se analiza el manejo de excepciones, un mecanismo de control preventivo, que hace que se altere la estructura de control explícito de un programa. Tema 9: Control II: Subprogramas y ambientes Este tema comienza con un repaso de las diversas formas sintácticas de definir y llamar subprogramas. Sigue con un análisis de las propiedades semánticas de los mismos, y la razón por la cual representan un concepto significativamente más complejo de una estructura de bloque como las estudiadas en el tema anterior. Después se estudian las principales técnicas de paso de parámetros que llevan a un comportamiento semántico distinto, y se esboza la estructura de los registros de activación y de las tres variedades básicas de ambientes en tiempo de ejecución. 2.4.2. Resultados de aprendizaje asociados a los contenidos Tema 8: Comprender como funciona la evaluación de expresiones y como dicha evaluación se ve afectada por el orden. Entender la parte de un programa que se considera de control, las primitivas que lo implementan, y sus características específicas en distintos paradigmas. Familiarizar al estudiante con otro tipo de expresiones de control como las excepciones. Tema 9: Comprensión de la semántica de los subprogramas, tanto en tiempo de compilación como en tiempo de ejecución. 11 Funcionamiento del paso de parámetros en subprogramas. Características y consecuencias de los diferentes mecanismos de paso de parámetros. Comprender el proceso de creación un ambiente de ejecución para un subprograma, los distintos ambientes de ejecución posibles y la gestión de la memoria en dichos ambientes. 2.4.3. Bibliografía básica y material complementario Capítulo 6: Teoría de los lenguajes de programación. Fernando López Ostenero y Ana Mª García Serrano. Editorial Universitaria Ramón Areces, 2014. En la primera parte de esta guía se han indicado varios libros de consulta que pueden utilizarse como material complementario, tanto para afianzar los conocimientos relacionados con esta unidad, como para adquirir nuevos conocimientos relacionados. 12 2.5. Contextualización Esta asignatura del grado de Ingeniería Informática se encuadra en la materia “Lenguajes de Programación”, altamente relacionada con las materias “Fundamentos de Programación”, y “Metodología de la Programación y Algoritmia”. Las asignaturas relacionadas que se cursan previamente son: 2. Fundamentos de Programación (primero, primer semestre o 1S) 3. Programación Orientada a Objetos (primero, 2S) 4. Estrategias de Programación y Estructura de Datos (primero, 2S) 5. Programación y Estructura de Datos avanzadas (segundo, 1S) La asignatura “Fundamentos de programación” presenta los tipos de datos básicos (booleanos, números, vectores, tuplas, registros, punteros etc.) y estrategias elementales de diseño algorítmico (en particular, iteración). Esta asignatura es una aprovecha estos conocimientos en lo que respecta al diseño de ellos en un lenguaje de programación. Con la asignatura “Programación orienta a objetos” se aprenden los conceptos de programación orientada a objetos a través del lenguaje Java, conocimientos que en esta asignatura se reflejarán en la parte de ejercicios prácticos, y para su diferenciación con el paradigma declarativo de programación que se estudia en la segunda unidad didáctica. La asignatura “Estrategias de Programación y Estructura de Datos”, que debería ser cursada después de las dos anteriores y antes que TLP, estudia las estructuras de datos más comunes en algorítmica favoreciendo la comprensión de la tercera unidad didáctica y estudian también la recursión como una segunda estrategia básica de desarrollo algorítmico, concepto clave en la segunda unidad didáctica. Además refuerzan su habilidad con los entornos de programación en Java, lo que les beneficiará en el estudio de la cuarta unidad didáctica. Si los estudiantes hubieran cursado la asignatura “Programación y Estructura de Datos avanzadas”, conocerían con cierta profundidad esquemas algorítmicos como divide y vencerás, el esquema voraz o la exploración exhaustiva de grafos, reforzando algunos aspectos que se presentan también en la unidad didáctica cuarta de esta asignatura. 13 3. ORIENTACIONES PARA LA REALIZACIÓN DEL PLAN DE ACTIVIDADES Un aspecto importante de la metodología es aplicar los conocimientos adquiridos a algunos de los ejercicios propuestos en el libro básico, aunque no estén resueltos, así como la realización de los ejercicios propuestos por el equipo docente y la realización progresiva de la práctica obligatoria. Los estudiantes pueden consultar con su tutor cualquier aspecto metodológico, logístico o sobre el contenido de la asignatura a través del entorno virtual de la misma (en el Campus UNED). En el entorno se puede también establecer discusiones con el resto de los estudiantes y contactar con el equipo docente si fuera necesario. Es conveniente acceder con frecuencia al entorno virtual de la asignatura, en el que aparece material adicional de apoyo durante el curso. 3.1. Medios y recursos Están descritos en la primera parte de la guía. Junto a las actividades y enlaces con fuentes de información externas, existe material didáctico propio preparado por el equipo docente con ejercicios que organizan las actividades prácticas del estudiante. Esta asignatura tiene una práctica de carácter obligatorio, existiendo una serie de sesiones presenciales de asistencia obligatoria organizadas por los Centros Asociados. 3.2. Evaluación La evaluación se realizará a partir de un examen, los ejercicios teórico-prácticos propuestos a lo largo del curso, así como de un trabajo práctico final individual que organizará y ampliará el trabajo realizado en los ejercicios, según el calendario que se publicará en el aula virtual al comienzo del periodo lectivo de la asignatura. La calificación consistirá en: 1. un 60% del examen presencial 2. 30% la práctica obligatoria 3. 10% ejercicios opcionales teórico-prácticos realizados Para aprobar la asignatura se ha de obtener al menos un 4 sobre 10 en el examen y tener aprobada la práctica obligatoria. Para optar a matrícula en esta asignatura, al menos hay que realizar todos los ejercicios opcionales. 14 3.2.1. Examen El examen constará de cuatro preguntas, la puntuación de cada una de ellas vendrá indicada en el examen. Estas preguntas intentan valorar los conocimientos teóricos y prácticos que el estudiante ha adquirido. Cada pregunta deberá ser contestada en la misma hoja donde se enuncia (se podrán usar ambas caras de la hoja). Si se necesitase más espacio, se deberán utilizar hojas diferentes para cada pregunta. No se permitirá el uso de ningún tipo de material para la realización del examen. 3.2.2. Realización de la práctica El trabajo del curso incluye la realización de una práctica obligatoria de programación. El enunciado de la misma estará disponible en el curso virtual de la asignatura. Otros detalles relacionados con la práctica: En el centro asociado se organizarán sesiones de monitorización del trabajo práctico, siendo obligatorio asistir al menos a una de ellas. Las fechas de las sesiones obligatorias y la fecha límite de entrega se establecen en cada centro asociado. El estudiante debe ponerse en contacto con su centro asociado al principio del cuatrimestre para conocer las citadas fechas, la forma de entrega, la posibilidad de realizar sesiones especiales para la convocatoria de septiembre, si es el caso y otros aspectos. En el momento de asistir a las citadas sesiones en el centro asociado, el estudiante debería haber dedicado ya un tiempo necesario al enunciado de la práctica, de forma que pueda resolver tantas dudas como sea posible con su tutor. La práctica deberá entregarse al tutor con anterioridad al examen para que éste la evalúe. Si la práctica está aprobada para la convocatoria ordinaria, también se considera aprobada para la convocatoria extraordinaria. Si en una convocatoria no se tienen las dos notas (práctica y examen), la calificación de dicha convocatoria será suspenso. No se guardará la calificación de la práctica para el siguiente curso. 15