Ruta de navegación

Contenido de XSL

Programación Funcional26228

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
Código
26228

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

Descripción y Contextualización de la AsignaturaAlternar navegación

La asignatura Programación Funcional es una introducción al paradigma funcional. Forma parte del

grupo ”Concepción y Desarrollo de Software” que engloba optativas para los itinerarios de Computación

e Ingeniería del Software.



Este paradigma, que va adquiriendo gradualmente más importancia en los ámbitos académico y

comercial, se basa en una concepción declarativa del problema a resolver, como alternativa a la

programación imperativa. Su principal objetivo se centra en declarar o especificar dicho problema por

medio de funciones (matemáticas) que, además, son ejecutables, hecho que permite obtener un programa

(o prototipo) directo a partir de la propia especificación.

Competencias/ Resultados de aprendizaje de la asignaturaAlternar 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).

Contenidos teórico-prácticosAlternar 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

  • Sistema de Evaluación Continua
  • Sistema de Evaluación Final
  • Herramientas y porcentajes de calificación:
    • Prueba escrita a desarrollar (%): 60
    • Realización de prácticas (ejercicios, casos o problemas) (%): 40

Convocatoria Ordinaria: Orientaciones y RenunciaAlternar 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.



Convocatoria Extraordinaria: Orientaciones y RenunciaAlternar navegación

En esta convocatoria solo se dispone de evaluación GLOBAL, mediante una prueba (100% de la calificación total).



NOTA: En caso de volver al confinamiento, las pruebas de evaluación se realizarán de forma telemática a través de cuestionarios, entrevistas y/o entregas en eGela o mediante conexión a Teams.

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.

Direcciones web

http://www.haskell.org

http://book.realworldhaskell.org

http://learnyouahaskell.com/

GruposAlternar navegación

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

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

09:00-10:25 (1)

12:00-13:30 (2)

Profesorado

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

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

10:30-12:00 (1)

Profesorado