1.
UNIVERSIDAD DE GUADALAJARA
CENTRO UNIVERSITARIO DE LOS ALTOS
DIVISIÓN DE ESTUDIOS EN FORMACIONES SOCIALES
LICENCIATURA:
INGENIERÍA EN COMPUTACIÓN
UNIDAD DE APRENDIZAJE POR OBJETIVOS
TALLER DE PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA
LIC. ABRAHAM ANDRADE LÓPEZ DR. ROGELIO MARTÍNEZ CÁRDENAS
Presidente de la Academia de Sistemas Digitales y de Jefe del Departamento de Estudios Organizacionales
Información
2. TALLER DE PROGRAMACIÓN CONCURRENTE
NOMBRE DE LA ASIGNATURA
Y DISTRIBUIDA
CODIGO DE LA MATERIA CC414
DEPARTAMENTO ESTUDIOS ORGANIZACIONALES
ÁREA DE FORMACIÓN OPTATIVA ABIERTA
CENTRO UNIVERSITARIO CENTRO UNIVERSITARIO DE LOS ALTOS
CARGA HORARIA TEORÍA 0
CARGA HORARIA PRÁCTICA 60
CARGA HORARIA TOTAL 60
CRÉDITOS 4
TIPO DE CURSO PRÁCTICO
NIVEL DE FORMACIÓN PROFESIONAL LICENCIATURA
LICENCIATURA EN INGENIERÍA EN
PARTICIPANTES
COMPUTACIÓN
ELABORÓ SISTEMAS DIGITALES Y DE INFORMACIÓN
PRERREQUISITOS NINGUNO
FECHA DE ACTUALIZACIÓN SEPTIEMBRE DE 2011
3.
OBJETIVO GENERAL
El alumno será capaz de programar sistemas concurrentes y distribuidos.
OBJETIVOS ESPECÍFICOS
En cada módulo del contenido temático principal.
4. CONTENIDO TEMÁTICO
Módulo 1: Introducción a la programación de hilos
Objetivo particular: El alumno implementará programas numéricos y de prueba
de rendimiento para sistemas multicore con rutinas c/c++ o cualquier otro lenguaje
que soporte programación hilos
1.1 Conceptos básicos de hilos
1.1.1 Compilador mingw
1.1.2 Librerías posix de hilos
1.1.3 Creación y terminación de hilos posix
1.1.4 Programación de serie fibonnaci con hilos posix
1.2 Programación de hilos en Win32
1.2.1 La API Win32 para hilos
1.2.2 Creación y terminación de hilos en Win32
1.2.3 Sección crítica en Win32
1.2.4 Comparación de rendimiento
1.3 Programación de hilos en Java
1.3.1 El ambiente NetBeans
1.3.2 El profiler de NetBeans
1.3.3 La Clase thread
1.3.4 La interfaz runnable
1.3.5 Ejecución de instrucciones
1.4 Comparación de rendimientos
1.4.1 Planteamiento del banco de pruebas
1.4.2 Cronometraje de hilos
Módulo 2: Programación concurrente
Objetivo particular: El alumno podrá implementar soluciones locales a problemas
de concurrencia con el paradigma orientado a objetos
2.1 Programación de Mutex en Java
2.1.1 La clase Object
2.1.2 Método synchronized
2.1.3 Método wai y notify
2.1.4 Algoritmo paralelo para el promedio de elementos en vectores
compartidos
2.2 Filtrado de señales y la clase Barrier
2.2.1 El patrón de singleton
2.2.2 La clase barrier
2.2.3 Elementos básicos de filtros digitales
2.2.4 Programación de filtros con Java
5.
2.3 Aplicación del semáforo el problema de control de 1er Orden
2.3.1 Semáforo de tipo posix
2.3.2 Modelo de control de llenado de cisterna
2.3.3 El productor-consumidor en control
2.3.4 Programación del control de cisterna con semáforo tipos posix en Java
2.4 Patrones factory y adaptador
2.4.1 Interfaz, clase abstracta y adaptador
2.4.2 Subclase de factory
2.4.3 Despachador de filas y columnas
2.4.4 Multiplicación matricial con hilos
Módulo 3: Programación distribuida
Objetivo particular: El alumno podrá implementar en Java una solución
distribuida
3.1 Introducción a los sistemas distribuidos
3.1.1 El socket TCP y UDP
3.1.2 La tubería sobre el socket
3.1.3 Hilos cliente
3.1.4 Hilos servidor
3.1.5 Punto de re-entrada
3.1.6 Multiplicación matricial distribuida
3.2 Creación de un servicio web con RMI
3.2.1 La interfaz RMI Remote
3.2.2 El servidor RMI
3.2.3 El cliente RMI
3.2.4 El problema 3 en raya distribuido
3.2.5 La cuenta bancaria distribuida
3.2.6 Paint cooperativo distribuido
3.3 Creación de un servicio web con JSP/Serverlets
3.3.1 El contenedor de servicio web
3.3.2 Soluciones JSP
3.3.3 Soluciones con serverlets
3.3.4 El minero distribuido
3.3.5 El vecindario
Módulo 4: Programación distribuida con agentes
Objetivo particular: El alumno implementará un sistema distribuido en midleware
que resuelve el problema de acceso a recursos distribuidos compartidos.
6.
4.1 Los replicantes
4.1.1 Introducción a los replicantes
4.1.2 Similitudes con el objeto ORB de Corba
4.1.3 Solución Corba
4.1.4 Solución con agente replicante
4.2 Proyecto de red con auto organización
4.2.1 El acuerdo bizantino
4.2.2 Nodos core nodos espejo
4.2.3 Cámara web compartida
4.2.4 Reconocimiento de primitivos gráficos distribuidos
8.
BIBLIOGRAFÍA BÁSICA
Tanenbaum, A.S. (2008). Sistemas distribuidos : principios y paradigmas. México.
Pearson Educación.
Ceballos, F. J. (2006). Java 2, Curso de programación. México: Alfaomega, Ra-
Ma.
Deitel, H. M., & Deitel, P. J. (2004). Cómo programar en Java. México: Pearson
Educación.
BIBLIOGRAFÍA COMPLEMENTARIA
García Tomás, J., Ferrando, S., & Piattini, M. (2001). Redes para procesos
distribuidos. México: Alfaomega Ra-Ma.
Orfali, R., & Harkey, D. (1998). Client/Server Programming with Java and CORBA.
USA: Wiley.
MODALIDADES DEL PROCESO ENSEÑANZA APRENDIZAJE
Para la realización de este curso, se recomienda que el profesor asesore y
supervise personalmente el proceso de formación de cada alumno, tomando en
cuenta el orden y la profundidad con la que deben tratarse los temas del
programa de estudio.
CONOCIMIENTOS, APTITUDES Y VALORES QUE EL ALUMNO DEBE
ADQUIRIR CON BASE AL DESARROLLO DE LA UNIDAD
Conocimiento de la estructura de la computadora y compresión de su
funcionalidad. Así como los elementos que entorno a un equipo de cómputo
pueden manejarse.
CAMPO DE APLICACIÓN PROFESIONAL
Los conceptos básicos ayudan a tener un panorama más amplio y a saber
cuándo o en qué contexto podemos emplear cada uno de ellos dando
oportunidad de desempeñarse en diversas áreas.
MATERIAL DE APOYO ACADÉMICO
• Notas sobre el curso
• Videos sobre los principales conceptos
• Programas educativos para computadoras
• Uso de plataforma Moodle
9. • Presentaciones PowerPoint
MODALIDADES DE EVALUACIÓN
CRITERIOS
• Examen departamental 20 %
• Exámenes parciales 40 %
• Producto de investigación, tareas y participación en moodle 20 %
• Proyecto de final 20 %
PERFIL DOCENTE
El docente de esta materia deberá ser un profesionista con formación en las
áreas de la computación, comunicaciones o informática; capaz de motivar a la
investigación y creación de conocimiento, con habilidades para transmitir sus
conocimientos y enseñar de forma interactiva propiciando en los alumnos el auto-
aprendizaje.