PROGRAMA DE ESTUDIO Programa Educativo: Área de Formación : Licenciatura en Ciencias Computacionales Integral profesional Programa elaborado por: Programación Distribuida Horas teóricas: 1 Horas prácticas: 4 Total de Horas: 5 Total de créditos: 6 Clave: F1339 Tipo : Asignatura Carácter de la Optativa asignatura Academia de Ciencias Computacionales Fecha de elaboración: Agosto de 2004 Fecha de última actualización: Julio de 2010 Seriación explícita Asignatura antecedente No Asignatura Subsecuente Seriación implícita Conocimientos previos: Si Programación y estructuras de datos F1339 Programación distribuida Página 1 de 5
Presentación El uso de los Sistemas Distribuidos es cada vez más generalizado. Existe un sinfín de aplicaciones de cómputo y de informática que operan sobre estos sistemas; desde las aplicaciones cliente-servidor, las aplicaciones WEB y el software de comunicación personal, hasta las aplicaciones de cómputo intensivo implementadas sobre arquitecturas paralelas distribuidas. El desarrollo de aplicaciones distribuidas involucra una amplia gama de habilidades cognitivas articuladas, entre las que destaca: la interconexión de redes de computadoras, el software de conectividad (middleware), la seguridad, las tecnologías y herramientas de programación y los algoritmos distribuidos. El presente curso de Programación de Aplicaciones Distribuidas hace énfasis en los fundamentos algorítmicos que permiten resolver los problemas propios de la ejecución procesos concurrentes-distribuidos, abordando también, el uso de las herramientas tecnológicas necesarias para desarrollar software distribuido. Objetivo General El alumno estudiará los fundamentos de los sistemas distribuidos, analizando los problemas relacionados con la ejecución distribuida de procesos, así como las técnicas y algoritmos para resolver dichos problemas. Competencias que se desarrollaran en esta asignatura Desarrollo de soluciones computacionales (algoritmos y programas) a los problemas característicos de la computación distribuida, aplicándolas a problemas del mundo real. Competencias del perfil de egreso que apoya esta asignatura Diseño de algoritmos computacionales avanzados. Programación en diferentes paradigmas, lenguajes y plataformas. Redes de computadoras. Laboratorio de cómputo y salón de clases Escenario de aprendizaje F1339 Programación distribuida Página 2 de 5
Perfil sugerido del docente Licenciatura o postgrado relacionado con la computación con un dominio amplio de la programación y los algoritmos concurrentes y distribuidos. Contenido Temático 1 Introducción a la programación distribuida Comprenderá los conceptos y paradigmas de la computación distribuida e implementará programas distribuidos sencillos Hrs. Estimadas 25 1. Conceptos básicos de sistemas distribuidos 2. Características de los sistemas distribuidos 3. Conceptos básicos de redes 4. Paradigmas de cómputo distribuido. 5. Ejemplos de programas distribuidos usando Sockets Explica las características, estructura y funcionamiento de los sistemas distribuidos, y escribe programas distribuidos simples, utilizando diversos lenguajes y sobre diferentes plataformas. Se recomienda proporcionar ejemplos de programas concurrentes, utilizando diversos lenguajes (Java, C, C++) sobre diferentes plataformas (Unix, MacOS, Windows) usando sockets TCP. explicar las características, estructura y funcionamiento de los sistemas distribuidos, y escribir programas distribuidos sencillos en los lenguajes y plataformas sugeridos por el profesor. F1339 Programación distribuida Página 3 de 5
2 Tecnologías para programación distribuida Conocerá diferentes tecnologías para la implementación de programas distribuidos, y las utilizará en el desarrollo aplicaciones distribuidas sencillas Hrs. Estimadas 25 Escribe aplicaciones distribuidas sencillas, de escribir aplicaciones utilizando diversos lenguajes distribuidas sencillas, y paradigmas de utilizando los lenguajes, comunicación, sobre paradigmas y plataformas diferentes plataformas. sugeridos por el profesor. 1. Comunicación mediante Sockets 2. Invocación remota de procedimientos (RPC) 3. Objetos distribuidos (RMI) 4. Interface para paso de mensajes (MPI) Se recomienda proporcionar ejemplos para cada uno de los mecanismos o tecnologías IPC, utilizando diversos lenguajes (Java, C, C++) sobre diferentes plataformas (Unix, MacOS, Windows). 3 Algoritmos distribuidos Implementará soluciones algorítmicas y programas que resuelvan los problemas característicos de la computación distribuida Hrs. Estimadas 30 F1339 Programación distribuida Página 4 de 5
1. Sincronización y estados globales 2. Coordinación y acuerdos 3. Transacciones 4. Replicación Resuelve correctamente los problemas básicos de la computación distribuida, y escribir programas que implementen dichas soluciones. Se recomienda plantear, a través de ejemplos didácticos, los problemas típicos de la computación distribuida, y luego discutir algunas alternativas de solución, antes de abordar el estudio formal de los algoritmos establecidos. de resolver algorítmicamente los problemas básicos de la computación distribuida, y escribir los programas que implementen dichas soluciones. Bibliografía básica 1. Liu, M. L. (2004). Computación distribuida: Fundamentos y aplicaciones. Madrid: Addison Wesley 2. Coulouris, G. Dollimore, J. & Kindberg, T. Sistemas distribuidos: Conceptos y diseño (3ª Ed.). Madrid: Addison Wesley 3. De Rodríguez, L. (2007). Introducción a la computación paralela con MPI. Vigo: Universidad de Vigo 4. Quinn, M. J. (2004). Parallel programming in c with MPI and open MP. USA: McGraw-Hill 5. Caballé, S. & Xhafa, F. (2007). Aplicaciones distribuidas en Java con tecnología RMI. Madrid: Delta publicaciones 6. Birnam, S. (2002). Java 2 distribuido. Madrid: Prentice Hall 7. Matthew, N., Stones, R. (2008). Programación Linux/ Linux Programming. Madrid: Anaya Multimedia 8. Márquez, F. (2005). Unix: Programación Avanzada. España: Alfaomega 9. Wall, K. et. al. (2001). Programación en Linux. (2ª Ed.). Madrid: Prentice Hall 10. Calvert, K. & Donahoo, M. (2008). TCP/IP Sockets in Java: Practical Guide for Programmers. (2a Ed.). USA: Morgan Kaufmann Bibliografía complementaria 1. Burns, A. & Davies, G. (1993). Concurrent Programming. USA: Addison Wesley 2. Andrews, G. R.(2000). Foundations of Multithreaded, Parallel, and Distributed Programming.USA: Addison-Wesley 3. Hartley, S. J. (1998). Concurrent Programming: The Java Programming Language. USA: Oxford University Press F1339 Programación distribuida Página 5 de 5