Usted está aquí: Inicio web asignaturas

 

Fichas de asignaturas 2015-16


PROGRAMACIÓN FUNCIONAL

Asignaturas
 

  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

Sesiones académicas teóricas:Si   Exposición y debate:Si   Tutorías especializadas:Si  
Sesiones académicas Prácticas:Si   Visitas y excursiones:No   Controles de lecturas obligatorias:Si  

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.