Curs 2010-2011

ARQUITECTURA E INGENIERÍA DE COMPUTADORES II (12462)

Titulación / Estudios: Ingeniería en Informática / Estudios de informática
Curso: 3r
Periodo: 2º trimestre
Número de créditos ECTS: 3,4 créditos
Número total de horas de dedicación: 90 horas
Lengua de docencia: Castellano y Catalán



1. PRESENTACIÓN DE LA ASIGNATURA

 

La asignatura tiene como principal objetivo estudiar los sistemas distribuidos, en particular el desarrollo de servicios distribuidos que cada vez son más importantes por el número de ordenadores involucrados en la implementación de algunas aplicaciones. Al final de la asignatura, los estudiantes serán capaces de:
 - Implementar programas que permitan la comunicación entre múltiples procesos.
 - Diseñar e implementar aplicaciones concurrentes.
 - Implementar servidores (software) para sistemas distribuidos.

Las actividades de aprendizaje se han dividido fundamentalmente en función de su tipología en varias categorías:
 - sesiones de teoría: los profesores presentan una serie de conceptos y técnicas, además de ejemplos de su utilización. Los estudiantes deberán repasar fuera del aula los apuntes y sus notas para acabar de asimilar los contenidos.
 - sesiones de seminario: los estudiantes deben resolver una serie de ejercicios, poniendo en práctica los conceptos y técnicas presentados en las sesiones de teoría. Estas actividades se comienzan en aulas (de ordenadores si es necesario), y deben completarse fuera del aula.
 - sesiones de prácticas: los estudiantes deben resolver unos problemas de un tamaño mayor que los ejercicios antes citados, de forma que deben decidir qué conceptos y técnicas deben utilizar en cada caso. Estas actividades se comienzan en aulas de ordenadores, y deben completarse fuera del aula.



2. PRERREQUISITOS PARA EL SEGUIMIENTO DEL ITINERARIO FORMATIVO


Los conocimientos previos necesarios para el seguimiento de esta asignatura son los siguientes:

 - Arquitectura de procesadores.
 - Lenguaje Java.
 - Principios de sistemas operativos.
 - Conocimientos de redes de computadores.

Se recomienda haber cursado Computadores I, II y III (12409, 12410, 12411), Sistemas Operativos (12414), Programación II (12407) e Introducción a las Redes de Ordenadores (12455).


3. COMPETENCIAS DE LA ASIGNATURA


El objetivo fundamental de esta asignatura es que los alumnos adquieran conocimientos de sistemas distribuidos y arquitecturas especializadas, así como ser capaces de desarrollar e implementar aplicaciones de comunicación entre múltiples procesos, aplicaciones concurrentes y servidores software para sistemas distribuidos.

En este capítulo se detalla qué es lo que se espera que los estudiantes hayan aprendido al acabar la asignatura. En primer lugar, las competencias generales se refieren a habilidades no directamente relacionadas con los contenidos de la asignatura, sino al ámbito profesional de un informático. Las competencias específicas son las referidas a aspectos propios de la asignatura.

3.1 Competencias generales

Instrumentales
 - CG1: Capacidad de síntesis
El estudiante ha de ser capaz de escribir soluciones con los elementos esenciales, de forma simple, elegante y lo más eficiente posible.
 - CG2: Capacidad de análisis
El estudiante ha de ser capaz de, a partir de un problema concreto, analizarlo y proponer soluciones adecuadas a dicho problema.
 - CG3: Capacidad de gestionar la información
El estudiante ha de ser capaz de buscar y analizar información de fuentes diversas.
 - CG4: Inglés
El estudiante debe conocer y usar el inglés.

Interpersonales
 - CG5: Capacidad de trabajo en equipo
El estudiante ha de ser capaz de trabajar en equipo comunicándose de forma eficaz con sus compañeros y proponiendo soluciones conjuntas.
 - CG6: Capacidad de crítica y autocrítica
El estudiante ha de ser capaz de evaluar y auto evaluarse.

Sistemáticas
 - CG7: Capacidad para aplicar el conocimiento en la práctica
El estudiante ha de ser capaz de aplicar los conocimientos adquiridos para resolver problemas concretos.
 - CG8: Interés por la calidad
El estudiante ha de ser capaz de documentar y expresarse correctamente. Asimismo, ha de ser capaz de escribir código y que sea eficiente y fácil de leer.

3.2 Competencias específicas

 - CE1: Aplicaciones y servicios
El estudiante ha de ser capaz de conocer y clasificar aplicaciones y servicios desde el punto de vista de hardware, redes y sistemas operativos.
 - CE2: Arquitecturas de software distribuidas
El estudiante ha de ser capaz de conocer las principales arquitecturas de software distribuidas: C/S y P2P, así como diseñar e implementar aplicaciones utilizando estas tecnologías.
 - CE3: Mecanismos de aplicaciones distribuidas
El estudiante ha de ser capaz de conocer los diferentes tipos de comunicación entre procesos, así como los conceptos de sincronización, consistencia, replicación y sistemas de ficheros distribuidos.
 - CE4: Arquitecturas de hardware distribuidas
El estudiante ha de ser capaz de conocer arquitecturas de hardware especializadas (orientadas a aplicaciones y lenguajes) y distribuidas.
 

4. OBJETIVOS DE APRENDIZAJE

La asignatura tiene como principal objetivo estudiar los sistemas distribuidos, en particular el desarrollo de servicios distribuidos que cada vez son más importantes por el número de ordenadores involucrados en la implementación de algunas aplicaciones. Al final de la asignatura, los estudiantes serán capaces de:

 - Implementar programas que permitan la comunicación entre múltiples procesos.
 - Diseñar e implementar aplicaciones concurrentes.
 - Implementar servidores (software) para sistemas distribuidos.

 

5. EVALUACIÓN


5.1. Criterios generales de evaluación

Este curso evaluará las actividades de aprendizaje del alumno con una nota de 0 a 10. Para aprobar la asignatura, el alumno ha de obtener una nota final igual o superior a 5.

La siguiente tabla resume la evaluación de las actividades de aprendizaje del alumno y el peso de las mimas en porcentaje sobre la nota final de la asignatura:

Tipo de Evaluación
Incidencia cualificación
Agente de evaluación
Agrupamiento
%
Obligatoria
Optativa
Docente
Autoevaluación
Coevaluación
I
PP
PG
GG
Inicial
Continuada
Ejercicios
Profesor teoría
X
-
Continuada
Examen parcial
Profesor teoría
X
20%
Formativa
Proyecto
Profesor prácticas
X
40%
Final
Examen final
Profesor teoría
X
40%

 

La asignatura consta de dos partes principales:
 1. Fundamentos teórico-prácticos, que engloba las actividades relacionadas con las sesiones de teoría y de ejercicios (seminarios)
 2. Prácticas

 1. Fundamentos teórico-prácticos
Habrá dos exámenes, uno a mitad de la asignatura y otro al final. El primero supone un 20% de la nota final de la asignatura (en primera convocatoria) y se centra en los bloques temáticos de las primeras sesiones de teoría y ejercicios. El segundo examen supone el 40% de la nota final de la asignatura (en primera convocatoria) y abarca cuestiones teórico-prácticas de todo el conjunto de la asignatura.

En las sesiones de seminarios, el profesor irá revisando el trabajo de los estudiantes a lo largo del trimestre, y pedirá la entrega de un ejercicio al final de cada sesión (se podrá entregar en el plazo de dos o tres semanas, según se indique en el enunciado del seminario). Es obligatorio entregar al menos los ejercicios de 4 de los 6 seminarios para poder superar la asignatura. En función de dichas revisiones y entregas, se podrá subir (pero nunca bajar) la nota de la parte de fundamentos teórico-prácticos hasta 0,5 puntos (la nota del examen final).

 2. Prácticas
La nota de esta parte se obtiene a partir de la práctica de la asignatura. La nota del proyecto supondrá un 40% de la nota final de la asignatura.

Para poder superar la asignatura, es necesario alcanzar una nota mínima de un 4,5 en cada una de las dos partes principales: fundamentos teórico-prácticos (media del examen parcial y final) y prácticas.

Recuperación de Septiembre
 - En el caso de no aprobar ambas partes en la primera convocatoria, se guardará para septiembre la nota de la parte aprobada, es decir, si la nota es mayor o igual que 5. En caso contrario, habrá que volver a presentarse al examen de segunda convocatoria en caso de no haber superado la parte teórica-práctica o resolver y entregar una práctica modificada en caso de no haber superado la parte práctica. En esta segunda convocatoria, la nota del examen supondrá un 60% de la nota final y la nota de la práctica un 40%.

 

5.2 Concreción


Proyecto
 - Se evaluará la resolución de una práctica en la que el estudiante podrá mostrar el grado de asimilación de los conceptos y competencias adquiridos durante la asignatura. En particular se evaluarán las competencias CE1 y CE2.
Asimismo se valorarán las competencias generales definidas anteriormente.

Examen parcial
 - Se evaluará la comprensión y aplicación de los conceptos y técnicas adquiridos durante la primera mitad de la asignatura. En concreto se evaluarán las competencias CE1 y CE2.
El método de evaluación consiste en un examen con cuestiones tipo test, preguntas teóricas y ejercicios prácticos.
La evaluación tendrá lugar durante una de las sesiones de teoría.

Examen final
 - Se evaluará la comprensión y aplicación de los conceptos adquiridos a lo largo de toda la asignatura. En concreto se evaluarán las competencias CE1, CE2, CE3 y CE4.
El método de evaluación consiste en un examen con cuestiones tipo test, preguntas teóricas y ejercicios prácticos.
La evaluación tendrá lugar durante el período de exámenes.

 

6. CONTENIDOS


Bloques de contenido

Bloque 1: Arquitecturas software
• Aplicaciones y servicios
• Arquitecturas distribuidas de software
     • Cliente - Servidor
            • Threads
            • Procesos
            • Eventos
     • P2P
            • Estructurado
            • No estructurado
            • Búsqueda
     • Arquitecturas de 3 capas
• Comunicación entre procesos
     • Sockets o conectores

Bloque 2: Arquitecturas hardware
• Paralelismo en hardware.
     • Paralelismo en un procesador
     • Multithreading
     • Hyperthreading Intel
     • Rendimiento de procesadores paralelos
• Arquitecturas especializadas
     • Orientadas a aplicaciones: Extensiones multimedia
          • Intel MMX
     • Orientadas a lenguajes: Java Virtual Machine
          • IJVM
• Arquitecturas paralelas
     • Multiprocesadores
     • Multicomputadores
          • Grid computing

Bloque 3: Mecanismos de aplicaciones distribuidas
• Sistemas operativos distribuidos
     • Comunicación entre procesos
           • Algoritmos distribuidos
     • Sincronización
           • Relojes lógicos
           • Relojes de vectores
           • Exclusión mutua
           • Elección de líder
           • Transacciones
     • Sistemas de ficheros distribuidos
           • NFS
           • CODA
           • HDFS (Hadoop)
           • GFS (Google File System)
     • Consistencia y replicación
           • Modelos de consistencia
     • Comunicación multimedia
           • Protocolos multicast: Comunicación de grupo
           • Protocolos de tiempo real
• Aplicaciones de la Internet 
     •DNS (Domain Name System): sistema de nombres
     • CDNs (Content Delivery Networks): red de distribución de contenido

 

7. METODOLIGÍA DE APRENDIZAJE


En esta sección se detalla la metodología del proceso de aprendizaje del estudiante. Esta información resulta de interés al estudiante porque le orienta sobre el modelo que se seguirá, así como sobre las actividades planificadas para aprender. Estas actividades suponen los siguientes ámbitos de dedicación:
 - Presencial (en el aula)
 - Dirigida (fuera del aula)
 - Autónoma (fuera del aula)
 - Actividades de aprendizaje en equipo

7.1. Sesiones de Teoría
 - El alumno participará en las sesiones teóricas de forma presencial. Es decir, el alumno recibirá conocimientos impartidos por el profesor.
 - En las sesiones de teoría todos los alumnos del grupo pueden estar presentes.
7.2. Seminarios
 - El alumno desarrollará actividades de aprendizaje presenciales participativas. En las sesiones de seminario los alumnos se organizan y aprenden en equipo de trabajo.
 - El objetivo de los seminarios es poder resolver las dudas de los estudiantes de una forma práctica. Están planificados de forma que los estudiantes apliquen en cada sesión los conocimientos adquiridos en las sesiones de teoría precedentes. En algunos casos, también será necesario aplicar conocimientos adquiridos de forma autónoma por el alumno.
 - En cada sesión de seminario participarán únicamente los alumnos del subgrupo según el calendario.
7.3. Actividades de aprendizaje autónomo
 - El alumno es responsable de adquirir de forma autónoma y no dirigida todos aquellos conocimientos y habilidades que considere de utilidad para el logro de los objetivos y competencias de esta asignatura.
 - Algunas de las actividades propuestas por el profesor serán prerrequisitos para poder realizar las sesiones de seminarios. Por tanto, el alumno es responsable de preparar estas actividades si desea participar activamente en los seminarios que dependen de las mismas.
7.4. Actividades de aprendizaje en equipo
Los estudiantes desarrollarán dos tipos de actividades en equipo:
 - Resolución de problemas y ejercicios durante las sesiones de seminario.
 - Desarrollo de un proyecto en las sesiones de prácticas.

 

8. FUENTES DE INFORMACIÓN Y RECURSOS DIDÁCTICOS


Este apartado incluye recursos de información procedentes de diversas fuentes, así como otros recursos docentes necesarios para el proceso de aprendizaje.

8.1. Fuentes de información para el aprendizaje. Bibliografía básica
 - [TanSCO] A. Tanenbaum, "Structured Computer Organization", Prentice Hall, 5th Edition
 - [TanDS] A. Tanenbaum, "Distributed Systems: Principles and Paradigms", Prentice Hall, 2nd Edition

8.2. Fuentes de información para el aprendizaje. Bibliografía complementaria
 - [Stall] W. Stallings, "Computer Organization and Architecture", Prentice Hall
 - [Comer] D. Comer, "Internetworking with TCP/IP", Prentice Hall
 - [Stevens-UNIX] W. Richard Stevens, "UNIX Network Programming", Prentice Hall
 - [Stevens-TCPIP] W. Richard Stevens, "TCP/IP Illustrated", Prentice Hall
 - [CouSD] G. Coulouris, J. Dollimore, T. Kindberg, "Sistemas Distribuidos. Conceptos y diseño", 3a Edición, Addison Wesley

8.3. Recursos didácticos. Material docente de la asignatura
 - Web de la asignatura: Campus Global (Moodle)
 - Apuntes
 - Enunciado de la práctica (proyecto)
 - Enunciados para las sesiones de seminarios

Arquitectura e Ingeniería de Computadores II amplía algunos de los temas estudiados en asignaturas anteriores, en particular la de Sistemas Operativos, con aspectos como la comunicación entre procesos y los sistemas operativos distribuidos. La asignatura incluye la implementación de servidores para sistemas distribuidos por lo que se también se estudian las características de arquitecturas de hardware orientadas a tipos concretos de aplicaciones.