Llenguatges de Programació ( LP )
| Crèdits: |
Departament: |
Tipus: |
Requisits: |
| 7.5 |
LSI |
Optativa per l'EI
|
|
PRED
- Pre-requisit per l' EI
|
|
|
Professors
| Responsable: | Silvia Inés Clérici Martínez (silvia lsi.upc.edu). |
| Altres: | Cristina Zoltan Torres (zoltan lsi.upc.edu). |
Objectius Generals
1. Que los alumnos adquieran las herramientas conceptuales para analizar los lenguajes de programación
-según el modelo subyacente (diferentes classes 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.
Objectius Específics
Coneixements
(Informació no introduïda)
Habilitats
(Informació no introduïda)
Competències
(Informació no introduïda)
Continguts
Hores estimades de:
| T |
P |
L |
Alt |
L Ext. |
Est |
A Ext. |
| Teoria |
Problemes |
Laboratori |
Altres activitats |
Laboratori extern |
Estudi |
Altres hores fora d'horari fixat |
|
1. Clases de Lenguajes
|
| T |
P |
L |
Alt |
L Ext |
Est |
A 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 |
A 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 por 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. Soluciones en redes de procesos comunicantes
(streams). Definición de listas por comprension (esquema generador/filtro).
- Laboratori:
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.
- Activitats de laboratori addicionals:
horas adicionales dedicadas a la codificacion y puesta a punto de los ejercicios y de la práctica.
|
|
3. Fundamentos
|
| T |
P |
L |
Alt |
L Ext |
Est |
A 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 |
A 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 |
A 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. En 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. Ambito y visibilidad. Compartición de datos. Formas de paso de parámetros.
|
| - Total per tipus |
T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 28,0 |
28,0 |
14,0 |
0 |
14,0 |
59,0 |
0 |
143,0 |
- Hores addicionals dedicades a l'avaluació:
|
7,0 |
- Total hores de treball per l'estudiant |
150,0 |
|
Metodologia docent
Habrán clases de teoría y problemas ( en promedio 4 horas semanales), y clases de laboratorio (1 hora en promedio).
Las clases de laboratorio comenzarán en la 8ª semana. Consistirán en la implementación de los ejercicios que se resuelvan
en clase de problemas y en la realización de una práctica que se resolverá en grupos preferentemente de 3 alumnos.
Mètode d'avaluació
Habrán dos exámenes y una práctica obligatoria con un 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 30% y el final 55%.
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 complementària
- 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.
Enllaços web
(Informació no introduïda)
Capacitats prèvies
Deberán haber aprobado la asignatura Programación II
|