Esta asignatura se imparte en el tercer curso de la titulación, lo que permite asumir que los alumnos que la vayan a cursar, ya tendrán el suficiente entrenamiento en otras disciplinas afines que les habrán aportado conocimientos, capacidades y niveles de abstracción suficientes para asimilar convenientemente los contenidos que se imparten en la misma.
En lo que respecta a conocimientos previos, se espera una formación media en:
- Formalismos Matemáticos. Aquí se pone especial énfasis en los conocimientos referentes a lógica matemática y, en menor medida, álgebra, ya que suponen la base formal de los lenguajes lógicos y funcionales que se estudian clásicamente dentro del paradigma declarativo.
- Lenguajes y Técnicas de Programación. El alumno debe estar suficientemente familiarizado con algunos lenguajes de programación de estilo imperativo u orientado objeto, así como con técnicas de programación básicas, que en general no tengan por qué ser totalmente dependientes de un lenguaje de programación concreto para su implementación final. Esto permitirá contrastar de forma más satisfactoria el nuevo paradigma declarativo con otros estilos de programación, resaltando el amplio repertorio de recursos expresivos que aportan a la hora de codificar la solución a un problema minimizando el tamaño de las aplicaciones.
- Algorítmica y Estructuras de Datos. En relación con el apartado anterior, se espera que el alumno conozca las estructuras de datos y los esquemas algorítmicos básicos a la hora de representar y manipular la información de forma conveniente, para que posteriormente pueda simplificar tanto las tareas de implementación y mantenimiento, como el cálculo de coste computacional haciendo uso de tecnología declarativa.
- Teoría de Autómatas y Computación. Puesto que la programación declarativa viene aportando lenguajes de programación con altos niveles de abstracción y sólida cimentación matemática, se espera que el alumno conozca y sepa aplicar los fundamentos de la teoría de lenguajes formales, especificaciones algebraicas y métodos formales de la ingeniería del software.
Más específicamente se espera que el alumno posea las competencias y los conocimientos adquiridos en las asignaturas de Lógica, Fundamentos de Programación I y II, Metodología de la Programación y Estructura de Datos.
La programación declarativa se basa en la idea de utilizar un cierto tipo de lógica como lenguaje de programación. Esto incluye tanto la programación lógica (o relacional, que usa un lenguaje clausal para programar y el principio de resolución como mecanismo de ejecución) como la funcional (que usa el lenguaje de las funciones matemáticas y la reducción de expresiones como mecanismo computacional).
La programación declarativa ha encontrado una gran variedad de aplicaciones. Sin ánimo de ser exhaustivos, podemos enumerar algunas de éstas:
Procesamiento del lenguaje natural. Representación del conocimiento. Química y biología molecular. Desarrollo de Sistemas de Producción y Sistemas Expertos. Resolución de Problemas. Metaprogramación. Prototipado de aplicaciones. Bases de Datos Deductivas. Servidores y buceadores de información inteligentes. Web Semántica. Diseño de sistemas VLSI. Herramientas de soporte al desarrollo del software.
Lo que da idea de la relevancia de esta materia y justifica su inclusión en un plan de estudios de ingeniería informática. Más generalmente, la programación declarativa se ha aplicado en todos los campos de la computación simbólica (y por esto también los lenguajes declarativos se denominan a veces, lenguajes de computación simbólica, en contraposición a los lenguajes más tradicionales orientados a la computación numérica), la inteligencia artificial y la informática teórica (e.g., teoría de tipos).
La asignatura de Programación Declarativa se integra en la materia de Tecnología Específica de Computación del plan de estudios y sirve de fundamento a, o se relaciona directamente con, las siguientes asignaturas:
Sistemas basados en el Conocimiento
Diseño de Sistemas Interactivos
Competencias propias de la asignatura | |
---|---|
Código | Descripción |
CM1 | Capacidad para tener un conocimiento profundo de los principios fundamentales y modelos de la computación y saberlos aplicar para interpretar, seleccionar, valorar, modelar, y crear nuevos conceptos, teorías, usos y desarrollos tecnológicos relacionados con la informática. |
INS1 | Capacidad de análisis, síntesis y evaluación. |
INS4 | Capacidad de resolución de problemas aplicando técnicas de ingeniería. |
UCLM3 | Correcta comunicación oral y escrita. |
Resultados de aprendizaje propios de la asignatura | |
---|---|
Descripción | |
Comprender los fundamentos teóricos que sustentan el paradigma de programación declarativa. | |
Conocer y usar los distintos métodos, técnicas y herramientas para el desarrollo de aplicaciones mediante un lenguaje de programación declarativa. | |
Resultados adicionales | |
No se han establecido. |
Actividad formativa | Metodología | Competencias relacionadas (para títulos anteriores a RD 822/2021) | ECTS | Horas | Ev | Ob | Rec | Descripción * |
Enseñanza presencial (Teoría) [PRESENCIAL] | Método expositivo/Lección magistral | CM1 INS1 INS4 UCLM3 | 0.44 | 11 | S | N | N | Clase (grupos grandes) |
Resolución de problemas o casos [PRESENCIAL] | Resolución de ejercicios y problemas | CM1 INS1 INS4 UCLM3 | 0.44 | 11 | S | N | N | Clase (grupos grandes) |
Resolución de problemas o casos [PRESENCIAL] | Prácticas | CM1 INS1 INS4 UCLM3 | 1.2 | 30 | S | N | N | Laboratorio (grupos pequeños) |
Pruebas de progreso [PRESENCIAL] | Pruebas de evaluación | CM1 INS1 INS4 UCLM3 | 0.24 | 6 | S | N | S | Controles periódicos en clase |
Elaboración de memorias de Prácticas [AUTÓNOMA] | Aprendizaje basado en problemas (ABP) | CM1 INS1 INS4 UCLM3 | 1.2 | 30 | S | N | N | Tareas entregables (Moodle, etc.) o para corregir en clase o tutorías. |
Estudio o preparación de pruebas [AUTÓNOMA] | Autoaprendizaje | CM1 INS1 INS4 UCLM3 | 2.4 | 60 | S | N | N | Repaso y ampliación de temas. Resolución de ejercicios. Terminar prácticas. Preparación de Controles. |
Prueba final [PRESENCIAL] | CM1 INS1 INS4 UCLM3 | 0.08 | 2 | S | N | N | Examen extraordinario | |
Total: | 6 | 150 | ||||||
Créditos totales de trabajo presencial: 2.4 | Horas totales de trabajo presencial: 60 | |||||||
Créditos totales de trabajo autónomo: 3.6 | Horas totales de trabajo autónomo: 90 |
Ev: Actividad formativa evaluable Ob: Actividad formativa de superación obligatoria Rec: Actividad formativa recuperable
Valoraciones | |||
Sistema de evaluación | Estudiante presencial | Estud. semipres. | Descripción |
Pruebas de progreso | 70.00% | 0.00% | Controles sobre conociemientos adquiridos en clase y laboratorio ([ESC]50%, [LAB]20%) |
Valoración de la participación con aprovechamiento en clase | 20.00% | 0.00% | Participación: Exposición de temas, trabajos y resolución de problemas en clase y laboratorio ([INF]5%, [PRES]15%) |
Elaboración de memorias de prácticas | 10.00% | 0.00% | Trabajos entregables (Moodle, etc.) ([INF]10%). |
Total: | 100.00% | 0.00% |
No asignables a temas | |
---|---|
Horas | Suma horas |
Prueba final [PRESENCIAL][] | 2 |
Tema 1 (de 7): Estilos de programación. Programación declarativa. | |
---|---|
Actividades formativas | Horas |
Enseñanza presencial (Teoría) [PRESENCIAL][Método expositivo/Lección magistral] | 1 |
Resolución de problemas o casos [PRESENCIAL][Resolución de ejercicios y problemas] | 1 |
Resolución de problemas o casos [PRESENCIAL][Prácticas] | 2 |
Elaboración de memorias de Prácticas [AUTÓNOMA][Aprendizaje basado en problemas (ABP)] | 2 |
Estudio o preparación de pruebas [AUTÓNOMA][Autoaprendizaje] | 1 |
Tema 2 (de 7): Programación lógica. | |
---|---|
Actividades formativas | Horas |
Enseñanza presencial (Teoría) [PRESENCIAL][Método expositivo/Lección magistral] | 4 |
Resolución de problemas o casos [PRESENCIAL][Resolución de ejercicios y problemas] | 4 |
Resolución de problemas o casos [PRESENCIAL][Prácticas] | 8 |
Elaboración de memorias de Prácticas [AUTÓNOMA][Aprendizaje basado en problemas (ABP)] | 8 |
Estudio o preparación de pruebas [AUTÓNOMA][Autoaprendizaje] | 16 |
Tema 3 (de 7): El lenguaje Prolog. | |
---|---|
Actividades formativas | Horas |
Enseñanza presencial (Teoría) [PRESENCIAL][Método expositivo/Lección magistral] | 1 |
Resolución de problemas o casos [PRESENCIAL][Resolución de ejercicios y problemas] | 1 |
Resolución de problemas o casos [PRESENCIAL][Prácticas] | 4 |
Pruebas de progreso [PRESENCIAL][Pruebas de evaluación] | 1.5 |
Elaboración de memorias de Prácticas [AUTÓNOMA][Aprendizaje basado en problemas (ABP)] | 3 |
Estudio o preparación de pruebas [AUTÓNOMA][Autoaprendizaje] | 10 |
Tema 4 (de 7): Técnicas avanzadas de programación en Prolog. | |
---|---|
Actividades formativas | Horas |
Enseñanza presencial (Teoría) [PRESENCIAL][Método expositivo/Lección magistral] | 2 |
Resolución de problemas o casos [PRESENCIAL][Resolución de ejercicios y problemas] | 2 |
Resolución de problemas o casos [PRESENCIAL][Prácticas] | 6 |
Pruebas de progreso [PRESENCIAL][Pruebas de evaluación] | 1.5 |
Elaboración de memorias de Prácticas [AUTÓNOMA][Aprendizaje basado en problemas (ABP)] | 4 |
Estudio o preparación de pruebas [AUTÓNOMA][Autoaprendizaje] | 12 |
Tema 5 (de 7): Programación funcional. | |
---|---|
Actividades formativas | Horas |
Enseñanza presencial (Teoría) [PRESENCIAL][Método expositivo/Lección magistral] | 2 |
Resolución de problemas o casos [PRESENCIAL][Resolución de ejercicios y problemas] | 2 |
Resolución de problemas o casos [PRESENCIAL][Prácticas] | 4 |
Elaboración de memorias de Prácticas [AUTÓNOMA][Aprendizaje basado en problemas (ABP)] | 4 |
Estudio o preparación de pruebas [AUTÓNOMA][Autoaprendizaje] | 8 |
Tema 6 (de 7): Programación funcional avanzada. | |
---|---|
Actividades formativas | Horas |
Resolución de problemas o casos [PRESENCIAL][Prácticas] | 2 |
Pruebas de progreso [PRESENCIAL][Pruebas de evaluación] | 1.5 |
Elaboración de memorias de Prácticas [AUTÓNOMA][Aprendizaje basado en problemas (ABP)] | 5 |
Estudio o preparación de pruebas [AUTÓNOMA][Autoaprendizaje] | 3 |
Tema 7 (de 7): Programación simbólica. Lisp. | |
---|---|
Actividades formativas | Horas |
Enseñanza presencial (Teoría) [PRESENCIAL][Método expositivo/Lección magistral] | 1 |
Resolución de problemas o casos [PRESENCIAL][Resolución de ejercicios y problemas] | 1 |
Resolución de problemas o casos [PRESENCIAL][Prácticas] | 4 |
Pruebas de progreso [PRESENCIAL][Pruebas de evaluación] | 1.5 |
Elaboración de memorias de Prácticas [AUTÓNOMA][Aprendizaje basado en problemas (ABP)] | 4 |
Estudio o preparación de pruebas [AUTÓNOMA][Autoaprendizaje] | 10 |
Actividad global | |
---|---|
Actividades formativas | Suma horas |
Comentarios generales sobre la planificación: | Esta planificación es ORIENTATIVA, pudiendo variar a lo largo del curso en función de las necesidades docentes, festividades, etc. La asignatura se imparte en tres sesiones semanales de 1,5 horas. Las actividades de evaluación o recuperación de clases podrían planificarse, excepcionalmente, en horario de tarde. La planificación semana a semana de la asignatura podrá encontrarse en la plataforma Campus Virtual (Moodle). |