Profesor | Carlos Zerón Martínez | ma ju | 17 a 18:30 | P208 |
Ayudante | Manuel Ignacio Castillo López | lu mi | 16 a 17 | P208 |
Ayud. Lab. | Mario Gama Mora | ju | 14 a 16 | Taller de Sistemas Operativos, Redes de Cómputo, Sistemas Distribuidos y Manejo de Información |
La presentación se efectuará el Lunes 10 de Agosto a las 16:00 horas y el sitio de apoyo al curso puede ser accedido por alumnos inscritos mediante el siguiente enlace:
https://sites.google.com/site/computacionconcurrente/home
Objetivo
Uno de los grandes retos del diseño de aplicaciones y sistemas que involucran la participación de varios procesos, consiste en desarrollar mecanismos de sincronización eficientes entre los procesos para poder resolver problemas, por tanto, el objetivo del curso es el estudio de técnicas para el análisis de problemas y algoritmos que involucran la sincronización de procesos, considerando dos tipos de problemas en general: los que involucran asignación de recursos compartidos a procesos y aquellos que requieren de la coordinación entre los procesos para lograr un fin común. Estas herramientas permiten aplicar los aspectos principales de la computación concurrente en distintos dominios, en particular, relacionados con sistemas operativos y bases de datos.
Contenido del curso
Evaluación
Las tareas consisten de ejercicios para reforzar el material visto en clases o ayudantías, así como resúmenes y trabajos de investigación. Pueden efectuarse a mano o a máquina pero la entrega es impresa. Las tareas pueden presentarse de forma individual o en equipos de hasta dos personas y las fechas de entrega son estrictas, salvo por causas de fuerza mayor que sean comprobables documentalmente.
Los exámenes requieren del reconocimiento y la comprensión de conceptos teóricos, así como del análisis de procesos descritos en pseudocódigo. Se presentan de forma individual y en fecha única, salvo por causas de fuerza mayor que sean comprobables documentalmente.
Las prácticas consisten de la implementación de algoritmos para los problemas estudiados durante el curso, así como de algunas simulaciones. Se utilizará Java como lenguaje de programación base y se introducirá el uso de otros lenguajes con bibliotecas para el soporte de concurrencia. Los lineamientos de entrega de prácticas por correo se definirán en la primera sesión de laboratorio. Las prácticas pueden entregarse de manera individual o en equipos de dos personas y una vez establecida la fecha de entrega, se cuenta con un máximo de cuatro días adicionales para efectuar la entrega, incurriendo en una penalización de dos puntos por día de retraso a partir de la fecha estipulada.
Ocasionalmente se pasará lista en sesiones de clase, ayudantía o de laboratorio. Dependiendo de cómo sea el número de asistencias registradas con respecto al de inasistencias se asignará a cada alumno(a): un incremento de puntuación si el primer número es superior al segundo, un decremento si el primer número es inferior y cero si ambos números son iguales. En particular, si un(a) alumno(a) tiene todas las asistencias, obtendrá un punto adicional sobre la calificación final obtenida y en caso de que no tenga ninguna asistencia registrada, perderá un punto a partir de dicha calificación.
Normas adicionales sobre la evaluación
Se puede presentar la reposición de ejercicios correspondientes a dos tareas, o bien, un examen final, con el cual se renuncia a las calicaciones obtenidas en las tareas y exámenes. En este caso, la evaluación considera los siguientes rubros:
Cada alumno(a) debe entregar la forma de evaluación y las normas adicionales mencionadas firmadas de conformidad a más tardar dos semanas después del día que comienza el semestre, para tener derecho a calificación.
La única forma de que se asigne NP como calicacion a un(a) alumno(a) es que no entregue nada, en particular, la firma de conformidad de la forma de evaluación del curso.
No se puede renunciar a la calificación final.
Referencias
[1] G. Taubenfeld. Synchronization algorithms and concurrent programming. Prentice Hall, 2006.
[2] M. Herlihy y N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008.
[3] N. Lynch. Distributed Algorithms. Morgan Kaufmann, 1996.
[4] H. Attiya y J. Welch Distributed Computing: Fundamentals, Simulations and Advanced Topics. Morgan Kaufmann, 1998.
Aclaraciones sobre las referencias
Usaremos la primer referencia como texto para el curso y de forma complementaria nos apoyaremos en las tres últimas referencias, así como de artículos que en su momento se indicarán.