Departamentos

Matemáticas

Grado y Doble Grado. Curso 2024/2025.

PROGRAMACIÓN DECLARATIVA - 800618

Curso Académico 2024-25

Datos Generales

SINOPSIS

COMPETENCIAS

Generales
Entender los conceptos básicos de la programación funcional. (CG3 del grado)
Entender los conceptos básicos de la programación lógica. (CG3 del grado)
Transversales
Todas las correspondientes al grado
Específicas
Desarrollar programas funcionales sencillos apreciando la potencia de abstracción que facilita el paradigma funcional. (CE5 del grado)
Desarrollar programas lógicos sencillos apreciando la potencia de abstracción que facilita el paradigma lógico. (CE5 del grado)

ACTIVIDADES DOCENTES

Clases teóricas
Clases teóricas magistrales
Seminarios
Las actividades de seminario se integrarán dentro de las clases prácticas e incluirán: resolución de dudas sobre ejercicios y prácticas, presentación de ejercicios por parte de los alumnos, realización de alguna prueba de control con fines de orientación.
Clases prácticas
Clases de resolución de ejercicios y supuestos prácticos
Laboratorios
Las prácticas de laboratorio incluirán sesiones dirigidas dentro del horario lectivo y una práctica de mayor envergadura, que deberá realizarse principalmente fuera del horario lectivo.

Presenciales

2,4

No presenciales

3,6

Semestre

7

Breve descriptor:

El curso introduce al estudiante en los lenguajes de programación funcional y programación lógica, como representantes fundamentales del paradigma de programación declarativa.

Requisitos

Se recomienda haber cursado las asignaturas de: Informática.

Objetivos

Conocer los principios básicos de los lenguajes de programación funcional y programación lógica, como representantes fundamentales del paradigma de programación declarativa.
Apreciar las ventajas del alto nivel de abstracción proporcionado por los lenguajes de  programación declarativa.
Diseñar soluciones declarativas a problemas computacionales de tamaño medio.

Contenido

• Elementos básicos de la programación funcional: funciones y expresiones, tipos, orden superior, lambda abstracciones.
• Ejecución de programas funcionales: evaluación impaciente y perezosa, ajuste de patrones.
• Tipos de datos: tipos definidos, polimórficos, clases de tipos.
• Técnicas básicas de programación funcional.
• Elementos básicos de la programación lógica: relaciones, términos, hechos, cláusulas, variables lógicas.
• Ejecución de programas lógicos: unificación, resolución, espacio de búsqueda.
• Programación lógica con datos estructurados.
• Programación en lenguaje Prolog: control, predicados metalógicos.
• Programación multiparadigma.

Evaluación

La calificación, en la convocatoria ordinaria, se basará en las siguientes actividades y pruebas a realizar por el estudiante. Se dará una fecha para la elección de la opción de evaluación para todo el curso:
Opción 1:
A. Un examen parcial: 15%
B. Examen final: 70%
C. Realización y defensa de un trabajo práctico asignado: 15%

Opción 2:
A. Un examen parcial: 15%
B. Examen final: 85%

La calificación, en la convocatoria extraordinaria, se basará en las siguientes actividades y pruebas a realizar según la opción que eligiera el estudiante a lo largo del curso.
Opción 1:
B. Examen final: 85%
C. Realización y defensa de un trabajo práctico asignado: 15%

Opción 2:
B. Examen final: 100%

Si el estudiante ha elegido durante el curso la opción 1 para la convocatoria ordinaria y ha aprobado la práctica, podrá optar a la opción 1 de evaluación en convocatoria extraordinaria.
Si el estudiante ha elegido durante el curso la opción 2 para la convocatoria ordinaria o la opción 1 pero tiene suspensa la práctica, solamente podrá optar por la opción 2 en la convocatoria extraordinaria.

Bibliografía

Libros de programación funcional
* Graham Hutton; Programming in Haskell; Cambridge University Press, 2007;
* Alejandro Serrano Mena; Beginning Haskell: A Project-Based Approach; Apress, 2014;
* R. Bird; Introducción a la Programación Funcional con Haskell; Segunda edición, Prentice Hall, 2000;
* B.C. Ruiz, F. Gutiérrez, P. Guerrero, J.E. Gallardo; Razonando con Haskell: un curso sobre programación funcional; Thomson, 2004;
Libros de programación lógica
* L.Sterling, E.Shapiro; The Art of Prolog. Advanced Programming Techniques; The MIT Press, 2ª Edición, 1994;
* P. Julián, M. Alpuente; Programación Lógica, Teoría y Práctica; Pearson, 2007;
* W.F. Clocksin, C.S. Mellish; Programming in Prolog Using the ISO Standard; Springer Verlag, 5ª edición, 2003;
* P. Blackburn, J, Bos, K. Striegnitz; Learn Prolog Now!; College Publications, 2006. (Existe versión on-line);

Otra información relevante

Web sobre la parte de programación funcional: http://antares.sip.ucm.es:8180/pf/

Estructura

MódulosMaterias
CONTENIDOS AVANZADOS DE CIENCIAS DE LA COMPUTACIÓNPARADIGMAS DE PROGRAMACIÓN

Grupos

Clases teóricas
GrupoPeriodosHorariosAulaProfesor
Grupo único09/09/2024 - 13/12/2024LUNES 13:00 - 14:00S-106NATALIA LOPEZ BARQUILLA
MARTES 13:00 - 14:00S-106NATALIA LOPEZ BARQUILLA


Clases aula de informática
GrupoPeriodosHorariosAulaProfesor
Subgrupo U109/09/2024 - 13/12/2024MIÉRCOLES 09:00 - 10:00INF4 Aula de InformáticaNATALIA LOPEZ BARQUILLA
MIÉRCOLES 10:00 - 11:00INF4 Aula de InformáticaNATALIA LOPEZ BARQUILLA
Subgrupo U209/09/2024 - 13/12/2024MIÉRCOLES 12:00 - 13:00INF3 Aula de InformáticaNATALIA LOPEZ BARQUILLA
MIÉRCOLES 13:00 - 14:00INF3 Aula de InformáticaNATALIA LOPEZ BARQUILLA