Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico Matemáticas y Naturales
Departamento: Informatica
Área: Area IV: Pr. y Met. de Des. del Soft.
(Programa del año 2011)
(Programa en trámite de aprobación)
(Programa presentado el 08/06/2011 19:29:40)
I - Oferta Académica
Materia Carrera Plan Año Periodo
(OPTATIVAS) PROGRAMACION FUNCIONAL EN HASKELL-APLICACIONES LIC.CS.COMP. 18/11 2011 1° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
NECCO, CLAUDIA MONICA Prof. Responsable P.Adj Exc 40 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total B - Teoria con prácticas de aula y laboratorio Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
7 Hs.  Hs.  Hs.  Hs. 7 Hs. 1º Cuatrimestre 16/03/2011 24/06/2011 14 100
IV - Fundamentación
En la actualidad están empezando a usarse cada vez más el paradigma de la programación declarativa para aplicaciones y proyectos a gran escala, no es difícil encontrar entornos empresariales reales donde los lenguajes declarativos se utilizan para resolver problemas.
La programación declarativa consta de dos grandes bloques temáticos, la programación funcional y la programación lógica, podemos encontrar código escrito usando programación lógica y/o funcional en entornos tan dispares como aplicaciones de bases de datos de comercio electrónico, herramientas de gestión financieras, software de predicción económica, sistemas de control de semáforos, herramientas de parseado, aplicaciones de planificación (existen por ejemplo exitosas aplicaciones en planificación para la asignación de personal de aerolíneas a vuelos comerciales escritas en el lenguaje funcional Haskell),
desarrollo de intérpretes de comandos y de lenguajes de guiones (componentes que aparecen en multitud de aplicaciones
empresariales propietarias de gran tamaño), aplicaciones de inteligencia artificial, sistemas de procesamiento de lenguaje
natural, etc.
Es importante proporcionar al alumno de informática formación en diferentes paradigmas de programación, que le proporcionen habilidades distintas a las desarrolladas en el contexto de los paradigmas más convencionales de programación procedural/orientada a objetos.
V - Objetivos / Resultados de Aprendizaje
Los objetivos de esta asignatura son:

- Profundizar en los fundamentos del paradigma de la Programación Declarativa, en particular en los principios y técnicas de la programación funcional.

- Presentar el lenguaje funcional Haskell, un estándar hoy en día en la comunidad educativa para la enseñanza de la Programación Funcional, así como en la investigación de otros conceptos y formalismos.

- Dar una visión al alumno de un paradigma de programación distinto de los que conoce, que implica una forma de resolver problemas diferente y constituye además un complemento de su formación, profundizando las técnicas estudiadas en la asignatura "Programación II".

- Presentar algunos usos y aplicaciones actuales del paradigma en diferentes líneas, tales como: cálculo de programas, ingeniería reversa, programación genérica.
VI - Contenidos
Tema 1. Introducción y semántica operacional
El paradigma de la Programación Funcional. El lenguaje Haskell. La notación Currificada. Definición de funciones.
Sesiones y declaraciones. Reducción de expresiones. Evaluación Perezosa.

Tema 2. Lenguaje Haskell: Tipos de Datos
Tipos simples predefinidos. Constructores de tipo predefinidos. Definiciones de tipos. Sinónimos de tipo. Definiciones de tipos de datos. Tipos polimórficos. Listas. Listas por comprensión.

Tema 3. Lenguaje Haskell: Funciones
Patrones y Definiciones de Funciones. Expresiones condicionales. Funciones por casos. Expresiones case. Definiciones locales. Operadores. Bibliotecas. Funciones de orden superior. Expresiones lambda. Aplicación parcial. Funciones de plegado.

Tema 4. Lenguaje Haskell: Polimorfismo
Funciones Polimórficas

Tema 5. Lenguaje Haskell: El sistema de clases
Funciones Sobrecargadas. Algunas Clases e Instancias predefinidas. Instancias paramétricas. Derivación de instancias. Tipos sobrecargados: Contextos.

Tema 6. Aplicaciones
Lectura de publicaciones, estudio, presentación y discusión sobre diferentes aplicaciones.

VII - Plan de Trabajos Prácticos
1) desarrollo prácticos de aula y de laboratorio en lenguaje Haskell correspondientes a los temas: Tipos de Datos, funciones, polimorfismo y sistema de clases.

2) Busqueda en Internet de publicaciones sobre aplicaciones actuales del paradigma. Elección, analisis y presentación individual de una publicación, que debe incluir una evaluación personal y posterior discusión de la misma en el contexto de su aplicabilidad, eficiencia, etc. Discusión grupal de aplicaciones del paradigma.
VIII - Regimen de Aprobación
Acerca del dictado de la Materia:

Las clases tendrán la modalidad teórico-práctica.

Acerca de la regularización de la materia:

El alumno debe:
1- Tener como mínimo un 70% de asistencia a las clases teórico-prácticas.
3- Desarrollo y entrega de un trabajo práctico propuesto por la cátedra, que integrará los conocimientos adquiridos, el cuál será evaluado.
4- Confección de un informe sobre alguna aplicación actual del paradigma, el cuál deberá ser expuesto ante sus pares. Esta presentación debe incluir una evaluación personal y posterior discusión de la aplicación en el contexto de su aplicabilidad, eficiencia, etc. Se evaluará informe y la presentación.


Acerca de la aprobación de la materia:

Por promoción: Si la nota obtenida en el trabajo práctico y el informe (puntos 3 y 4) es mayor o igual a 7.
Por examen regular: Si el alumno regularizó la materia, puede acceder a un examen regular el cual puede ser oral o escrito y versará sobre los temas del programa.

Dadas las características de la materia y la importancia de los desarrollos prácticos, no se permiten alumnos libres.
IX - Bibliografía Básica
[1] Razonando con Haskell. Un curso sobre programación funcional. Blas Ruiz, Francisco Gutiérrez, Pablo Guerrero y José Gallardo. Thomson, 2004. (http://www.lcc.uma.es/RazonandoConHaskell)
[2] Introduction to Functional Programming using Haskell. Richard Bird. Prentice Hall, 1998.
[3] Una Introducción Agradable a Haskell, José Gallardo, Paco Gutiérrez y Blas Ruiz, Dpto. de Lenguajes y Ciencias de la Computación, Universidad de Málaga, (Traducción de: A Gentle Introduction to Haskell Version 98, Paul Hudak -Yale University, John Peterson -Yale University, Joseph Fasel -Los Alamos National Laboratory, Junio, 2000). http://www.lcc.uma.es/~pepeg/pfHaskell/gentle/
X - Bibliografia Complementaria
[1] The Haskell School of Expression. Learning Functional Programming through multimedia. Paul Hudak. Cambridge University Press, 2000.
[2] Haskell. The Craft of Functional Programming. Simon Thompson. Addison-Wesley, 1999.
XI - Resumen de Objetivos
- Profundizaje del paradigma de la Programación Funcional.

- Presentación del lenguaje funcional Haskell

- Análisis de aplicaciones actuales del paradigma.
XII - Resumen del Programa
El paradigma de la Programación Funcional.

El lenguaje Haskell.

Aplicaciones y usos actuales del Paradigma.
XIII - Imprevistos
 
XIV - Otros