Fichas de asignaturas 2006-07
CÓDIGO | NOMBRE | |
Asignatura | 1713044 | PROGRAMACIÓN FUNCIONAL |
Titulación | 1713 | INGENIERÍA EN INFORMÁTICA |
Departamento | C137 | LENGUAJES Y SISTEMAS INFORMATICOS |
Curso | - | |
Duración (A: Anual, 1Q/2Q) | 1Q | |
Créditos ECTS | 4 |
Créditos Teóricos | 2,5 | Créditos Prácticos | 2 | Tipo | Optativa |
Capacidad para resolver problemas Capacidad de análisis y síntesis Comunicación oral y escrita Trabajo en equipo
Cognitivas(Saber):
Conocer los fundamentos del paradigma de la programación funcional Conocer el lenguaje funcional Haskell
Procedimentales/Instrumentales(Saber hacer):
Resolver problemas empleando un enfoque funcional Modelar datos mediante estructuras funcionales Programar en el lenguaje funcional Haskell
Actitudinales:
Creatividad Aprendizaje autónomo
Los objetivos que pretende cubrir la asignatura pueden resumirse en los siguientes puntos: 1. Comprender el paradigma de la programación funcional y sus ventajas 2. Conocer los fundamentos del lenguaje funcional Haskell 3. Programar en el laboratorio siguiendo el paradigma funcional
Teoría: Programación funcional. (25h) 1. Paradigma de la programación funcional. (2h) 1.1. Introducción. 1.2. Funciones. 1.3. Sesiones y declaraciones. 1.4. Reducción de expresiones. 2. Conceptos fundamentales. (4h) 2.1. Tipos de datos. 2.2. Operadores. 2.3. Patrones. 2.4. Expresiones. 3. Funciones de orden superior y polimorfismo. (4h) 3.1. Parcialización (currificación). 3.2. Polimorfismo. 4. Definiciones de tipos y sistema de clases. (4h) 4.1. Definiciones de tipos. 4.2. Clases de tipos. 5. Listas, árboles y grafos. (6h) 5.1. Tipo lista. 5.2. Tipo árbol. 5.3. Tipo grafo. 5.4. Inducción estructural. 6. Evaluación perezosa. (5h) 6.1. Evaluación perezosa frente a evaluación impaciente. 6.2. Listas parciales e infinitas. 6.3. Redes finitas de procesos. Prácticas: Programación funcional. (20h) 1. Entorno de desarrollo. (2h) 1.1. Hugs. 1.2. Opciones más frecuentes. 1.3. Ejecución desde Emacs. 2. Conceptos básicos (2h) 2.1. Primeros ejemplos. 2.2. Tipos de datos. 3. Funciones y expresiones (4h) 3.1. Definición de funciones. 3.2. Operadores. 3.3. Patrones. 3.4. Expresiones condicionales. 3.5. Definiciones locales. 4. Programación con listas (4h) 3.1. Tipo lista. 3.2. Casos de estudio. 5. Programación con árboles (4h) 4.1. Tipo árbol. 4.2. Casos de estudio. 6. Programación con grafos. (4h) 5.1. Tipo grafo. 5.2. Casos de estudio.
Se empleará una metodología cuyo objetivo es lograr el aprendizaje a través de la resolución de problemas. Las clases correspondientes a los créditos teóricos constarán, fundamentalmente, de sesiones de resolución de problemas propuestos con antelación en las que los alumnos podrán emplear cuantos materiales estimen convenientes. Los alumnos deberán primero intentar resolver los problemas por sí mismos, para luego trabajar por parejas, explicándose mutuamente la solución obtenida e intentando encontrar errores en la solución del compañero, o bien, intentando llegar juntos a una solución. Posteriormente, las soluciones se pondrán en común en grupo y se invitará a su exposición. El objetivo es fomentar el trabajo cooperativo, el espíritu crítico y la comunicación. Se hará especial hincapié en la necesidad de comprobar la corrección de la solución final obtenida y su bondad respecto a distintos criterios, al objeto de fomentar el espíritu crítico. El profesor enseñará los conocimientos teóricos y técnicos necesarios bajo demanda, conforme los alumnos los requieran para resolver los problemas planteados, limitándose a actuar de guía en el proceso de aprendizaje. El alumno es responsable de su propio aprendizaje. No obstante, el profesor realizará al principio de cada tema una breve introducción de sus aspectos principales y de dónde encontrar información adicional, proporcionando diversos materiales a lo largo del curso. Las clases prácticas complementan los contenidos de la parte teórica. Se proporcionarán ejercicios que se desarrollarán en el laboratorio a lo largo del curso. Tanto las clases teóricas como las prácticas se servirán del campus virtual como apoyo para la docencia. Estarán disponibles herramientas de comunicación como foros especializados, tutorías electrónicas privadas y correo electrónico, así como diversos contenidos en formato digital.
Nº de Horas (indicar total): 100
- Clases Teóricas: 19
- Clases Prácticas: 13
- Exposiciones y Seminarios: 7
- Tutorías Especializadas (presenciales o virtuales):
- Colectivas: 6
- Individules:
- Realización de Actividades Académicas Dirigidas:
- Con presencia del profesorado:
- Sin presencia del profesorado: 16
- Otro Trabajo Personal Autónomo:
- Horas de estudio: 31
- Preparación de Trabajo Personal: 4
- ...
- Realización de Exámenes:
- Examen escrito: 4
- Exámenes orales (control del Trabajo Personal):
|
Se emplearán como técnicas de evaluación exámenes y trabajos. Como criterios de evaluación de tendrán en cuenta la claridad, elegancia y eficiencia de las soluciones obtenidas y su adecuación a los principios del paradigma de la programación funcional. Se valorará especialmente la capacidad del alumno para explicar con claridad el proceso por el cual obtiene la solución al problema. El alumno podrá superar la asignatura mediante evaluación continua, a través de la entrega de trabajos y la realización de exámenes durante el curso. La nota final será en un 70% la media de las notas obtenidas en cada uno de los trabajos propuestos y en un 30% la media de las notas obtenidas en los exámenes de control. No obstante, también es posible asistir a las convocatorias de exámenes finales que establecen los Estatutos de la Universidad de Cádiz. A este efecto, la asignatura se evaluará mediante un examen final realizado en el laboratorio y la nota final será exclusivamente la obtenida en él.
Bibliografía básica. Bird, Richard Introducción a la programación funcional con Haskell. Prentice-Hall. 2000. Hudak, P. The Haskell school of expression: learning functional programming through multimedia. Cambridge University Press. 2000. Ruiz, Blas C.; Gutiérrez, Francisco; Guerrero, Pablo y Gallardo, José E. Razonando con Haskell. Un curso sobre programación funcional. Thomson. 2004. Thompson, S. Haskell: The craft of functional programming. Addison-Wesley. 1996. Bibliografía complementaria. Jones, M. P. Hugs user's manual. The University of Nottingham and Yale University. 1998.
El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente.