Fichas de asignaturas 2009-10
![]() |
PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA |
![]() ![]() |
|
Asignatura |
![]() |
| |
Profesorado |
![]() |
| |
Situación |
![]() |
| |
Competencias |
![]() |
| |
Objetivos |
![]() |
| |
Programa |
![]() |
| |
Actividades |
![]() |
| |
Metodología |
![]() |
| |
Distribucion |
![]() |
| |
Técnicas Docentes |
![]() |
| |
Evaluación |
![]() |
| |
Recursos Bibliográficos |
![]() |
Código | Nombre | |||
Asignatura | 1710034 | PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA | Créditos Teóricos | 2,5 |
Descriptor | CONCURRENT AND DISTRIBUTED PROGRAMMING | Créditos Prácticos | 2,5 | |
Titulación | 1710 | INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN | Tipo | Optativa |
Departamento | C137 | LENGUAJES Y SISTEMAS INFORMATICOS | ||
Curso | ||||
Duración (A: Anual, 1Q/2Q) | 2Q | |||
Créditos ECTS | 4 |
Para el curso | Créditos superados frente a presentados | Créditos superados frente a matriculados |
2007-08 | 100.0% | 67.7% |
Pulse aquí si desea visionar el fichero referente al cronograma sobre el número de horas de los estudiantes.
Profesorado
Antonio Tomeu Hardasmal (coordinador)
Situación
Prerrequisitos
La asignatura es completamente autocontenida, y en consecuencia, el conjunto de prerrequisitos necesarios para cursarla con garantías es mínimo. Consideramos aconsejable que el alumno haya cursado y superado las asignaturas Introducción a la Programación y Metología de la Programación, e igualmente Sistemas Operativos. Es también aconsejable tener nociones básicas de orientación a objetos.
Contexto dentro de la titulación
Optativa de Tercer curso.
Recomendaciones
Se hacen al alumno las siguientes recomendaciones: 1) Más vale un mal libro que muchos buenos apuntes: por tanto, para cada tema concreto del curso se le propondrán como material de revisión/trabajo/estudio un mínimo de dos y un máximo de cuatro capítulos de referencias concretas (en inglés, claro está). También se le proporcionarán unos apuntes (en castellano), que como mucho debería usar como material de apoyo, pero nunca como texto base. 2) La copia de apuntes en clase ES UNA PÉRDIDA DE TIEMPO: por tanto, como profesor haré lo posible para que no tenga que copiar apuntes en clase, proporcionándole en la página de la asignatura con carácter previo a su explicación todo el material necesario para la preparación de la misma. En consecuencia, si copia apuntes, es porque es usted un copiador compulsivo; pero sepa que distraen su atención y suelen ser fuente de errores en el estudio posterior, ya que lo que se copia mal se estudia peor. 3) Una clase comienza antes de ser explicada y continua tras ser explicada: o lo que es lo mismo, llegar a clase a ver qué nos cuenta hoy este buen señor es un error. La mecánica de trabajo que les recomiendo a lo largo del curso para preparar una clase debe seguir las siguientes fases: 1. Lectura y revisión previa de los materiales indicados en el cronograma del curso para esa clase en concreto. Dicho cronograma estará disponible en la página virtual del curso cuando comience este. En él se establecerá la fecha (aproximada) donde se impartirá cada tópico del temario oficial, el material de lectura para esa clase en concreto, los problemas recomendados para ejercitar los contenidos teóricos explicados, y en ocasiones alguna tarea adicional de interés. 2. Asistencia a clase. Dado que no necesita tomar apuntes, preste atención a los desarrollos y explicaciones del profesor, y relaciónelos con lo previamente leído por usted. Tome notas de la dudas o discrepancias que le surjan, para su posterior discusión en la propia clase o en una tutoría individualizada. 3. Tras la clase, repase los contenidos de la misma, entiéndalos y aclare con el profesor los conceptos que no estén claros. Póngalos en práctica con los problemas de la relación que corresponda, y conéctelos con los contenidos a desarrollar en la próxima clase. Es decir, GO TO apartado 1. 3) Una asignatura NO se prepara en una semana. NO deje la preparación del mismo para los últimos días. Probablemente será inútil. Pida ayuda a su profesor para planificar el tiempo y su preparación de cara al examen final con antelación. Si no lo hace, el único perjudicado será usted. 5) Saber una asignatura NO es saber unos apuntes. Unos apuntes son, probablemente y en el mejor de los casos, un resumen de lo explicado por el profesor en clase, lo cual a su vez será un resumen de lo revisado por el profesor en la bibliografía específica. Por tanto, olvide aquello de "me sé los apuntes pero me han suspendido", o "esto no estaba en los apuntes, sino en tal libro" o "este problema no se parece a ninguno que hayamos hecho en clase". Si usted SABE la materia, estará preparado para aplicarla a situaciones nuevas y desconocidas. Y ello pasa por haber manejado bibliografía tal y cómo se indica en el criterio 1. Saber los apuntes es una condición necesaria para aprobar, pero no suficiente. Por tanto, si usted sabe sus apuntes, NO SABE la materia. Y recuerde que SABER no es MEMORIZAR. 6) La revisión de calificaciones NO es una subasta. La directriz que debe motivarle a solicitar y revisar sus calificaciones es saber DÓNDE, CÓMO Y POR QUÉ ha fallado, y PLANIFICAR con su profesor la fase posterior de estudio orientada a subsanar esos fallos. Por tanto, por favor, no acuda a revisión con la intención de discutir sobre: 1. Los criterios de corrección, ya que estos los define su profesor, y no es ni puede ser algo sujeto a negociación. 2. La distribución de la puntuación entre los diferentes enunciados de los ejercicios del examen, ya que su profesor sabe qué es más importante que usted haya aprendido, y cómo evaluar ese aprendizaje, y ajustará esa distribución en consecuencia. El que considere que esa distribución le perjudica es un error, ya que habrá sido aplicada por igual a sus compañeros, y además lo que hará será demostrar que no tiene claros aquellos conceptos que son más relevantes. 3. Lo parecido o distinto de los ejercicios del examen a los realizados en clase. (Ver principio 5) Un examen no tiene por qué parecerse a lo ya ejercitado. Los ejercicios de clase le CAPACITAN para dominar los conceptos. Los exámenes DEMUESTRAN que usted sabe aplicar esos conceptos aprendidos a situaciones novedosas o simplemente diferentes a las estudiadas. 4. La verificación de si determinado ejercicio estaba o no en sus apuntes (Ver principio 5) 5. La simple pataleta por no haber superado la asignatura. No entienda un suspenso más que con la siguiente lectura: el trabajo realizado ha sido válido, pero no suficiente. Debe trabajar más. Cualquier otra interpretación por su parte es un error (Ver principio 10) 7) Procure estar informado. Visite con asiduidad la sección de noticias del web de la asignatura y en caso de duda consulte por e-mail a su profesor. No utilice argumentos de "no sabía nada..." o "no me he enterado de que.." para excusar un fallo. Recuerde que ES su obligación y su responsabilidad estar enterado. 8) Utilice la tutoría. Es el único medio por el cual el profesor puede ofrecerle una enseñanza de carácter individualizado. Por tanto, aproveche la tutoría, en sus versiones presencial, electrónica, o vía el foro de la asignatura. Y hágalo con frecuencia: siga el método descrito en el principio 3 y visite a su profesor cada vez que tenga dudas. Con carácter ordinario, un mínimo de una visita al profesor cada tres semanas debería ser normal para usted. Si hay dificultades, tan a menudo como necesite. 9) NO se quede con una duda. Es muy habitual entre nuestros alumnos que cuando les surge una duda se queden con ella hasta el mismo momento del examen. Luego, durante la revisión reconocen: "sí, esto no me quedó claro, pero..." EVITE estos comportamientos. En una asignatura como esta, el progreso con garantías hacia nuevos contenidos implica haber asimilado correctamente los contenidos previos. 10) El profesor es su juez, NO es su verdugo. Mi labor en el momento de evaluarle se limitará a juzgar la cantidad y calidad del esfuerzo realizado por usted. Cualquier otro aspecto es irrelevante. 11) Participe en clase. Plantee sus dudas, y fomente la discusión entre sus compañeros y con el profesor. Ello contribuirá de forma positiva a su evaluación continua, y hará la dinámica académica más rica. Además, contribuirá positivamente a su crecimiento personal. 12. Sea consciente de sus derechos como alumno, pero también de las obligaciones que el serlo conlleva.
Competencias
Competencias transversales/genéricas
- Análisis y síntesis de contenidos técnicos - Lectura comprensiva y escritura comprensible - Determinación del ámbito de la solución de un problema - Elección del nivel de abstracción de solución de un problema - Capacidad de planificación temporal de tareas - Elaboración de juicios críticos sobre contenidos - Capacidad de elaborar documentación técnicamente correcta
Competencias específicas
Cognitivas(Saber):
-Conocer el léxico estándar habitualmente utilizado en concurrencia. -Identificar la presencia de la concurrencia en un problema dado. -Protocolos básicos para el control de la concurrencia -Diseñar soluciones multihebradas -Diseñar soluciones distribuidas
Procedimentales/Instrumentales(Saber hacer):
-Redactar documentos de contenido técnico de acuerdo a una normas de redacción específicas y con unos estándares mínimos de calidad. -Programar en lenguaje java con una competencia razonable -Utilizar el compilador JCreator y las herramientas proporcionadas por el Java Development Standard Kit como herramientas básicas de desarrollo. -Implantar programas en java que utilicen múltiples hilos de ejecución. -Sincronizar y controlar programas java en exclusión mutua de varios hilos en ejecución. -Comunicar objetos java situados en máquinas diferentes mediante el uso de sockets en java. -Escribir código java para aplicaciones distribuidas simples utilizando como tecnología de soporte java/rmi con un dominio razonable de sus herramientas: rmiregistry, policytool y rmic. -
Actitudinales:
-Autoaprendizaje e independencia de criterio. -Conciencia crítica sobre el trabajo propio bien hecho. -Conciencia de la necesidad del esfuerzo y el trabajo personal como medio de lograr los objetivos fijados. -Conciencia de la necesidad de cumplir en tiempmo y forma con plazos prefijados, normas de redacción y entrega de productos, etc. -Conciencia de la necesidad de cumplir con las obligaciones en materia de asistencia a clase, trabajo personal, rendimiento y espíritu universitario que la legislación universitaria actualmente en vigor impone a sus alumnos.
Objetivos
La asignatura, teniendo en cuenta los alumnos a los que va dirigida, creemos que debe tener como objetivo entrar en los conceptos fundamentales que soportan los modelos de programación concurrente y distribuido, más allá del nivel del simple paradigma teórico de programación. Cabe plantear por tanto los siguientes objetivos con carácter muy general: a)Aprender con una profundidad y amplitud razonables el lenguaje de programación Java, con especial énfasis en los aspectos del lenguaje ligados a la concurrencia, y en los mecanismos de sincronización y control de entidades concurrentes que incorpora. b)Conocer los problemas planteados por que el hecho de que haya múltiples tareas en ejecución concurrente en un sistema, compitiendo por recursos compartidos, desde una perspectiva de memoria común y distribuida. c)Conocer las distintas soluciones que pueden darse a estos problemas, con diferentes grados de abstracción, introduciendo una visión de verificación formal. d)Aprender los modelos de programación distribuida desde un enfoque netamente práctico a nivel de sockets yde RMI y de modelos de objetos distribuidos utilizando el lenguaje Java como soporte.
Programa
Tema 1: Introducción a la Programación Concurrente y Distribuida (2 horas) 1.1 Concepto de Programación Concurrente. 1.1.1 Concepto de proceso y programa concurrente. 1.1.2 Definición de Programación Concurrente. 1.1.3 Justificación de la Programación Concurrente. 1.1.4 Modelo abstracto de Programación Concurrente. 1.1.5.1 Atomicidad y entrelazado de instrucciones. 1.1.5.2 Independencia del entorno de ejecución. 1.1.5.3 Irrepetibilidad de la secuencia de instrucciones. 1.1.5.4 Velocidad de ejecución: hipótesis de progreso finito. 1.2 Sincronización y Exclusión Mutua. 1.2.1 Notaciones para expresar la concurrencia. 1.2.1.1 Creación estática. 1.2.1.2 Creación dinámica. 1.2.1.3 El mecanismo fork-join. 1.2.1.4 La sentencia cobegin-coend. 1.2.1.5 Hilos Concurrentes. 1.2.2 Exclusión Mutua. 1.2.2.1 Los sistemas con memoria común y su problemática. 1.2.2.2 Necesidad de la exclusión mutua. 1.2.3 Sincronización. 1.3 Propiedades de corrección de los sistemas concurrentes. 1.3.1 Corrección Parcial. 1.3.2 Corrección Total. 1.3.3 Condiciones de Corrección de Djikstra. 1.4 Arquitecturas hardware para la Concurrencia. Tema 2: Fundamentos de Java para la Concurrencia (8 horas) 2.1. La Plataforma J2SE. 2.1.1 Unicode. Bytecodes. Java Virtual Machine. Compilación JIT. 2.1.2 Herramientas: javac, java, javadoc, appletviewer, rmic, rmiregistry, policytool, idlj, orbd, tnameserv 2.2 Fundamentos de Java 2.2.1 Estructura de un programa en Java. Ejemplos. 2.2.2 Clases, Campos y Métodos. 2.2.3 Instrucciones. 2.2.4 Estructuras Iterativas. 2.2.5 Estructuras Selectivas. 2.2.6 Tipos de Datos y Declaraciones. Clases de Envoltura. 2.2.7 Operadores y Expresiones. 2.2.8 E/S de carácter. 2.2.9 La unidad de biblioteca: paquetes. 2.2.10 Generando documentación: javadoc. 2.3. Clases y Orientación a Objetos. 2.3.1 Abstracción y Encapsulación de Datos. 2.3.2 Arrays y Cadenas de Caracteres. 2.3.3 Llamada a Métodos y paso de Argumentos. 2.3.4 E/S básica en Java. 2.3.5 Manejo básico de error. Excepciones. Jerarquía de Excepciones. 2.3.6 Modelo de Herencia en Java. 2.3.7 Breves notas sobre sobreescritura, sobrecarga y ligadura dinámica. 2.3.8 Interfaces. Implementación de interfaces. 2.4. Construcciones en Java. Clases Contenedoras. 2.4.1 Construcción avanzada de clases. Ejemplos. 2.4.2 Conversiones de tipo. 2.4.3 Construcción de un TDA lista circular. 2.4.4 Construcción de un TDA lista enlazada. 2.4.5 Asignación y gestión de almacenamiento. 2.5.6 Clases contenedoras de Interés: AbstractMap, ArrayList, Vector, Stack, HashMap, Collection y otras. Tema 3: Programación Concurrente en Java (6 horas) 3.1 Revisión del concepto de Hilo. Hilos en Java. 3 .2 Programación con hilos: creación y control. 3.2.1 Creación por Herencia de la clase Thread. 3.2.2 Creación por Implementación de la interfaz Runnable. 3.2.3Control de Hilos: run(), start(), join(), interrupt(), stop (), suspend(), sleep(). 3.3 Exclusión mutua entre hilos: métodos e instrucciones synchronized. 3.4 Sincronización: la clase Object: métodos wait(), notify() y notifyAll(). 3.5 Protocolos de la Concurrencia en Java. 3.5.1 Diseño de una clase semáforo. 3.5.2 Protocolo de Exclusión Mutua. 3.5.2 Protocolo de Sincronización. 3.5.3 Protocolo de Barrera Simple y Múltiple. 3.5.4 Protocolo del Productor-Consumidor. 3.6 Terminación de hilos. 3.7 E/S entre hilos. 3.8 Implementación de Monitores en Java. 3.8.1 Revisión del Concepto de Monitor. 3.8.2 Esquema General: sintaxis y semántica. 3.8.3 Ausencia de Var. de Condición. Condiciones de Guarda. El wait-set. 3.8.4 Uso correcto de los métodos wait() y notifyAll(). 3.8.5 Una técnica de diseño de monitores en Java. Tema 4: Programación Distribuida (6 horas) 4.1 Conceptos de Programación Distribuida 4.2 Mecanismos de Programación Distribuida 4.2.1 Remote Procedure Call. 4.2.2 Breve repaso de Conceptos. 4.2.3 Programación Distribuida de Bajo Nivel: sockets 4.2..4.0 Concepto de sockets 4.2.4.1 Introducción a los sockets en Java. 4.1.1 La clase ServerSocket. 4.2.4.1.2 La clase Socket. 4.3 Programación Distribuida con RMI en Java 4.3.1 Comparación de RMI con RPC. 4.3.2 Interfaces Remotas. Precompilador rmic. 4.3.3 Arquitectura de RMI: Stubs y Skeletons. 4.3.4 Generando resguardos: rmic. 4.3.5 Registro del servicio: rmiregistry. 4.3.6 Uso del Objeto Remoto. 4.3.7 Marshalling de objetos: la interfaz Serializable. 4.3.8 Seguridad: policytool. Tema 5: Introducción a la Programación de Dispositivos Móviles (2 horas) 5.1 Programación Java en telefonía móvil y PDA: J2ME. 5.1.1 Arquitectura de J2ME. 5.1.2 Máquina virtuales ligeras: CVM y KVM. 5.1.3 Configuraciones y Perfiles. 5.2 Concepto de MIDLET. 5.2.1 Ciclo de vida de un MIDLET. 5.2.2 API para programación de MIDLETS. 5.3 Configuraciones y Perfiles de interés en telefonía móvil desde J2ME. 5.3.1 CLDC y su API. 5.3.2 MIDP 2.0 y su API. 5.4 Aspectos Prácticos. 5.4.1 El Wireless Tool Kit. 5.4.2 Presentación del código de un MIDLET. 5.4.3 Compilación. 5.4.3.1 Compilación. 5.4.3.2 Preverificación. 5.4.3.3 Enpaquetamiento. 5.4.3.4 KToolBar en WTK. Tema 6: Introducción a la Programación Paralela (1 hora) 6.1 Modelos de Máquinas Paralelas. 6.2 Modelos de Programación Paralelos. 6.3 Métodos de programación. 6.3.1 Partición de datos. 6.3.2 Partición de funciones. 6.4 PVM (Parallel Virtual Machine). 6.5 jPVM (Java Parallel Virtual Machine).
Metodología
El desarrollo de los contenidos teóricos se llevará a cabo mediante clases teóricas, con el apoyo de medios (proyector de transparencias o cañón de proyección) cuando sea necesario. En temas concretos se insistirá en el uso de una metodología formal con el objeto de transmitir al alumno la idea de que toda solución debe probarse correcta antes de ser implementada. Los contenidos prácticos irán precedidos de introducciones en la propia aula de prácticas, donde el profesor dará a los alumnos el soporte de programación necesario para abordar los casos prácticos con garantías. Los códigos objeto de análisis podrán ser descargados por el alumnos desde el web de la asignatura y compilados. Posteriormente, deberán desarrollar el código que de solución a los casos prácticos bajo ciertas especificaciones que se harán públicas a lo largo del curso.
Distribución de horas de trabajo del alumno/a
Nº de Horas (indicar total): 100
- Clases Teóricas: 25
- Clases Prácticas: 25
- Exposiciones y Seminarios:
- Tutorías Especializadas (presenciales o virtuales):
- Colectivas:
- Individules:
- Realización de Actividades Académicas Dirigidas:
- Con presencia del profesorado:
- Sin presencia del profesorado:
- Otro Trabajo Personal Autónomo:
- Horas de estudio: 48
- Preparación de Trabajo Personal:
- ...
- Realización de Exámenes:
- Examen escrito: 2
- Exámenes orales (control del Trabajo Personal):
Técnicas Docentes
|
Criterios y Sistemas de Evaluación
A) DE LOS EXÁMENES TEÓRICOS ESCRITOS, MEMORIAS DE PROBLEMAS Ó TEORÍA Y SIMILARES -Se calificarán de cero a diez puntos. Se obtiene Aprobado con una calificación igual o superior a cinco puntos. -Cada enunciado incluirá la calificación que se le atribuye entre corchetes. -Una pregunta teórica o problema se considera correcto únicamente si la solución que se proporciona es completamente correcta. En otro caso se considera incorrecta. -Una pregunta teórica o problema de múltiples apartados se considera correcto si todos los apartados que lo conforman son correctos. En cualquier otro caso es incorrecto y no puntúa. B) DEL EXAMEN PRÁCTICO Y DE LAS ASIGNACIONES DE PRÁCTICAS -Se realizará en ordenador. -El examen práctico se calificará con APTO O NO APTO. Se obtiene APTO cuando al menos el 50% de los enunciados del examen son correctos. -Las condiciones que una solución a un enunciado de examen debe cumplir para ser considerada correcta son: a) Los ficheros subidos a través del Campus Virtual que conforman el examen práctico se ajustan al número, formato y nomenclatura de nombres explicitados por el profesor en el documento de examen. b)El contenido de los ficheros es el especificado por el profesor en el documento de examen. c)Para ficheros elaborados con JFLAP (en su caso), se pueden abrir y procesar con el software citado, y realizan un procesamiento técnicamente correcto, según el enunciado de que se trate. d)Para ficheros elaborados en lenguaje java (en su caso), la compilación y ejecución son correctas, y el procesamiento es técnicamente correcto, según el enunciado de que se trate. SISTEMAS Y TÉCNICAS DE EVALUACIÓN Se aplicará el sistema de evaluación continua de los alumnos por defecto. Los alumnos que por motivos personales o laborales renuncien al mismo podrán acogerse a la prueba final, pero deberán comunicar por escrito al profesor su renuncia al sistema de evaluación continua. Siendo la asignatura del segundo cuatrimestre, este modelo se aplicará exclusivamente durante su periodo lectivo. En convocatorias posteriores (Septiembre, Febrero) el alumno deberá concurrir a los exámenes teórico y práctico de la asignatura con el temario completo. La evaluación continua constará de los siguientes apartados: a) Asistencia y participación, objetivables mediante aportaciones al foro, glosario o wiki de la asignatura. Hasta 4 puntos. b) Memoría de Teoría: El alumno desarrollará una memoria de teoría de acuerdo a las especificaciones que se harán públicas a lo largo del curso. Hasta 6 puntos. c) Asignaciones de Prácticas: semanal o bisemanalmente se propondrá al alumno una asignación práctica, compuesta de un conjunto de enunciados a resolver mediante el lenguaje java. El alumno desarrollará el código que dé solución a la asignación, de acuerdo a las especificaciones hechas públicas por el profesor en el documento correspondiente, y subirá los ficheros resultantes a través del campus virtual. Cada asignación se calificará con APTO o NO APTO. Se obtiene APTO global en prácticas si se han entregado todas las asignaciones, superándose al menos el 60% de las mismas. La calificación por evaluación continua será suma de las calificaciones obtenidas en los apartados a) y b), siempre que se haya obtenido APTO en el apartado c) Aquellos alumnos que superen la parta teórica y no la práctica o al contrario, podrán concurrir a los exámenes ordinarios de la convocatoria de Junio y superar la parte pendiente. La evaluación ordinaria constará de un examen teórico por escrito y otro práctico sobre computador y la calificación se obtendrá por aplicación de la siguiente ecuación: CALIFICACIÓN = (0.4*CT)+(0.6*CP) siendo CT la nota del examenes teórico y CP la calificación del examen práctico.
Recursos Bibliográficos
RECURSOS BIBLIOGRAFICOS BÁSICOS [Arn01] Arnold, K., Gosling, J. & Holmes, D. El Lenguaje de Programación Java. Addison-Wesley, 2001. [Ben90] Ben-Ari, M. Principles of Concurrent and Distributed Programming. Prentice-Hall,1990. [Bre95] Breshears, C. A Beginner?s Guide to PVM-Parallel Virtual Machine. Publicación electrónica del Joint Institute for Computational Science, 1995. [Col94] Coulouris, G., Dollimore, J. and Kindberg, T. Distributed Systems. Concept and Design. 2nd ed., Addison-Wesley, 1994. [Eck00] Eckel, B. Piensa en Java. Prentice Hall, 2002. [Hil00] Hilderink, G., Broenink, J., Bakkers, A. & Schaller, N. Communicating Threads for Java. Draft, disponible en formato electrónico en: http://www.ce.utwente.nl/javapp/downloads/CTJ_A4.pdf [Hoa85] Hoare. C.A.R. Communicating Sequential Processes. Prentice-Hall, 1985. [Lea01] Lea, Doug. Programación Concurrente en Java. Addison-Wesley, 2001. [Mul93] Mullender, S (ed.) Distributed Systems, Second Edition. Addison- Wesley, 1993. [Mur89] Murata, T Petri Nets: Properties, Analysis and Applications. Proceedings IEEE vol. 77, no. 4. April, 1989. [Orf02] Orfali, R., Harkey, D. & Edwards, J. Cliente/Servidor y Objetos. Guía de Supervivencia. Oxford University Press, 2002. [Orf98] Orfali, R. & Harkey, D. Client/Server Programming with Java and Corba John Wiley and Sons, Inc. 1998. [Pal03] Palma, J.T y otros. Programación Concurrente. Thompson Editores, 2003. [Per90] Pérez, J.E. Programación Concurrente. Editorial Rueda, 1990. [Pri03] Prieto, Manuel J. Curso de J2ME. Disponible en formato electrónico. 2003. [Rif92] Rifflet, J.M. Comunicaciones en Unix. McGraw-Hill, 1992. [Rob96] Robbins, K. & Robbins, S. Practical Unix Programming: A Guide to Concurrency, Communication and Multithreading. Prentice Hall, 1996. [Sun03] Sun mycrosystems. Wireless Tool Kit, Version 2.1. Java 2 Platfom Micro Edition. Sun Mycrosystems, 2003. Disponible en http://java.sun.com [Tan93] Tanenbaum, A.S. Sistemas Operativos Modernos. Prentice-Hall, 1993. [Vin97] Vinoski, S. CORBA: Integrating Diverse Applications Within Distributed Heterogeneus Environments. IEEE Communications Magazine, Vol. 35, No 2, February 1997. [Wan00] Wang, P. Java. International Thompson Editores, 2000. RECURSOS BIBLIOGRAFICOS DE CONSULTA [And91] Andrews, G.R. Concurrent Programming : Principles and Practice. Benjamin-Cummings, 1991. [Arm96] Armstrong, J., Virding, R., Wiksröm, C. and Williams. M. Concurrent Programming in Erlang. Prentice-Hall, 1996. [Bac93] Bacon, J. Concurrent Systems: an integrated approach to operating systems, database, and distributed systems. Addison-Wesley, 1993. [Bak96] Baker, L. and Bardley, J. Parallel Programming. McGraw-Hill, 1996. [Bar96] Barbosa, V.C. An Introduction to Distributed Algorithms. The Mit Press, Scientific and Engineering Computation Series, 1996. [Bir84] Birrell, A.D. and Nelson, B.J. Implementing remote procedure calls. ACM Trans. on Computer Systems, 2 (1), 88-95, 1984. [Bur93] Burns, A. Concurrent Programming. Addison-Wesley, 1993. [Fos95] Foster, I. Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Addison-Wesley, 1995. [Geh88] Gehani, N. and McGettrick, A. Concurrent Programming. Addison-Wesley, 1988. [Gos91] Goscink, A. Distributed Operating Systems: the Logical Design. Addison- Wesley, 1991. [Hin95] Hinchey, M. Concurrent Systems: formal development in CSP. McGraw- Hill, 1995. [Hul94] Hulle, M., Crookes, D. and Sweeney, P. Parallel Processing: The Transputer and Its Applications. Addison-Wesley, 1994. [Kle96] Kleiman, S., Shah, D. and Smaalders, B. Programming with Threads. Prentice-Hall, 1996. [Lan93] Langsford, A. and Moffett, J. Distributed Systems Management. Addison- Wesley, 1993. [Lew96] Lewis, B. and Berg, D. J. Threads Primer : A Guide to Mutithread Programming. Prentice-Hall, 1996. [Man88] Mani, K and Jadayev, M. Parallel Programming Design : a foundation. Addison-Wesley, 1988. [Mil94] Milner, R. Communication and Concurrency. Prentice-Hall, 1994. [Shu97] Shuey, R. and Spooner, D. The Arquitcture of Distributed Computer Systems. Addison-Wesley, 1997. [Sno92] Snow, C. R. Concurrent Programming. Cambridge University Press, 1992. [Wil95] Wilson, G. V Practical Parallel Programming. The Mit Press, Scientifica and Engineering Computation Series, 1995. [Wil96] Wilson, G.V. and Lu, P. Parallel Programming Using C++. The Mit Press, Scientific and Engineering Computation Series, 1996.
El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente. En aplicación de la Ley 3/2007, de 22 de marzo, para la igualdad efectiva de mujeres y hombres, así como la Ley 12/2007, de 26 de noviembre, para la promoción de la igualdad de género en Andalucía, toda alusión a personas o colectivos incluida en este documento estará haciendo referencia al género gramatical neutro, incluyendo por lo tanto la posibilidad de referirse tanto a mujeres como a hombres.