UNIVERSIDAD COMPLUTENS E DE MADRID FACULTAD DE INFORMATICA Ficha del curso: 2016-2017 Grado: DOBLE GRADO DE M ATEM ÁTICAS E INFORM ÁTICA Curso: 4º ( 2C ) Asignatura: 900226 - Programación Declarativa Abrev: PD 6 ECTS Asignatura en Inglés: Declarative Programming Materia: Programación avanzada 21 ECTS Otras asignaturas en la misma materia: M étodos algorítmicos en resolución de problemas 9 ECTS Programación Concurrente 6 ECTS Módulo: Tecnología específica: Computación Departamento: Sistemas Informáticos y Computación Coordinador: López Fraguas, Francisco Javier Descripción de contenidos mínimos: No tiene Programa detallado: • 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, inferencia de tipos, 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. Programa detallado en inglés: • Basic notions of functional programming: functions and expressions, types, higher order functions, lambda-abstractions. • Execution of functional programs: eager and lazy evaluation, pattern matching. • Data types: user-defined types, polymorphism, type inference, type classes. • Basic techniques of functional programming. • Basic notions of logic programming: relations, terms, clauses, logical variables. • Execution of logic programs: unification, resolution, search space. • Logic programming with structured data. • Programming in Prolog: control and metalogic predicates. Competencias de la asignatura: Generales: CG3-Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería. CG11-Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos. CG12-Conocimiento, diseño y utilización de forma eficiente de los tipos y estructuras de datos más adecuados a la resolución de un problema. CG13-Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados. Específicas: CE_C1-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. CE_C2-Capacidad para conocer los fundamentos teóricos de los lenguajes de programación y las técnicas de procesamiento léxico, sintáctico y semántico asociadas, y saber aplicarlas para la creación, diseño y procesamiento de lenguajes. CE_C3-Capacidad para evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos. Básicas y Transversales: CT1-Capacidad de comunicación oral y escrita, en inglés y español utilizando los medios audiovisuales habituales, y para trabajar en equipos multidisciplinares y en contextos internacionales. Fecha: ____ de _______________ de ______ Firma del Director del Departamento: UNIVERSIDAD COMPLUTENS E DE MADRID FACULTAD DE INFORMATICA CT2-Capacidad de análisis y síntesis en la resolución de problemas. CT3-Capacidad para gestionar adecuadamente la información disponible integrando creativamente conocimientos y aplicándolos a la resolución de problemas informáticos utilizando el método científico. Resultados de aprendizaje: No tiene Evaluación: No tiene Evaluación detallada: La calificación, tanto en la convocatoria de junio como en la de septiembre, tiene en cuenta las siguientes actividades y pruebas a realizar por el estudiante: Exámenes: A. Uno o más exámenes a mitad del cuatrimestre: 15% B. Realización de un trabajo práctico asignado: 10% Para la evaluación de este trabajo el profesor podrá convocar al alumno. La convocatoria de septiembre dispondrá de un nuevo plazo para la asignación y realización del trabajo práctico, para aquellos alumnos que no lo hubieran presentado en junio o quieran repetirlo. C. Examen final: 75% Actividades formativas: No tiene Actividades docentes: Reparto de créditos: Teoría: 4,50 Problemas: 0,00 Laboratorios: 1,50 En Aula En Lab Final Feb Parcial Feb Final Jun Parcial Jun Final Sep Sin Examen Otras actividades: Actividad presencial (40%): clases teóricas y de resolución de ejercicios; clases prácticas en laboratorio, en sesiones de dos horas en semanas alternas. Acividades dirigidas (10%): trabajos dirigidos. Trabajo personal (50%). Bibliografía: Libros de programación funcional * 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; * Graham Hutton; Programming in Haskell; Cambridge University Press, 2007; Libros de programación lógica * L.Sterling, E.Shapiro; The Art of Prolog. Advanced Programming Techniques; The M IT 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. M ellish; Programming in Prolog Using the ISO Standard; Springer Verlag, 5ª edición, 2003; Ficha docente guardada por última vez el 12/09/2016 17:51:00 por el usuario: Vic. Ordenación Académica Fecha: ____ de _______________ de ______ Firma del Director del Departamento: