Ingeniería Informática - Matemáticas

Grado y Doble Grado. Curso 2019/2020.

TEORÍA DE LA PROGRAMACIÓN - 900227

Curso Académico 2019-20

Datos Generales

SINOPSIS

COMPETENCIAS

Generales
Comprender cómo funcionan las construcciones de un lenguaje de programación y ser capaces de describir su comportamiento de forma detallada y precisa.
Transversales
Aplicar distintas técnicas matemáticas al estudio de los lenguajes de programación y los programas escritos en ellos. En ocasiones se tratará de teorías y conceptos previamente estudiados y en otras de variantes nuevas, que generarán
una sinergia entre la nueva materia y las otras previamente estudiadas.
Específicas
- Ser capaces de describir formalmente y analizar el significado de las construcciones básicas de lenguajes de programación correspondientes a varios paradigmas..
- Explicar los conceptos y resultados fundamentales relativos a las semánticas formales de los lenguajes de programación.
- Comparar diferentes descripciones semánticas de un mismo lenguaje de programación, entendiendo el sentido en que son equivalentes y la forma en que se complementan.
- Derivar distintas consecuencias que se siguen de las descripciones semánticas.
- Aplicar lo aprendido para elaborar la definición de otros lenguajes de programación o construcciones adicionales de los mismos.
- Aplicar lo aprendido para precisar el significado de programas concretos y en base a ello probar la corrección de los mismos.

ACTIVIDADES DOCENTES

Clases teóricas
Exposición por parte del profesor de los conceptos y resultados más importantes de cada tema. Estas exposiciones serán ilustradas con ejemplos y ampliadas a partir de las observaciones y preguntas de los alumnos, que habrán leído con antelación la parte correspondiente al tema bajo estudio en los libros de referencia.
Seminarios
Exposición de temas complementarios preparados por los alumnos.
Clases prácticas
Resolución de ejercicios sencillos para poner en práctica los conceptos y resultados previamente expuestos. Puesta en común de las soluciones aportadas por los alumnos a los problemas de mayor entidad que se les habrán propuesto para su resolución fuera de las clases.

Presenciales

2

No presenciales

4

Semestre

8

Breve descriptor:

Estudio de las semánticas formales para los lenguajes de programación.
Conceptos fundamentales que soportan las distintas semánticas y las relaciones entre las mismas.
Utilización de los formalismos para describir la semántica de construcciones de los lenguajes, calcular la semántica de programas y analizar las propiedades de los mismos. probando en particular su correección.
Aplicaciones.

Requisitos

Serían en su caso muy útiles algunos de los conceptos estudiados en Estructuras de datos y algoritmos, Métodos algorítmicos en resolución de problemas y Programación declarativa.

Objetivos

Mostrar al alumno la necesidad de contar con definiciones formales del significado de los lenguajes de programación, que permitan precisar lo que calcularán, y cómo, los programas escritos usando los mismos. A partir de ellas se podrá razonar sobre su corrección con respecto a una especificación dada.
Ofrecer al alumno un campo interesante para aplicar distintas técnicas y conceptos matemáticos aprendidos durante la carrera, viendo como utilizarlas para definir la semántica de los lenguajes de programación.
Comprender cómo funcionan las construcciones de los lenguajes de programación y ser capaces de describir su comportamiento de forma detallada y precisa.

Contenido

- Semántica operacional, denotacional y axiomática para un lenguaje imperativo sencillo.
- Aplicaciones.
- Semántica operacional y denotacional para un lenguaje funcional sencillo.
- Elementos que permiten definir el significado de construcciones más complejas.


Evaluación

La metodología que se aplicará exigirá la participación activa del alumno en el "día a día", buscandose con ello un aprendizaje "continuo" que se pondrá de manifiesto a través de dicha participación.
En concreto, un 30% de la nota se conseguirá en base a dicha participación activa a todos los niveles: clases teóricas (planteando preguntas, comentarios, etc.) , resolución de ejercicios y problemas, preparación y exposición de trabajos, etc.
En consecuencia, el examen final, donde se espera que el alumno ratifique la adquisición de las competencias descritas anteriormente, generará un 70% de la nota.
Salvo posibles excepciones muy justificadas a ser evaluadas por el profesor, el baremo se mantendrá en la convocatoria extraordinaria, siendo posible presentar
ejercicios y trabajos para la misma de manera análoga a la ordinaria. La parte de la nota correspondiente a la participación, al corresponder con lo realizado durante
el curso, no será modificable.

Bibliografía

- Hanne Riis Nielson y Flemming Nielson, Semantics with Applications. An Appetizer, Springer, 2007.
- Glynn Winskel, The Formal Semantics of Programming Languages, The MIT Press, 1993.

Otra información relevante

La asignatura dispondrá de un espacio en el Campus virtual que albergará la documentación que se considere oportuna.
Probablemente se facilitarán "transparencias" o cualquier tipo de documentación concreta para facilitar el estudio de la asignatura fuera de las clases, pero en modo alguno se podrá considerar que por medio de las mismas "se cubre" la
materia del curso y por tanto se puede suplir la asistencia a clase, que como queda dicho se considera absolutamente fundamental para superar la asignatura.

Estructura

MódulosMaterias
No existen datos de módulos o materias para esta asignatura.

Grupos

Clases teóricas
GrupoPeriodosHorariosAulaProfesor
Grupo único27/01/2020 - 14/05/2020LUNES 11:00 - 12:00S-107BDAVID DE FRUTOS ESCRIG
MIÉRCOLES 11:00 - 12:00S-107BDAVID DE FRUTOS ESCRIG


Clases prácticas
GrupoPeriodosHorariosAulaProfesor
Grupo único27/01/2020 - 14/05/2020MARTES 11:00 - 12:00S-107B
JUEVES 11:00 - 12:00S-107B