Programación Funcional
Guía de Aprendizaje – Información al estudiante
1 Datos Descriptivos
Asignatura | Programación Funcional |
Materia | Desarrollo de Software |
Departamento | LSIIS |
responsable | |
Créditos ECTS | 3 |
Carácter | Obligatoria |
Titulación | Grado de Matemáticas e Informática |
Curso | Tercero |
Especialidad | No aplica |
Curso académico | 2012-2013 |
Semestre en el que | Segundo |
se imparte | |
Semestre principal | Segundo |
Idioma en el que | Castellano |
se imparte | |
Página Web | http://web3.fi.upm.es/AulaVirtual/course/view.php?id=331 |
2 Profesorado
NOMBRE Y APELLIDO | DESPACHO | Correo electrónico |
---|---|---|
Pablo Nogueira (Coord.) | D-2304 | pnogueira@fi.upm.es |
3 Conocimientos previos requeridos para poder seguir con normalidad la asignatura
Asignaturas superadas | Programación I, Programación II, |
Algoritmos y Estructura de Datos |
4 Objetivos de aprendizaje
Código | Competencias Transversales | Nivel |
---|---|---|
CG01 | Capacidad de resolución de problemas aplicando | 3 |
conocimientos de matemáticas, ciencias e ingeniería. | ||
CG02 | Capacidad para el aprendizaje autónomo y la actualización | 3 |
de conocimientos, y reconocimiento de su necesidad en las | ||
áreas de las matemáticas y la informática. | ||
CG05 | Capacidad de abstracción, análisis y síntesis. | 3 |
CG08 | Capacidad de comunicarse de forma efectiva con los | 3 |
compañeros, usuarios (potenciales) y el público en general | ||
acerca de cuestiones reales y problemas relacionados con | ||
la especialización elegida. | ||
CG10 | Capacidad para usar las tecnologías de la información y | 3 |
la comunicación. |
LEYENDA: Nivel de adquisición 1: Bajo Nivel de adquisición 2: Medio Nivel de adquisición 3: Alto
Código | Competencias Especificas | Nivel |
---|---|---|
CE07 | Conocer los cimientos esenciales y fundacionales de la | |
informática, abarcando tanto conceptos y teorías abstractos | A | |
como los valores y principios profesionales, subrayando | ||
los aspectos esenciales de la disciplina que permanecen | ||
inalterables ante el cambio tecnológico. | ||
CE08 | Formalización y especificación de problemas reales cuya | S |
solución requiere el uso de la informática. | ||
CE09 | Capacidad de elegir y usar los métodos analíticos y | A |
de modelización relevantes, y de describir una solución | ||
de forma abstracta. | ||
CE11 | Comprender intelectualmente el papel central que tienen | S |
los algoritmos y las estructuras de datos, así como una | ||
apreciación del mismo. | ||
CE13 | Poseer destrezas fundamentales de la programación que | S |
permitan la implementación de los algoritmos y las | ||
estructuras de datos en el software. | ||
CE26 | Conocimiento de los tipos apropiados de soluciones, y | A |
comprensión de la complejidad de los problemas informáticos | ||
y la viabilidad de su solución. | ||
CE27 | Conocer la influencia, uso y aplicación de los fundamentos | A |
matemáticos utilizados en la especificación y construcción | ||
de programas en lenguajes de alto nivel (funcionales) y | ||
analizar y desarrollar programas en lenguajes de alto nivel | ||
donde se realizan los conceptos de los fundamentos lógicos | ||
y algebraicos de la informática. | ||
CE30 | Elegir y usar los lenguajes de programación adecuados al | A |
tipo de aplicación a desarrollar. | ||
CE31 | Concebir y diseñar la arquitectura de un sistema software | S |
CE43 | Capacidad para trabajar de forma efectiva como individuo, | A |
organizando y planificando su propio trabajo, de forma | ||
independiente o como miembro de un equipo. |
LEYENDA: A: Aplicación S: Análisis y Síntesis
5 Resultados de aprendizaje
5.1 Resultados de aprendizaje de la asignatura
Código | Resultado de aprendizaje | Competencias | Nivel de |
---|---|---|---|
asociadas | adquisición | ||
RA1 | Comprender los fundamentos matemáticos | CE07, CE09, | 3 |
de la programación en los lenguajes de | CE13, CE27 | ||
alto nivel funcionales. | Todas las CG | ||
RA2 | Desarrollar programas funcionales puros | Todas las CE | 3 |
y monádicos. | Todas las CG | ||
RA3 | Comprender y analizar el comportamiento | CE07-CE09 | 2 |
semántico (operacional y denotacional) de | CE26, CE27 | ||
programas funcionales. | CE43 | ||
Todas las CG |
5.2 Sistema de evaluación de la asignatura
5.2.1 Indicadores de logro
Ref | Indicador | Relación |
---|---|---|
con RA | ||
I1 | Comprende y utiliza los conceptos de función recursiva, | RA1-RA3 |
álgebra de la programación, orden superior y semántica. | ||
I2 | Comprende y utiliza las implicaciones prácticas de los | RA3 |
mecanismos de evaluación. | ||
I3 | Comprende y sabe construir programas funcionales con tipos | RA1, RA2 |
algebraicos y monádicos. | ||
I4 | Comprende y sabe utilizar el isomorfismo entre lógica | RA1, RA2 |
y programación funcional. | ||
I5 | Comprende y utiliza código funcional relativamente avanzado. | RA1, RA3 |
I6 | Conoce y utiliza la sintaxis y praxis del lenguaje Haskell 98. | RA2, RA3 |
I7 | Comprende y utiliza librerías de código funcional | RA2 |
5.2.2 Evaluación sumativa
Breve descripción de | Momento | Lugar | Peso en la |
---|---|---|---|
las actividades evaluables | calificación | ||
Práctica | Una en el semestre | Aulas Informáticas | 100% |
(sistema de evaluación continua) | y en casa | ||
Examen | Uno en el semestre | Aulas de examen | 100% |
(sistema de evaluación mediante prueba final y | |||
convocatoria extraordinaria de julio) |
6 Criterios de calificación
6.1 Introducción
Los criterios de evaluación de la asignatura se establecen en conformidad con la "Normativa Reguladora de los Sistemas de Evaluación" (en adelante "Normativa Reguladora") actualmente vigente en la Universidad Politécnica de Madrid para los planes de estudio adaptados al R.D. 1393/2007. Dicha normativa está disponible en la siguiente URL:
Las normas de esta guía pueden ser modificadas al comienzo del semestre en función de la disposición de recursos de la Facultad. Dichas modificaciones se anunciarán con toda la antelación posible en el transcurso de las clases y a través de los recursos informáticos de los que dispone la asignatura o, en su defecto, a través cualesquiera otros medios disponibles de la UPM, la Facultad, o sus departamentos.
6.2 Convocatorias
Según la Normativa Reguladora, se establecen dos convocatorias de evaluación:
- Convocatoria ordinaria, que se corresponde con las actividades de evaluación que se realizan durante el semestre.
- Convocatoria extraordinaria, que se corresponde con las actividades de evaluación que deben realizar aquellos estudiantes que no logren superar la asignatura en la convocatoria ordinaria. La convocatoria extraordinaria tiene lugar en el mes de julio y pueden concurrir a ella los alumnos que han estado matriculados en el semestre del año académico en el que se imparte la asignatura y no han superado la misma.
6.3 Convocatoria ordinaria
6.3.1 Sistemas de evaluación
Según la Normativa Reguladora, en la convocatoria ordinaria el alumno puede optar únicamente por uno de los siguientes sistemas de evaluación:
- Sistema de evaluación continua.
- Sistema de evaluación mediante prueba final.
El sistema de evaluación continua será el que se aplique en general a todos los alumnos de la asignatura. El alumno que desee seguir el sistema de evaluación mediante prueba final deberá comunicarlo mediante escrito firmado al coordinador de la asignatura en un plazo de 15 días naturales desde el comienzo de las clases. Los detalles del procedimiento y el escrito a rellenar se encuentran disponibles en en http://www.fi.upm.es/?pagina=1147
6.3.2 Sistema de evaluación continua
Se evalúa al alumno de forma continua a lo largo del semestre mediante la realización progresiva y tutorada de una práctica estructurada en partes.
La práctica completa se evaluará en una escala de 0 a 10 al terminar el semestre. Para aprobar la asignatura debe obtenerse una calificación mínima de 5 en la práctica. Los alumnos que no realicen la práctica tendrán una calificación de 0 en la convocatoria.
El alumno será evaluado al completar cada parte, pero dicha evaluación será utilizada para reforzar los conocimientos y no para calificar, acorde al espíritu de la evaluación continua y no al de evaluar continuamente. La nota final de la práctica reflejará el progreso del alumno además de su capacidad técnica y la consecución de los Resultados de Aprendizaje.
Las fechas de realización de cada parte de la práctica se indicarán con suficiente antelación de acuerdo a la Normativa Reguladora.
Las prácticas podrán ser individuales o en grupo en función de la disponibilidad de Aulas Informáticas.
En caso de verificarse plagio de la práctica tanto los copiador(es) como los copiado(s) anuentes tendrán la asignatura suspensa y se solicitará a Jefatura de Estudios la apertura de su expediente académico para que conste en el mismo que han plagiado.
6.3.3 Sistema de evaluación mediante prueba final
En esta modalidad se evalúa a los alumnos mediante un examen escrito al finalizar el semestre. La fecha y lugar estarán indicados en el calendario de exámenes del semestre. El examen se calificará de 0 a 10 y para aprobar la asignatura debe obtenerse una calificación mínima de 5.
En caso de verificarse plagio se aplicará la sanción descrita en la sección *Sistema de evaluación continua de esta guía.
6.4 Convocatoria extraordinaria
Los alumnos que no han superado la asignatura en la convocatoria ordinaria, independientemente del sistema de evaluación elegido para dicha convocatoria ordinaria, tienen la posibilidad de concurrir a la convocatoria extraordinaria del mes de julio.
En esta modalidad se evalúa a los alumnos mediante un examen escrito. La fecha y lugar será la marcada en el calendario de exámenes extraordinarios. El examen se calificará de 0 a 10 y para aprobar la asignatura debe obtenerse una calificación mínima de 5.
En caso de verificarse plagio se aplicará la sanción descrita en la sección *Sistema de evaluación continua de esta guía.
7 Contenidos y Actividades de Aprendizaje
Contenidos específicos
Tema | Apartado | Indicadores |
---|---|---|
relacionados | ||
Tema 1: | 1.1 Tipo, expresión, función, operador. | I1,I6,I7 |
Introducción | 1.2 Algebra libre, ajuste de patrones, | I1,I3,I4 |
recursión e inducción. Semánticas. | ||
1.3 Orden superior, polimorfismo, clases | I1-I7 | |
de tipo. Semánticas. | ||
Tema 2: | 2.1 Listas y definición por comprensión. | I1,I3,I5-I8 |
Aplicaciones | 2.2 Estructuras de datos funcionales. | I3-I7 |
2.3 Estructuras infinitas y co-recursión. | I1,I2,I5,I6 | |
Tema 3: | 3.1 Isomorfismo Curry-Howard. | I1,I4,I5 |
Conceptos avanzados | 3.2 Mónadas. | I1,I2,I3,I5 |
3.3 Implementación. | I2,I3,I6,I7 |
8 Breve descripción de las modalidades organizativas y los métodos de enseñanza empleados
CLASES DE TEORÍA | Método expositivo y estudio de casos. |
PRÁCTICAS | Aprendizaje basado en problemas. |
TRABAJOS AUTÓNOMOS | Ejercicios voluntarios. Práctica. |
TRABAJOS EN GRUPO | Práctica |
TUTORÍAS | Atención personalizada en |
teoría y laboratorio. |
9 Recursos didácticos
BIBLIOGRAFÍA | Richard Bird. Introduction to Functional Programming using Haskell. |
–——————————————————————— | |
Paul Hudak. The Haskell School of Expression. | |
–——————————————————————— | |
Graham Hutton. Programming in Haskell. | |
–——————————————————————— | |
Bruce J. MacLennan. Functional Programming: Practice and Theory. | |
–——————————————————————— | |
Chris Reade. Elements of Functional Programming | |
RECURSOS WEB | Sitio Moodle de la asignatura |
http://web3.fi.upm.es/AulaVirtual/course/view.php?id=331 | |
Portal Haskell http://www.haskell.org. | |
EQUIPAMIENTO | Aulas docentes con proyector y pizarra. Aulas informáticas con |
proyector, pizarra y ordenadores para los alumnos. | |
Compilador GHC e intérprete GHCi. |
10 Cronograma de trabajo
Semana | Actividades en Aula | Actividades en | Trabajo | Trabajo | Actividades | Otros |
---|---|---|---|---|---|---|
Aula Informática | Individual | en Grupo | de Evaluación | |||
Semana 1 | Tipo, expresión, función, operador. | |||||
(2 horas) | Haskell 98. (2 horas) | |||||
Semana 2 | Tipo, expresión, funcion, operador. | Estudio teoría | ||||
(5 horas) | Haskell 98. Algebra libre, ajuste | y ejercicios voluntarios. | ||||
de patrones. Semánticas. (2 horas) | (3 horas) | |||||
Semana 3 | Tipo, expresión, función, operador. | Estudio teoría | ||||
(5 horas) | Haskell 98. Algebra libre, ajuste | y ejercicios voluntarios. | ||||
de patrones. Semánticas. (2 horas) | (3 horas) | |||||
Semana 4 | Tipo, expresión, función, operador. | Estudio teoría | ||||
(5 horas) | Haskell 98. Algebra libre, ajuste | y ejercicios voluntarios. | ||||
de patrones. Semánticas. Recursión e | (3 horas) | |||||
inducción. (2 horas) | ||||||
Semana 5 | Listas. Recursión e inducción. | Estudio teoría | ||||
(5 horas) | Polimorfismo. Orden superior. (2 horas) | y ejercicios voluntarios. | ||||
(3 horas) | ||||||
Semana 6 | Listas. Definición por comprensión. | Estudio teoría | ||||
(5 horas) | Polimorfismo. Orden superior. | y ejercicios voluntarios. | ||||
(2 horas) | (3 horas) | |||||
Semana 7 | Listas infinitas. Orden superior. | Estudio teoría | ||||
(5 horas) | Co-recursión. Semánticas. | y ejercicios voluntarios. | ||||
(2 horas) | (3 horas) | |||||
Semana 8 | Clases de tipos. Haskell 98. | Estudio teoría y | ||||
(5 horas) | (2 horas) | Enunciado Práctica. | ||||
(3 horas) | ||||||
Semana 9 | Clases de tipos y polimorfismo. | Estudio teoría y | ||||
(6 horas) | Haskell 98. Listas. (2 horas) | Práctica. (4 horas) | ||||
Semana 10 | Implementación. Mónada Maybe. | Estudio teoría y | ||||
(6 horas) | (2 horas) | Práctica. (4 horas) | ||||
Semana 11 | Implementación. Mónada IO. | Estudio teoría y | ||||
(6 horas) | (2 horas) | Práctica. (4 horas) | ||||
Semana 12 | Mónadas. Isomorfismo Curry-Howard. | Estudio teoría y | ||||
(6 horas) | (2 horas) | Práctica. (4 horas) | ||||
Semana 13 | Práctica | Práctica. | ||||
(5 horas) | (2 horas) | (3 horas) | ||||
Semana 14 | Practica | Práctica. | ||||
(5 horas) | (2 horas) | (3 horas) | ||||
Semana 15 | Práctica | Práctica. | ||||
(5 horas) | (2 horas) | (3 horas) | ||||
Semana 16 | Práctica | Práctica. | ||||
(5 horas) | (2 horas) | (3 horas) | ||||
Semana de | Preparación examen final | Examen Final | ||||
Examen | (8 + 16 horas) | (3 horas) | ||||
(3 horas) |
Nota: Para cada actividad se especifica la dedicación en horas que implica para el alumno.