Curso Académico:
2018/19
30322 - Programación de redes y servicios
Información del Plan Docente
Año académico:
2018/19
Asignatura:
30322 - Programación de redes y servicios
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
Titulación:
330 - Complementos de formación Máster/Doctorado
438 - Graduado en Ingeniería de Tecnologías y Servicios de Telecomunicación
Créditos:
6.0
Curso:
581 - Graduado en Ingeniería de Tecnologías y Servicios de Telecomunicación: 2
656 - Graduado en Ingeniería de Tecnologías de Telecomunicación: 2
330 - Complementos de formación Máster/Doctorado: XX
438 - Graduado en Ingeniería de Tecnologías y Servicios de Telecomunicación: 3
Periodo de impartición:
Segundo semestre
Clase de asignatura:
438 - Obligatoria
330 - Complementos de Formación
Módulo:
---
1.1. Objetivos de la asignatura
La asignatura y sus resultados previstos responden a los siguientes planteamientos y objetivos:
En esta asignatura el alumno aprenderá a enfrentarse al diseño de programas en los que un conjunto de procesos deben ejecutarse concurrentemente y sincronizarse, así como los aspectos básicos para ejecutarlos en diferentes computadoras conectados en una red. Se presentarán los conceptos de forma abstracta, de forma que el alumno aprenda a reconocer los diseños, arquitecturas y patrones de comunicación independientemente de tecnologías, estándares o productos concretos.
1.2. Contexto y sentido de la asignatura en la titulación
Actualmente es difícil encontrar una aplicación “software” que no incluya características propias de sistemas concurrentes y distribuidos. El alumno debe conocer todas las técnicas involucradas en el desarrollo de servicios en la red, desde las técnicas de bajo nivel que le permitan el desarrollo de aplicaciones más eficientes, hasta las técnicas de más alto nivel que le permitan abordar el desarrollo de aplicaciones distribuidas complejas. El desarrollo del software como servicio precisa de la integración de los conocimientos de redes y de la programación de sistemas concurrentes y distribuidos.
1.3. Recomendaciones para cursar la asignatura
La asignatura es la continuación natural de la asignatura de Fundamentos de Informática presentada en el primer año de estudios, y de Fundamentos de Redes y Tecnologías e Interconexión de redes, ambas de segundo curso. Es necesario que el alumno haya adquirido soltura en el desarrollo de programas secuenciales correctos y conozca los fundamentos de redes y, en concreto, la arquitectura TCP/IP. Es también recomendable que el alumno haya cursado en el semestre anterior la asignatura de Arquitectura de Sistemas, ya que comparten algunos temas clave.
2.1. Competencias
Al superar la asignatura, el estudiante será más competente para...
Capacidad para resolver problemas y tomar decisiones con iniciativa, creatividad y razonamiento crítico
Capacidad para comunicar y transmitir conocimientos, habilidades y destrezas en castellano
Capacidad para usar las técnicas, habilidades y herramientas de la Ingeniería necesarias para la práctica de la misma.
Capacidad de gestión de la información, manejo y aplicación de las especificaciones técnicas y la legislación necesarias para la práctica de la Ingeniería.
Capacidad para aprender de forma continuada y desarrollar estrategias de aprendizaje autónomo
Capacidad para aplicar las tecnologías de la información y las comunicaciones en la Ingeniería
Capacidad para aprender de manera autónoma nuevos conocimientos y técnicas adecuados para la concepción, el desarrollo o la explotación de sistemas y servicios de telecomunicación
Capacidad de utilizar aplicaciones de comunicación e informáticas (ofimáticas, bases de datos, cálculo avanzado, gestión de proyectos, visualización, etc.) para apoyar el desarrollo y explotación de redes, servicios y aplicaciones de telecomunicación y electrónica
Capacidad para utilizar herramientas informáticas de búsqueda de recursos bibliográficos o de información relacionada con las telecomunicaciones y la electrónica
Capacidad de concebir, desplegar, organizar y gestionar redes, sistemas, servicios e infraestructuras de telecomunicación en contextos residenciales (hogar, ciudad y comunidades digitales), empresariales o institucionales responsabilizándose de su puesta en marcha y mejora continua, así como conocer su impacto económico y social
Conocimiento y utilización de los fundamentos de la programación en redes, sistemas y servicios de telecomunicación
Conocimiento y utilización de los conceptos de arquitectura de red, protocolos e interfaces de comunicaciones
Capacidad de diferenciar los conceptos de redes de acceso y transporte, redes de conmutación de circuitos y de paquetes, redes fijas y móviles, así como los sistemas y aplicaciones de red distribuidos, servicios de voz, datos, audio, vídeo y servicios interactivos y multimedia
2.2. Resultados de aprendizaje
El estudiante, para superar esta asignatura, deberá demostrar los siguientes resultados...
Conoce los problemas generados por el acceso concurrente a datos y recursos, así como los métodos clásicos de comunicación entre procesos
Conoce las características de los sistemas distribuidos, los retos que plantea y las soluciones que se han planteado para los mismos.
Conoce las capas más altas de la arquitectura de la computación basada en red, y más específicamente en los paradigmas y abstracciones que dan soporte a la computación a servicio.
Tiene capacidad de realizar programas con características concurrentes y/o distribuidas y basada en eventos.
Plantea correctamente el problema a partir del enunciado propuesto e identifica las opciones para su resolución. Aplica el método de resolución adecuado e identifica la corrección de la solución
Identifica, modela y plantea problemas a partir de situaciones abiertas. Explora y aplica las alternativas para su resolución. Maneja aproximaciones.
Conoce y utiliza de forma autónoma y correcta las herramientas, instrumentos y aplicativos software disponibles en los laboratorios y lleva a cabo correctamente el análisis de los datos recogidos.
Desarrolla la habilidad de trabajar en equipo para realizar los diseños y configuraciones consideradas, repartiendo la carga de trabajo para afrontar problemas complejos, intercambiando información entre distintos grupos, de manera coordinada y organizada.
2.3. Importancia de los resultados de aprendizaje
En la época en que nos encontramos existe una gran demanda en el desarrollo del software como servicio. Detrás de esta demanda nos encontramos con todos los problemas asociados al diseño sistemas concurrentes y distribuidos, como son la escalabilidad, la tolerancia a fallo, la necesidad de herramientas que permitan abstraernos de la complejidad del sistema, los patrones de diseño, las arquitecturas software, etc. Una base sólida en estos aspectos es imprescindible para poder desenvolverse en el mundo profesional, y poder entender las evoluciones tecnológicas que están teniendo lugar.
3.1. Tipo de pruebas y su valor sobre la nota final y criterios de evaluación para cada prueba
El estudiante deberá demostrar que ha alcanzado los resultados de aprendizaje previstos mediante las siguientes actividades de evaluación. El sistema de evaluación propuesto en esta asignatura consiste en 2 pruebas:
1. Prueba práctica en el laboratorio (30%): El objetivo de esta prueba es evaluar los conocimientos y destrezas que han adquirido los alumnos en las sesiones prácticas de laboratorio. Estas sesiones consistirán en la realización utilizando el computador de una serie de ejercicios relacionados con los contenidos de la asignatura. El alumno deberá entregar durante el semestre, en las fechas indicadas por los profesores, las soluciones implementadas para cada uno de los ejercicios planteados para estas sesiones. La entrega en fecha de estas soluciones, le eximirá de realizar la prueba final práctica en el laboratorio. No obstante, de conformidad con la normativa vigente, los alumnos que hubieran superado la prueba práctica durante el curso también podrán presentarse a subir nota en las prueba de evaluación global de la práctica en laboratorio.
2. Prueba escrita (70%): En esta prueba se plantearán cuestiones y/o problemas relacionados con el programa impartido en la asignatura. Su tipología y complejidad será similar a los presentados en las sesiones de aula y laboratorio. En general, se valorará la calidad y claridad de las respuestas, así como las estrategias de solución planteadas por los alumnos.
Para la superación de la asignatura es condición imprescindible obtener una calificación mayor o igual que 4 puntos sobre 10 en cada una de las dos pruebas (prueba práctica en el laboratorio y prueba escrita). En otro caso, la calificación global será la mínima entre 4 y el resultado de ponderar con los porcentajes mostrados cada parte. La asignatura se supera con una calificación global de 5 puntos sobre 10.
4.1. Presentación metodológica general
El proceso de aprendizaje que se ha diseñado para esta asignatura se basa en lo siguiente:
Se debe tener en cuenta que la asignatura tiene una orientación tanto teórica como práctica. Por ello, el proceso de aprendizaje pone énfasis tanto en la asistencia del alumno a las clases magistrales, como en la realización de prácticas en laboratorio, en la realización de programas sencillos de dificultad creciente, y en el estudio individualizado.
4.2. Actividades de aprendizaje
El programa que se ofrece al estudiante para ayudarle a lograr los resultados previstos comprende las siguientes actividades...
1. La presentación de los contenidos de la asignatura en clases magistrales por parte de los profesores (25 horas presenciales).
2. La resolución de problemas planteados en clase (5 horas presenciales).
3. El desarrollo de prácticas por parte de los alumnos, guiadas por los profesores, que desarrollan los conocimientos teóricos (24 horas presenciales, repartidas en 12 sesiones de 2 horas cada una).
4. La realización y defensa de trabajos prácticos en grupo, tutorizados por los profesores.
5. El estudio personal de la asignatura por parte de los alumnos.
6. La atención personalizada al alumno a través de las tutorías con el objetivo de revisar y discutir los materiales y temas presentados en las clases tanto teóricas como prácticas.
7. La realización de pruebas escritas teórico-prácticas y presentación de informes o trabajos utilizados en la evaluación del progreso del estudiante. El detalle se encuentra en la sección correspondiente a las actividades de evaluación
4.3. Programa
- Programación Concurrente
- Introducción a la Concurrencia
- Motivación
- Conceptos de exclusión mutua y sincronización
- Propiedades de los programas concurrentes: seguridad, vivacidad, prioridad
- Noción Proceso /Thread
- Mecanismos de Sincronización entre procesos
- Algoritmos de exclusión mutua
- Semáforos
- Monitores
- Problemas de exclusión mutua y parcial
- Sistemas Distribuidos
- Introducción a los sistemas distribuidos
- Arquitecturas Software
- Redes de Comunicación: Arquitectura TCP/IP
- Comunicaciones proceso a proceso: Interfaz Socket TCP y UDP
- Canales y paso de mensajes síncrono y asíncrono
- Aplicaciones Cliente/Servidor (Servidor con y sin estado)
- Introducción a las tecnologías Middleware
4.4. Planificación de las actividades de aprendizaje y calendario de fechas clave
Calendario de sesiones presenciales y presentación de trabajos
El calendario de la asignatura estará definido por el centro en el calendario académico del curso correspondiente.
El calendario detallado de las diversas actividades a desarrollar se establecerá una vez que la Universidad haya aprobado el calendario académico del curso correspondiente. En cualquier caso, las fechas importantes serán anunciadas con la suficiente antelación.
4.5. Bibliografía y recursos recomendados
- Downey, Allen B . The Little Book of SEMAPHORES : The Ins and Outs of Concurrency Control and Common Mistakes / Allen B. Downey. 2nd ed. CreateSpace Independent Publishing Platform, 2009
- Ben-Ari, M.. Principles of concurrent and distributed programming / M. Ben-Ari. - 2nd ed. Harlow (England): Pearson Education, 2006
- Varela, Carlos. Programming Distributed Computing Systems: Foundational Approach / Carlos Varela The Mit Press, 2013
- Calvert, K.L . TPC/IP Sockets in Java: Practical Guide for Programmers / K. L. Calvert, M. J. Donahoo. - 2nd ed. Morgan Kaufmann Publishers, 2008
- Raynal, Michel. Distributed Algorithms for Message-Passing Systems / Michel Raynal Springer, 2013
- Tanenbaum, Andrew Stuart. Distributed systems : principles and paradigms / Andrew S. Tanenbaum, Maarten Van Steen . - 2nd ed. Upper Saddle River, NJ: Pearson Educación, cop. 2007
Transparencias, Enunciados de problemas, Casos de estudio y Guiones de prácticas.
Disponibles en http://add.unizar.es.