Docencia: Programación Funcional

Modificado el 3 de Febrero de 2017
These icons link to social bookmarking sites where readers can share and discover new web pages.
  • BarraPunto
  • Del.icio.us
  • Digg
  • email
  • Facebook
  • Google
  • LinkedIn
  • PDF
  • Reddit
  • Slashdot
  • Twitter

Anuncios

  • (03/02/2017) Se han publicado en el tablón físico de la escuela las calificaciones finales correspondientes a la 1ª Convocatoria de la asignatura.

Sobre la Asignatura

Los recursos que se muestran en esta página se corresponden con el material que está planificado para la asignatura de Programación Declarativa que se imparte en el grado de Tecnologías Informáticas de la E.T.S. Ingeniería Informática de la Universidad de Sevilla.

Aunque la asignatura se denomina genéricamente Programación Declarativa, en este curso nos centraremos en una de las dos grandes ramas que componen esta aproximación metodológica de programación, la que se conoce como Programación Funcional. Puedes saber más sobre esta clasificación en esta entrada.

Objetivos

Junto al contenido base de la asignatura, que se centra principalmente en los fundamentos y uso del lenguaje de programación Haskell, ofrecemos un material adicional que tiene como objetivo complementar una línea argumental focalizada en la programación funcional pero con un punto de vista más flexible, ya sea profundizando en algunas de las técnicas que promueve la programación funcional (como la programación reactiva o la programación concurrente), algunas aplicaciones de rabiosa actualidad (como su aplicación a la Ciencia de los Datos), o mostrando otras alternativas al lenguaje Haskell, aunque sin salirnos del paradigma de la programación funcional.

Debe tenerse en cuenta que, precisamente por los objetivos de flexbilidad que se persiguen, lo que puedes encontrar aquí es solo un esbozo del contenido adicional propuesto, pero que podrá ser modificado (en su forma, pero nunca en su fondo) durante la ejecución del curso con el fin de acondicionarlo a las necesidades y prioridades de los participantes.

Ficha Técnica

Grado: Tecnologías Informáticas

Grupo Aula Horario
G1 I2.35 M (8:30 - 10:20) y X (12:40 - 14:30)
G2 I2.33 L (17:40 - 19:30) y X (19:40 - 21:30)

Lugar Tutorías: Despachos H1.46 y H1.48

Sistema de Implementación: Haskell

Profesores: Luis ValenciaFernando Sancho Caparrini

Conv. 1ª | 2ª | 3ª: 02/02/2017 | 15/09/2017 | 01/12/2016

Contenido Base

El material en común que tiene este curso con el resto de cursos similares que se dan en la Universidad es, esencialmente, el aprendizaje del lenguaje de programación Haskell, como referente de la Programación Funcional.

La guía de referencia que usaremos es el libro ¡Aprende Haskell por el bien de todos! (que es la versión española de Learn You a Haskell for Great Good!, un magnífico libro con una versión abierta y completamente pública en la web).

A continuación mostramos parte del contenido que usaremos en las clases y que resume el contenido de la asignatura normal y del libro anterior (se enlaza cada tema con el correspondiente capítulo del libro, así como con dos ficheros de texto, uno que resume brevemente los puntos principales del tema, y otro con ejercicios propuestos a modo de práctica). En la columna de Fecha se muestra el calendario tentativo por semanas (posiblemente se modifique durante la evolución del curso). Como se ha indicado en clase, la idea es que para esa semana el material teórico se traiga preparado y las clases se usan para resolver dudas, profundizar en las partes que puedan resultar más conflictivas, y resolver ejercicios relacionados con el material estudiado:

Tema Res. Ejercicios
Programación Funcional: Una mirada diferente    
¿Se puede liberar la programación del estilo de von Neumann?    
0. Haskell: el Lenguaje Funcional    
1. Introducción a la programación con Haskell (Listas)
2. Tipos y clases (Diagrama)
3. Sintaxis de funciones (Layout)
4. Funciones recursivas
5. Funciones de orden superior (Recursión Ilustrada)
Repaso de los Temas 1 a 5  
Examen 1: 16/11/2016  (Soluciones:)
6. Módulos
7. Declaraciones de tipos y clases. Colección de Tipos de Datos Abstractos
3ª Convocatoria (Diciembre): 01/12/2016  
8. Entrada y Salida
Ejercicios Prácticos de Repaso  
9. Funtores, Funtores Aplicativos y Monoides
(Conceptos Matemáticos y Terminología)
(Explicado con dibujos)
   
10. Algunas mónadas interesantes    
Examen 2: 11/01/2017  (Soluciones:)
1ª Convocatoria (Febrero): 02/02/2017  

Contenido Adicional

Algunas propuestas que se pueden barajar como continuación del material introductorio visto en la sección anterior:

  1. El Olimpo de Haskell: Typeclassopedia. Un punto de partida para el estudiante de Haskell que quiere un terreno firme donde asntar las clases de tipos. En este documento se introduce la esencia de cada clase, con ejemplos, comentarios y bastantes referencias para continuar.
  2. Programación Funcional para la Web: Elm. Un reciente lenguaje de programación primo hermano de Haskell, pero con una orientación web que le hace ocupar uno de los puestos más codiciados de la programación actual, ya que se está convirtiendo en el representante funcional para el desarrollo de aplicaciones web.

Criterios de Evaluación

Se propone un sistema alternativo de evaluación para posibilitar la superación de la asignatura sin tener que realizar un examen final. Esta evaluación consistirá en la realización de dos exámenes parciales a lo largo del cuatrimestre.

En función de la evolución del curso y del contenido adicional, se podrá proponer la realización voluntaria de un trabajo que servirá de nota complementaria a la realización de los exámenes anteriores.

Las calificaciones de las distintas pruebas del curso son publicadas en el siguiente enlace (acceso con contraseña que se ha comunicado en clase):

Recursos