Usted está aquí: Inicio web asignaturas

 

Fichas de asignaturas 2010-11


PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA

Asignaturas
 

  Código Nombre    
Asignatura 1711045 PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA Créditos Teóricos 2,5
Descriptor   PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA Créditos Prácticos 2,5
Titulación 1711 INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS 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% 90.5%

 

 

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, aunque no imprescindible,
tener
nociones básicas de
orientación a objetos.

Contexto dentro de la titulación

Optativa de Tercer curso. Proprorciona al alumno el bagaje de
conocimientos
necesarios para el desarrollo de aplicaciones multihebradas así como
el diseño
de solucione distribuidas bajo los paradigmas cliente-servidor y
comunicación
entre pares.

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,
el
profesor hará lo posible para que el alumno 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. Preparación previa al desarrollo de la clase, de acuerdo a la hoja
de
trabajo personal del alumno que con carácter semana se hará pública en
la
página virtual del curso cuando comience éste. En ella se establecerá
la fecha
(aproximada) donde se impartirá cada tópico de la clase a tratar, 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, vaya al apartado 1.

3) Una asignatura NO se prepara en una semana. NO deje la preparación
de la
misma 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
- Capacidad de manejar documentación técnica en idioma inglés.

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.
    -Conocer los 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 udp y tcp 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:

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.
d)Aprender elementos de los modelos de programación distribuida desde un
enfoque netamente práctico a nivel de sockets y de 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).

Actividades

Teóricas: clases con exposición de contenidos, reforzados por ejercicios
inmediatos de complejidad baja, y puesta en común de las soluciones por
los
alumnos del grupo.
Prácticas: desarrollo de asignaciones de prácticas con carácter semanal
donde
el alumno aplicar los conceptos sobre un conjuntos de ejercicios, a
entregar, y
que sirven para un seguimiento continuo del rendimiento del estudiante.

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

Sesiones académicas teóricas:Si   Exposición y debate:Si   Tutorías especializadas:No  
Sesiones académicas Prácticas:Si   Visitas y excursiones:No   Controles de lecturas obligatorias:No  

Criterios y Sistemas de Evaluación

A) DE LOS EXÁMENES TEÓRICOS ESCRITOS
-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) DE LAS MEMORIAS DE TEORÍA Y PROBLEMAS O SIMILARES (EN SU CASO)
-Deberán estar redactadas de acuerdo a las normas de redacción que el
profesor
determine.
-Deberán ser entregas en el plazo y bajo el procedimiento que el profesor
determine.
-Los enunciados que se recojan deberán estar bien resueltos si son
problemas, y
describir con corrección el objeto de estudio si de una memoria de teoría
se
trata.
C) 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 o ejercicio de
una
asignación práctica 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 o asignación.
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

A) EVALUACIÓN CONTINUA
Se aplicará el sistema de evaluación continua de los alumnos por defecto,
siempre que el número de alumnos lo haga vible. 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 parte 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.

B) EVALUACIÓN ORDINARIA

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.