Usted está aquí: Inicio web asignaturas

Fichas de asignaturas 2007-08


  CÓDIGO NOMBRE
Asignatura 1713044 PROGRAMACIÓN FUNCIONAL
Titulación 1713 INGENIERÍA EN INFORMÁTICA
Departamento C137 LENGUAJES Y SISTEMAS INFORMATICOS
Curso  
Créditos ECTS 4  

Créditos Teóricos 2,5 Créditos Prácticos 2 Tipo Optativa
ASIGNATURA OFERTADA SIN DOCENCIA.

 

Profesorado
Inmaculada Medina Bulo (coordinadora)
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
Comunicación 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 árboles.
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: 33  
  • Otro Trabajo Personal Autónomo:
    • Horas de estudio: 20  
    • Preparación de Trabajo Personal:  
    • ...
        
  • Realización de Exámenes:
    • Examen escrito: 2  
    • 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.

[1] Bird, Richard
Introducción a la programación funcional con Haskell.
Prentice-Hall. 2000.

[2] Hudak, P.
The Haskell school of expression: learning functional programming through
multimedia.
Cambridge University Press. 2000.

[3] Hutton, G.
Programming in Haskell.
Cambridge University Press. 2007.

[4] Ruiz, Blas C.; Gutiérrez, Francisco; Guerrero, Pablo y Gallardo, José E.
Razonando con Haskell. Un curso sobre programación funcional.
Thomson. 2004.

[5] Thompson, S.
Haskell: The craft of functional programming.
Addison-Wesley. 1996.

Bibliografía complementaria.

[1] Jones, M. P.
Hugs user's manual.
The University of Nottingham and Yale University. 1998.
Cronograma

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

El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente.