Presentación
Contenidos
1. Profesorado y web
- Antonio Corbi. DLSI.
- Despacho: Politécnica-IV, segunda planta
- Tutorías: UA-Cloud o presenciales (con reserva previa desde UA-Cloud).
- La asignatura dispone de página web propia: https://www.dlsi.ua.es/asignaturas/pc.
2. Contexto
2.1. Tipo
- Optativa para Grado en Ingeniería Informática (especialidad de Ingeniería de Computadores).
- (No presencial) Optativa para titulaciones Plan 2001: II, ITIS, ITIG.
2.2. Créditos
- 6 presenciales (3 teoría + 3 prácticas)
- 15 sesiones de teoría (1 semanal durante un cuatrimestre) de 2 h cada una.
- 15 sesiones prácticas (1 semanal durante un cuatrimestre) de 2 h cada una.
3. Horarios
- Teoría: Martes 15:00-17:00
- Prácticas: Martes 17:00-19:00
4. Evaluación
- La asignatura consta de dos bloques:
- Teoría
- Prácticas.
- Cada uno de ellos tiene un peso del 50% en la nota final.
4.1. Evaluación de la teoría
- Elegir uno de los dos tipos de evaluación:
- Evaluación continua :
- Asistencia al 80% de las sesiones de teoría.
- Realizar las actividades requeridas.
- Evaluación final :
- Examen de teoría el día asignado por la Universidad.
- Para promediar teoría y prácticas es necesario obtener como mínimo un 4 en ambos bloques.
4.2. Evaluación de las prácticas
- Elegir uno de los dos tipos de evaluación:
- Evaluación continua :
- Asistencia al 80% de las prácticas.
- Entrega del código y la memoria de los ejercicios prácticos realizados en clase a la semana siguiente de la sesión correspondiente.
- Evaluación final :
- Examen de prácticas en la última sesión de prácticas con el ordenador.
- Entrega, ése mismo día, del código y la memoria de los ejercicios prácticos realizados en casa.
- Para promediar teoría y prácticas es necesario obtener como mínimo un 4 en ambos bloques.
4.3. Segundo período de evaluación
- Solo se llevará a cabo una evaluación final.
4.4. Sistema de evaluación que se aplicará en la convocatoria de diciembre
- Se realizará un examen de teoría y uno de prácticas.
- Para promediar teoría y prácticas es necesario obtener como mínimo un 4 en ambos bloques.
4.5. Actividades evaluables de teoría
- Asistencia obligatoria como mínimo al 80% de las sesiones (12 sesiones).
- Presentaciones durante el mes de diciembre de uno de los trabajos propuestos.
- Se debe elegir el trabajo y el día de presentación.
- Las presentaciones se realizarán individualmente y tendrán una duración de 10 minutos.
- Se debe entregar la presentación en formato digital (preferiblemente en PDF). Las entregas se realizan siempre en (y sólo en) http://pracdlsi.dlsi.ua.es en las fechas allí publicadas. Puedes entregar tantas veces como quieras, sólo se corregirá la última entrega.
- Reparto Notas Teoría:
- Presentación: 3.5 puntos máximo.
- Trabajos semanales: 1.5 puntos máximo. Estos trabajos se corresponden con preguntas que encontrareis en los temas de teoría y se entregan adjuntos a una tutoria hasta una semana después de finalizado el tema correspondiente.
4.6. Actividades evaluables de prácticas
- Las prácticas consistirán en 12 sesiones obligatorias propuestas en UA-Cloud. Además, se puede realizar una práctica opcional propuesta para subir nota.
- Las entregas se realizan siempre en (y sólo en) http://pracdlsi.dlsi.ua.es en las fechas allí publicadas. Puedes entregar tantas veces como quieras, sólo se corregirá la última entrega.
- Estas entregas constarán del código fuente y de un documento (PDF) que será la "Memoria de la Práctica".
- Las prácticas serán individuales.
- Reparto de las notas de prácticas:
- Asistencia al 80% sesiones prácticas: 1 punto
- Memoria Prácticas: 3.5 puntos max.
- Practica opcional: 0.5 puntos max.
5. Temario
5.1. Tema 1: Conceptos fundamentales
- Concepto de Programación Concurrente
- Beneficios de la Programación Concurrente
- Concurrencia y arquitecturas hardware
- Especificación de ejecución concurrente
- Características de los sistemas concurrentes
- Problemas inherentes a la programación concurrente
5.2. Tema 2: Procesos vs. hilos
- Procesos
- Procesos en Unix/C
- Hilos
- Hilos en Java y en Unix/C
5.3. Tema 3: Primeras aproximaciones al problema de la programación concurrente
- Tipos de sincronización y su solución
- La espera ocupada para exclusión mutua
- Algoritmos de Dekker, Peterson, Hyman, Eisenberg-McGuire y Lamport
5.4. Tema 4: Semáforos
- Definición
- Resolución de problemas usando semáforos
- Implementación de semáforos
- Inconvenientes de los semáforos
5.5. Tema 5: Sincronización con Java
- Exclusión mutua en Java
- Sincronización en Java
- Uso de synchronized
- Resolución de problemas clásicos
- Semáforos binario y general
5.6. Tema 6: Monitores
- Comparativa entre Semáforos y Monitores
- Concepto y Funcionamiento
- Sincronización con monitores
- Implementación de monitores en Posix
6. Bibliografía
- Principios y algoritmos de concurrencia: Ricardo Galli. Ebook. 2015
- Programación concurrente: José Tomás Palma Méndez y otros. Editorial Thomson. Ed. 2003
- UNIX, programación avanzada: Francisco M. Márquez, Editorial Ra-Ma, 2004
- UNIX, programación práctica. Guía para la Concurrencia, la Comunicación y los Multihilos: Kay A. Robbins, Steven Robbins. Editorial Prentice Hall Hispanoamericana, 1997.
7. Consejos
La asignatura no es difícil pero sí tiene muchos conceptos nuevos; estudia día a día.
Para que te sirva como referencia… por cada hora de clase deberías dedicarle alrededor de hora y media de estudio en casa.
- Dispondréis con suficiente antelación de las transparencias empleadas en clase de teoría para facilitaros el seguimiento de las mismas.