Aumentar letras   Inicio   Información   Contactar   Mapa
Català   English

Lenguajes de Programación (LP)

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

Profesores

Responsable:  Silvia Inés Clérici Martínez (silvia@lsi.upc.edu)
Otros:Ana Cristina Zoltan Torres (zoltan@lsi.upc.edu)

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

  • GHEZZI, Carlo & YAZAYERI, Mehdi Programming Language Concepts, John Wiley & Sons, 3ª ed., 1998.
  • TUCKER, Allen & NOONAN, Robert LENGUAJES DE PROGRAMACION, Principios y Paradigmas, Mc Graw Hill/Iberoamericana, 2003.
  • BIRD, Richard Introducción a la programación funcional usando Haskell, Prentice-Hall, 2º edición, 1999.
  • RUIZ, B.; GUTIERREZ, F.; GUERRERO, P.; GALLARDO, J. RAZONANDO CON HASKELL. Un curso sobre Programación Funcional, THOMSON Editores Spain, 2004.
  • CLERICI, Silvia Apuntes sobre Programación Funcional, CPET -UPC, .

Bibliografía complementaria

  • PRATT, Terrence , ZELKOWITZ, Marvin PROGRAMMING LANGUAGES. Design and Implementation(4th Edition), PRENTICE HALL, 2001.
  • PIERCE, Benjamin C. Types and Programming Languages, The MIT Press, 2002.
  • ALLISON, Lloyd A practical Introduction to Denotational Semantics , Cambridge Computer. Science Texts, 1986.
  • SLONNEGER, Kenneth & KURTZ, Barry L. Formal Syntax and Semantics of Programming Languages: A Laboratory Based Approach, Addison-Wesley, 1995.

Enlaces web

(Información no introducida)

Capacidades previas

Deberán haber aprobado la asignatura Prap



 
logo FIB © Facultad de Informática de Barcelona - webmaster@fib.upc.edu - RSS RSS