Download 1 - Universidad de Alcalá

Document related concepts

Programación funcional wikipedia, lookup

Oz (lenguaje de programación) wikipedia, lookup

Philip Wadler wikipedia, lookup

Ocaml wikipedia, lookup

Erik Meijer wikipedia, lookup

Transcript
1. TITULACIÓN
Ingeniero Técnico en Informática de Sistemas
2. NOMBRE DE LA ASIGNATURA
Programación Avanzada
3. CÓDIGO DE LA ASIGNATURA
30384
4. CARÁCTER
Obligatoria
5. CURSO
segundo
6. PERIODO
Segundo Cuatrimestre
7. Nº DE CRÉDITOS
4,5 (3 Teóricos + 1,5 Prácticos)
8. DEPARTAMENTO
Ciencias de la Computación
9. ÁREA DE CONOCIMIENTO (*)
Lenguajes y Sistemas Informáticos
Ciencias de la Computación e Inteligencia
Artificial
(*) Si la asignatura se imparte desde más de un Área de Conocimiento de manera compartida, indíquese
posteriormente el número de créditos de cada tipo impartidos desde cada Área.
10. PROFESORADO
Responsable/s de la materia
Resto del profesorado
Personal colaborador
11. HORARIO
Teoría
Práctica
12. LUGAR DE IMPARTICIÓN
Teoría
Práctica
13. OBJETIVOS DOCENTES DE LA ASIGNATURA
Con esta asignatura se pretende que el alumno conozca otros paradigmas de
programación diferentes de la programación secuencial imperativa utilizada en las
asignaturas cursadas anteriormente.
Se estudiarán con detalle la programación funcional y la programación paralela.
Se realizarán ejercicios que permitan ilustrar las características más relevantes de estos
paradigmas.
Se presentará la programación de tiempo real.
Se describirán otras técnicas de programación.
14. CONTENIDO (PROGRAMA)
Parte Teórica
GRUPO TEMÁTICO 1: Introducción. (2 horas)
TEMA 0.- CONCEPTOS BASICOS.
Paradigmas de programación. Programación imperativa. Programación secuencial.
Programación Lógica. Programación Funcional. Programación paralela: concurrente y
distribuida. Programación de sistemas en tiempo real.
GRUPO TEMÁTICO 2: PROGRAMACION FUNCIONAL. (21 horas)
TEMA 2.- INTRODUCCION A LA PROGRAMACION FUNCIONAL.
Fundamentos matemáticos. Funciones. Concepto. Operaciones. Aplicación de
funciones. Funciones parciales. Lenguajes de Programación Funcional.
Tipos básicos. Tipos definidos por el programador. Constructores. Tipos recursivos.
Listas. Arboles. Tipos polimórficos. Operaciones. Definición de funciones. Funciones
recursivas.
TEMA 3.- CONCEPTOS AVANZADOS DE PROGRAMACIÓN FUNCINAL
Funciones en dominio, Currificación. Funciones polimórficas. Definiciones locales.
Ficheros. Metodología de diseño de programas funcionales. Complejidad.
GRUPO TEMÁTICO 3: PROGRAMACION PARALELA.(20 horas)
TEMA 4.- INTRODUCCION A LA PROGRAMACION PARALELA.
Concepto de paralelismo. Procesos paralelos. Comunicación y Sincronización entre
procesos. Tipos de paralelismo: Programación Concurrente. Programación Distribuida.
Lenguajes. Sistemas Informáticos Paralelos.
TEMA 5.- PROGRAMACION CONCURRENTE.
Variables Compartidas. Exclusión mutua. Algoritmo de Dekker. Semáforos.
Deadlock. Regiones Críticas. Monitores. Programación de Sistemas en tiempo real.
Lenguajes de programación concurrente.
TEMA 6.- PROGRAMACION DISTRIBUIDA.
Intercambio de mensajes. Comunicación síncrona y asíncrona. Rendez-vous.
Canales. Llamadas a procedimientos remotos. Lenguajes de programación distribuida.
GRUPO TEMÁTICO 4: OTRAS TÉCNICAS DE PROGRAMACIÓN. (2 horas)
TEMA 7.- INTRODUCCION A LA PROGRAMACION DE TIEMPO REAL.
TEMA 8.- OTRAS TÉCNICAS AVANZADAS DE PROGRAMACIÓN.
Parte Práctica
15. BIBLIOGRAFÍA
Bibliografía Básica
GUTIERREZ, JOSE MARIA. 2005. Paradigmas de la programación. Universidad de
Alcalá.
BEN-ARI, M. 1990. Principles of Concurrent and Distributed Programming. Ed.
Prentice-Hall.
DELGADO, C. 1992. Programación Funcional y Definición de Lenguajes de
Programación. Ed. DIT, Universidad Politécnica de Madrid.
PEREZ, J.E. 1990. Programación Concurrente. Ed. Rueda.
Bibliografía Complementaria
ANDRREWS, G. Concurrent Programming. Principles and Practice. Ed. Benjamin
Cummings, 1991.
BIRD, R. Introduction to Functional Programming. Ed. Prentice-Hall, 1988.
FREEMAN, T.L. & PHILLIPS, C. Parallel Numerical Algorithms. Ed. Prentice-Hall,
1992.
16. CONOCIMIENTOS PREVIOS RECOMENDADOS
En su caso:
- Debe haber cursado las asignaturas de fundamentos, metodología y tecnología de la
programación. Sin ellas, no estará en condiciones de cursar la asignatura.
- Conocimientos que debería poseer el alumno de su formación anterior. Por ejemplo de
bachillerato.
17. METODOLOGÍA DE IMPARTICIÓN
Parte Teórica
Metodología de clase magistral combinada con resolución de problemas y casos.
Los recursos didácticos utilizados serán: pizarra, proyector de transparencias e Intranet
de materias.
Parte Práctica
Ídem.
18. MÉTODOS Y CRITERIOS DE EVALUACIÓN
Parte Teórica
El método de evaluación es la prueba escrita. Con un valor del 100%. Este método es el
único viable dado el elevado número de alumnos por grupo.
Parte Práctica
Related documents