Fichas de asignaturas 2014-15
![]() |
PROGRAMACIÓN FUNCIONAL |
![]() ![]() |
|
Asignatura |
![]() |
| |
Profesorado |
![]() |
| |
Situación |
![]() |
| |
Competencias |
![]() |
| |
Objetivos |
![]() |
| |
Programa |
![]() |
| |
Actividades |
![]() |
| |
Metodología |
![]() |
| |
Distribucion |
![]() |
| |
Técnicas Docentes |
![]() |
| |
Evaluación |
![]() |
| |
Recursos Bibliográficos |
![]() |
Código | Nombre | |||
Asignatura | 1713044 | PROGRAMACIÓN FUNCIONAL | Créditos Teóricos | 2.5 |
Descriptor | FUNCTIONAL PROGRAMMING | Créditos Prácticos | 2 | |
Titulación | 1713 | INGENIERÍA EN INFORMÁTICA | Tipo | Optativa |
Departamento | C137 | INGENIERÍA INFORMÁTICA | ||
Curso | ||||
Créditos ECTS | 4 |
ASIGNATURA OFERTADA SIN DOCENCIA
Profesorado
Manuel Palomo Duarte (coordinador)
Situación
Prerrequisitos
Ninguno
Contexto dentro de la titulación
Esta asignatura introduce un paradigma de programación novedoso para el alumno, que ha estudiado previamente el paradigma imperativo y el orientado a objetos. Supone aprender una nueva forma de enfocar y resolver problemas que produce soluciones generales, elegantes y más fáciles de verificar.
Recomendaciones
Aunque no es en absoluto imprescindible, los alumnos que hayan cursado previamente las asignaturas optativas de Programación Lógica y Lógica Matemática se beneficiarán de los conocimientos adquiridos en ellas, apreciando mejor las ventajas que presentan los lenguajes funcionales.
Competencias
Competencias transversales/genéricas
Capacidad para resolver problemas Capacidad de análisis y síntesis Comunicacion oral y escrita Trabajo en equipo
Competencias específicas
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
Objetivos
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.
Programa
Teoría: Programación funcional. 0. Presentación. 1. Paradigma de la programación funcional. 1.1. Introducción. 1.2. Características fundamentales. 1.3. Funciones. 1.4. Sesiones y declaraciones. 1.5. Reducción de expresiones y órdenes de reducción. 2. Conceptos fundamentales. 2.1. Tipos de datos. 2.2. Operadores. 2.3. Patrones. 2.4. Expresiones. 3. Funciones de orden superior y polimorfismo. 3.1. Parcialización (currificación). 3.2. Polimorfismo. 4. Definiciones de tipos y sistema de clases. 4.1. Definiciones de tipos. 4.2. Clases de tipos. 5. Listas, árboles y grafos. 5.1. Tipo lista. 5.2. Tipo árbol. 5.3. Tipo grafo. 5.4. Inducción estructural. 6. Evaluación perezosa y mónadas. 6.1. Evaluación perezosa. 6.2. Listas parciales e infinitas. 6.3. Redes finitas de procesos. 6.4. Evaluación impaciente. 6.5. Mónadas. 6.6. Mónadas de E/S. 7. Introducción a otros lenguajes funcionales: Clojure, etc. Prácticas: Programación funcional. 1. Entorno de desarrollo. 1.1. Hugs. 1.2. Opciones más frecuentes. 1.3. Ejecución desde Emacs. 1.4. Definición de funciones. 2. Conceptos fundamentales. 2.1. Tipos de datos. 2.2. Operadores. 2.3. Patrones. 2.4. Expresiones. 2.5. Definiciones locales. 3. Funciones de orden superior y polimorfismo. 3.1. Funciones parcializadas. 3.2. Secciones. 3.3. Funciones de orden superior. 3.4. Combinadores. 3.5. Funciones polimórficas. 4. Definiciones de tipos y sistema de clases. 4.1. Sinónimos de tipo. 4.2. Funciones de plegado o recursores. 4.3. Definiciones de tipos. 4.4. Clases e instancias de tipos. 5. Listas, árboles y grafos. 5.1. Tipo lista. 5.2. Tipo árbol. 5.3. Tipo grafo. 5.4. Casos de estudio. 6. Evaluación perezosa y mónadas. 6.1. Definición de funciones con evaluación impaciente. 6.2. Definición de funciones con mónadas de E/S. 6.3. La expresión do. 7. Introducción a otros lenguajes funcionales: Scala, etc.
Actividades
Actividades presenciales obligatorias Actividades prácticas Actividades académicamente dirigidas Actividades de presentación y defensa pública de trabajos Actividades de supervisión y orientación presencial en el aula Tutorías y entrevistas personales Actividades de evaluación continua y final Actividades presenciales obligatorias Actividades prácticas Actividades académicamente dirigidas Actividades de presentación y defensa pública de trabajos Actividades de supervisión y orientación presencial en el aula Tutorías y entrevistas personales Actividades de evaluación continua y final
Metodología
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.
Distribución de horas de trabajo del alumno/a
Nº de Horas (indicar total): 100
- Clases Teóricas: 13
- Clases Prácticas: 13
- Exposiciones y Seminarios:
- Tutorías Especializadas (presenciales o virtuales):
- Colectivas: 3
- Individules:
- Realización de Actividades Académicas Dirigidas:
- Con presencia del profesorado: 16
- Sin presencia del profesorado: 28
- Otro Trabajo Personal Autónomo:
- Horas de estudio: 24
- Preparación de Trabajo Personal:
- ...
- Realización de Exámenes:
- Examen escrito: 3
- Exámenes orales (control del Trabajo Personal):
Técnicas Docentes
|
Criterios y Sistemas de Evaluación
Al dejar de impartirse la asignatura en el curso 2014/2015 dispone de 4 convocatorias de examen que puede distribuir durante los cursos 2014/2015 y 2015/2016.
Recursos Bibliográficos
Bibliografía básica. Bird, Richard Introducción a la programación funcional con Haskell. Prentice-Hall. 2000. Bryan O'Sullivan, Bryan;Stewart, Donald Bruce y Goerzen, John Real World Haskell. O'reilly. 2008. Doets, Kee y Eijck, van Jan The Haskell Road to Logic, Maths and Programming Texts in Computing. 2006. Hudak, Paul The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press. 2000. Hutton. Graham Programming in Haskell Cambridge, 2007. 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. En aplicación de la Ley 3/2007, de 22 de marzo, para la igualdad efectiva de mujeres y hombres, así como la Ley 12/2007, de 26 de noviembre, para la promoción de la igualdad de género en Andalucía, toda alusión a personas o colectivos incluida en este documento estará haciendo referencia al género gramatical neutro, incluyendo por lo tanto la posibilidad de referirse tanto a mujeres como a hombres.