Contenido de XSL

Programación Funcional

Centro
Facultad de Informática
Titulación
Grado en Ingeniería Informática
Curso académico
2023/24
Curso
4
Nº Créditos
6
Idiomas
Castellano

DocenciaAlternar navegación

Distribución de horas por tipo de enseñanza
Tipo de docenciaHoras de docencia presencialHoras de actividad no presencial del alumno/a
Magistral4060
P. Laboratorio2030

Guía docenteAlternar navegación

ObjetivosAlternar navegación

En esta asignatura se estudian las principales características de los Lenguajes Funcionales modernos utilizando, en concreto, el lenguaje Haskell para poner en práctica los contenidos introducidos en las clases teóricas.



Los resultados de aprendizaje que alcanzará el alumnado que curse esta asignatura son:

- Diferenciar la programación declarativa y la imperativa.

- Conocer las principales características de los lenguajes funcionales modernos.

- Adquirir la destreza necesaria para realizar programas en Haskell utilizando adecuadamente los

conceptos propios del paradigma funcional.

- Usar un intérprete de Haskell para la implementación de programas siguiendo el paradigma funcional.



Competencias Específicas: estos resultados de aprendizaje están directamente relacionados con las

competencias específicas correspondientes a las especialidades de Computación e Ingeniería del Software, recogidas en el documento Lista_de_competencias.pdf accesible desde la dirección

http://www.ehu.es/documents/340468/516505/Lista+de+competencias.pdf



Competencias Generales: además de las Competencias Específicas, en esta asignatura también se

trabajan las Competencias genérales de la titulación, concretamente las C1, C2, C3, C4, C5, C8 y C9, y las competencias de las especialidades de Computación (CC1, CC2, CC4, CC5, CC6 y CC7) y de

Ingeniería del Software (IS1, IS2, IS3, IS4, IS5, IS6).

TemarioAlternar navegación

Tema 1. Introducción.

Tema 2. Tipos de datos simples. Definición de funciones. Currificación.

Tema 3. Constructores de tipos. Ajuste de patrones. Polimorfía.

Tema 4. Funciones sobre listas. Orden superior.

Tema 5. Operadores sobrecargados. Clases de tipos.

Tema 6. Tipos algebraicos. Inducción estructural.

Tema 7. Tipos abstractos de datos. Módulos.

Tema 8. Evaluación perezosa. Listas infinitas.

Tema 9. Eficiencia. Estructuras cíclicas.

Tema 10. Programando con acciones: I/O.

MetodologíaAlternar navegación

- Dado que es una asignatura eminentemente práctica, en las clases teóricas se ofrecen explicaciones conceptuales ilustradas con ejemplos de aplicación en la resolución de problemas.



- En los laboratorios se refuerza lo trabajado en las clases teóricas con la implementación de ejercicios y/o prácticas que se deben entregar al profesor o profesora a través de eGela.



- Con cada tema, se proporcionan listas de ejercicios que el alumnado debe resolver fuera del horario presencial. Los ejercicios más representativos se corrigen en clase, comentando distintas implementaciones válidas para resolver dichos ejercicios.



- Además, se contará con horas de tutoría para la atención personalizada al alumnado.

Sistemas de evaluaciónAlternar navegación

En esta convocatoria se puede optar entre dos sistemas de evaluación: CONTINUA y GLOBAL.



- El proceso de evaluación CONTINUA consta de 2 pruebas escritas evaluables + entrega de ejercicios y/o prácticas.



1. Los dos controles supondrán el 60% de la calificación total de la asignatura:



- La primera prueba abordará los conceptos básicos de la Programación Funcional, poniendo de manifiesto sus diferencias con la Programación Imperativa (25%)

- La segunda se realizará en la fecha oficial establecida por el centro para la realización del examen de la convocatoria ordinaria. Ampliará los contenidos trabajados en la primera parte del curso, con otros relacionados con la eficiencia y el tratamiento de las funciones de Entrada/Salida en Haskell (35%).



2. Entrega de ejercicios y/o prácticas en las fechas establecidas (40%)



Para superar la asignatura en evaluación CONTINUA es necesario tener aprobadas ambas partes (la correspondiente a los dos controles y la de los ejercicios y/o prácticas).



La evaluación GLOBAL, consta de un único examen (100% de la calificación total) que se realizará en la fecha oficial establecida por el centro para la realización del examen de la convocatoria ordinaria



Tanto en la evaluación CONTINUA como en la GLOBAL, el profesorado podrá solicitar información complementaria al alumnado para verificar el correcto desarrollo de las diferentes tareas.



Por defecto, todo el alumnado está incluido en el sistema de evaluación CONTINUA. La renuncia a la evaluación CONTINUA, pasando a la GLOBAL se puede hacer por escrito desde el comienzo del curso hasta una semana antes de la fecha oficial del examen de la convocatoria ordinaria establecida por el Centro.



Materiales de uso obligatorioAlternar navegación

- Material de la asignatura proporcionado en eGela (diapositivas, listas de ejercicios, información para hacer los laboratorios, etc).

- Intérprete del lenguaje Haskell usado en los laboratorios (versión 8.6.5.)

BibliografíaAlternar navegación

Bibliografía básica

- Bird, R. “Introducción a la Programación Funcional con Haskell” (2ª ed), Prentice Hall. Versión original (en inglés): 1998; traducción en español: 2000.



- Thompson, S. “Haskell. The Craft of Functional Programming"(2ª ed), Addison-Wesley. 1999.

Bibliografía de profundización

Peyton-Jones,S.L. The implementation of Functional Programming Languages. Prentice-Hall, 1987.

Revistas

The Journal of Functional Programming.

GruposAlternar navegación

01 Teórico (Castellano - Mañana)Mostrar/ocultar subpáginas

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

09:00-10:25

12:00-13:30

Profesorado

01 P. Laboratorio-1 (Castellano - Mañana)Mostrar/ocultar subpáginas

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

10:30-12:00

Profesorado