Usted está aquí: Inicio web asignaturas

 

Fichas de asignaturas 2011-12


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 LENGUAJES Y SISTEMAS INFORMATICOS    
Curso      
Créditos ECTS 4      

 

ASIGNATURA OFERTADA SIN DOCENCIA

 

Pulse aquí si desea visionar el fichero referente al cronograma sobre el número de horas de los estudiantes.

Profesorado

Inmaculada Medina Bulo (coordinadora)
Francisco Palomo Lozano

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.

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.


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

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

El alumno podrá superar la asignatura siguiendo alguno de los dos sistemas
de
evaluación siguientes:

1. Evaluación continua

El alumno podrá superar la asignatura mediante evaluación continua, a
través de
la realización y superación de diversas tareas/actividades evaluativas de
obligado cumplimiento durante el desarrollo de la asignatura.

* Objeto de evaluación:

- Contenidos del paradigma de la programación funcional
- Aplicación de conocimientos a la producción de software de pequeña y
mediana
escala utilizando el paradigma de la programación funcional.
- Participación activa en las actividades individuales y en grupo.
- Comunicación oral y escrita

* Tareas/actividades de evaluación:

a) Generación de dudas y selección de las dudas más útiles y frecuentes
(DUF)
b) Pruebas individuales presenciales de control escritas
c) Resolución de ejercicios: desarrollo de funciones (ejercicios de
funciones
mediante ordenador y escritos sobre papel)
d) Realización de trabajos: desarrollos de críticas y resúmenes sobre
artículos y
conferencias, y desarrollo de programas según necesidades planteadas por
cliente

* Técnicas e instrumentos de evaluación:

- Pruebas de control escritas (preguntas de respuesta breve y resolución
de
problemas)
- Resolución de ejercicios sobre funciones
- Prácticas de laboratorio
- Programas elaborados
- Pruebas de ensayo crítico
- Registro de participación en actividades
- Rúbrica para la valoración de la comunicación oral y escrita

* Requisitos indispensables:

- Asistencia sistemática a las sesiones presenciales
- Trabajo individual y en grupo de los alumnos
- Seguimiento continuo y planificado
- Realización y entrega de actividades en las fechas fijadas

* Criterios de evaluación:

- Adecuación a los principios del paradigma de la programación funcional
- Adecuación al estándar
- Adecuación a la especificación
- Eficiencia en la ejecución
- Organización, claridad, elegancia y corrección de las soluciones
presentadas
- Participación e implicación
- Corrección ortográfica y gramatical
- Claridad en el proceso por el cual obtiene la solución al problema

* Procedimiento de calificación:

Para obtener una calificación positiva el alumno deberá superar
satisfactoriamente cada uno de las cuatro tareas de evaluación
independientemente.

El peso de la tarea a) será del 10%, el de la tarea b) será del 30%, el de
la
tarea c) será del 25% y el de la tarea d) será del 35%.

2. Evaluación final

El alumno podrá superar también la asignatura asistiendo a las
convocatorias de
exámenes finales que establecen los Estatutos de la Universidad de Cádiz.

* Objeto de evaluación:

- Contenidos del paradigma de la programación funcional
- Aplicación de conocimientos a la producción de software de pequeña y
mediana
escala utilizando el paradigma de la programación funcional.

* Tareas/actividades de evaluación:

a) Prueba final individual presencial escritas
b) Realización de trabajo: desarrollo de programas según necesidades
planteadas
por cliente

* Criterios de evaluación:

- Adecuación a los principios del paradigma de la programación funcional
- Adecuación al estándar
- Adecuación a la especificación
- Eficiencia en la ejecución
- Organización, claridad, elegancia y corrección de las soluciones
presentadas
- Corrección ortográfica y gramatical
- Claridad en el proceso por el cual obtiene la solución al problema

* Técnicas e instrumentos de evaluación:

- Prueba de control escrita (preguntas de respuesta breve y resolución de
problemas)
- Programas elaborados

* Procedimiento de calificación:

La asignatura se calificará mediante un examen escrito final
(valorado de 0 a 10) y la entrega de un trabajo final (valorado en "apto"
o "no
apto").

La calificación final será la obtenida en el examen, excepto en el caso en
el
que el trabajo se evalúe como "no apto" y en el examen tenga una
calificación
de 5 o más. En ese caso, la calificación final será de 4.



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.