Saltar al contingut Menu
Mapa
  • Inicio
  • Información
  • Contacto
  • Mapa

Lenguajes de Programación (LP)

Créditos Dept. Tipo Requisitos
7.5 (6.0 ECTS) CS
  • Optativa para la EI
PRED - Prerequisito para la EI

Profesores

Responsable:  (-)
Otros:(-)

Objectivos Generales

1. Que los estudiantes adquieran las herramientas conceptuales para analizar los lenguajes de programación según el modelo subyacente (diferentes clases o paradigmas), según sus componentes fundamentales (sistema de tipos, modelo de ejecución, abstracciones de datos y de procesos), según su adecuación al tipo de aplicación, envergadura y metodología de desarrollo. 2. Que conozcan los fundamentos teóricos básicos de los LP y su definición formal, y en especial los fundamentos del paradigma funcional. 3. Que adquieran una experiencia básica en la programación con lenguajes funcionales del tipo de Miranda o Haskell.

Objectivos Específicos

Conocimientos

(Información no introducida)

Habilidades

(Información no introducida)

Competencias

(Información no introducida)

Contenidos

Horas estimadas de:

T P L Alt L Ext. Est O. Ext.
Teoria Problemas Laboratorio Otras actividades Laboratorio externo Estudio Otras horas fuera del horario fijado

1. Clases de Lenguajes
T      P      L      Alt    L Ext. Est    O. Ext. Total 
3,0 2,0 0 0 0 3,0 0 8,0
Evolución histórica de los Lenguajes de Programación. Caracterización de los principales paradigmas de Programación.

El modelo de ejecución en cada uno de ellos. Características deseables en un LP. Criterios de diseño.

2. Lenguajes Funcionales
T      P      L      Alt    L Ext. Est    O. Ext. Total 
6,0 13,0 14,0 0 14,0 19,0 0 66,0
Componentes de un sistema de programación funcional. Evolución del paradigma. Características de los LF actuales:

Uso intensivo del orden superior. Curryficación. Definición ecuacional mediante patrones. Tipos algebraicos y tipos abstractos.

Polimorfismo. Deducción de tipos. Evaluación perezosa. Técnicas de programación de orden superior en un lenguaje funcional con evaluación perezosa (Miranda o Haskell). Programación con objetos infinitos. Solucionas en redes de procesos comunicantes (streams). Definición de listas por comprensión (esquema generador/filtro).





  • Laboratorio:
    Se ha considerado como actividad de laboratorio las cuestiones relativas a la implementación en el lenguaje de programación (Miranda o Haskell) de los ejercicios de la colección de problemas y la práctica. Parte de esta actividad se realizará en el aula y una parte frente al terminal.

  • Actividades de laboratorio adicionales:
    Horas adicionales dedicadas a la codificación y puesta a punto de los ejercicios y de la práctica.

3. Fundamentos
T      P      L      Alt    L Ext. Est    O. Ext. Total 
5,0 5,0 0 0 0 15,0 0 25,0
Lambda cálculo. Estrategias de reducción. Orden normal y aplicativo. El problema de las definiciones recursivas.

Introducción a la Teoría de dominios. Teorema del Punto fijo. Introducción a la teoría de tipos. Sistemas de inferencia de tipos.

4. Definición formal de Lenguajes de Programación
T      P      L      Alt    L Ext. Est    O. Ext. Total 
5,0 5,0 0 0 0 15,0 0 25,0
Elementos sintácticos. Sintaxis concreta y abstracta. Los distintos enfoques semánticos y su aplicación. El enfoque denotacional.

Definición semántica de un lenguaje imperativo mínimo. Equivalencia semántica de programas. Semántica de otras clases de lenguajes.

5. Componentes fundamentales de los LP
T      P      L      Alt    L Ext. Est    O. Ext. Total 
9,0 3,0 0 0 0 7,0 0 19,0
- El sistema de tipos. Evolución del concepto de tipo. Mecanismos de definición de tipos. Tipos algebraicos. Genericidad y polimorfismo. Polimorfismo paramétrico y de inclusión. Subtipos y subclases. Formas de herencia. Jerarquías. Comprobación estática y dinámica de tipos. Inferencia de tipos.

- El control de secuencia. A nivel de expresiones. instrucciones. Entre unidades de programa. Procedimientos. Corrutinas. Procesos concurrentes. Manejadores de excepciones. El control de secuencia en los distintos paradigmas.

- El control de datos. Asociación entre identificadores y objetos. Sobrecarga. Aliasing. Resolución estática y dinámica de vínculos. Ámbito y visibilidad. Compartición de datos. Formas de paso de parámetros.


Total por tipo T      P      L      Alt    L Ext. Est    O. Ext. Total 
28,0 28,0 14,0 0 14,0 59,0 0 143,0
Horas adicionales dedicadas a la evaluación 7,0
Total horas de trabajo para el estudiante 150,0

Metodología docente

Habrá clases de teoría y problemas (en promedio 4 horas semanales), y clases de laboratorio (1 hora en promedio).Las clases de laboratorio se dedicarán a la implementación de los ejercicios que se resuelvan en clase de problemas y a la realización de una práctica que se resolverá en grupos preferentemente de 3 alumnos.

Método de evaluación

Habrá dos exámenes y una práctica obligatoria con uno peso del 15%.El examen parcial libera materia si la nota no es inferior a 4. En ese caso la nota final se calcula como la media ponderada de las tres notas, donde el parcial tiene un peso del 40% y el final 45%.

Si la nota del parcial es inferior a 4, el examen final incluirá ambas partes de la asignatura y tendrá un peso del 85%.

Bibliografía básica

  • Carlo Ghezzi, Mehdi Jazayeri Programming language concepts, John Wiley and Sons, 1998.
  • Allen B. Tucker, Robert Noonan Lenguajes de programación : principios y paradigmas, McGraw-Hill, 2003.
  • Richard Bird Introducción a la programación funcional con Haskell, Prentice Hall, 2000.
  • Blas Carlos Ruiz Jiménez ... [et al.] Razonando con Haskell : un curso sobre programación funcional, Thomson-Paraninfo, 2004.
  • CLERICI, Silvia Apuntes sobre Programación Funcional, CPET -UPC, .

Bibliografía complementaria

  • Terrence W. Pratt, Marvin V. Zelkowitz Programming languages : design and implementation, Prentice-Hall, 2001.
  • Benjamin C. Pierce Types and programming languages, MIT Press, 2002.
  • Lloyd Allison A Practical introduction to denotational semantics, Cambridge University Press, 1986.
  • Kenneth Slonneger, Barry L. Kurtz Formal syntax and semantics of programming languages : a laboratory based approach, Addison-Wesley Pub. Co., 1995.

Enlaces web

(Información no introducida)

Capacidades previas

Deberán haber aprobado la asignatura Prap


Compartir

 
logo FIB © Facultad de Informática de Barcelona - Contacto - RSS
Esta web utiliza cookies propias para ofrecerle una mejor experiencia y servicio. Si continúa la navegación, entendemos que acepta nuestra política de cookies. Versión clássica Versión móvil