Matemáticas

Grado y Doble Grado. Curso 2023/2024.

TEORÍA DE LA PROGRAMACIÓN - 800617

Curso Académico 2023-24

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
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.
Clases prácticas
Resolución de problemas. Discusión de las soluciones aportadas por los alumnos a los ejercicios propuestos.

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

Es altamente recomendable haber cursado Lógica Matemática. También son útiles algunos de los conceptos estudiados en Programación declarativa, Estructuras de datos y Diseño de algoritmos.

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

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
CONTENIDOS AVANZADOS DE CIENCIAS DE LA COMPUTACIÓNPARADIGMAS DE PROGRAMACIÓN

Grupos

Clases teóricas
GrupoPeriodosHorariosAulaProfesor
Grupo único22/01/2024 - 10/05/2024LUNES 12:00 - 13:00112DAVID DE FRUTOS ESCRIG
MARTES 12:00 - 13:00114DAVID DE FRUTOS ESCRIG


Clases prácticas
GrupoPeriodosHorariosAulaProfesor
Grupo único22/01/2024 - 10/05/2024LUNES 13:00 - 14:00112DAVID DE FRUTOS ESCRIG
MIÉRCOLES 12:00 - 13:00112DAVID DE FRUTOS ESCRIG