Universidad Pública de Navarra

Universidad Pública de Navarra


miércoles 19 de junio de 2013



Año Académico: 2012/2013 | Otros años:  2011/2012  |  2010/2011  |  2008/2009 

Ingeniero Industrial
Código: 35411 Asignatura: PROGRAMACIÓN AVANZADA
Departamento: Automática y Computación Curso: 4
Tipo: Optativa Duración: 1º C
Créditos: 6 Teóricos: 3 Prácticos: 3
Profesores
FUENTES GONZALEZ, RAMON

Partes de este texto:

 

Descriptores


Programación modular y paralela. Programación concurrente. Programación en tiempo real.

Subir

Prerrequisitos y recomendaciones

No hay requisitos previos. Los conocimientos y competencias aconsejables para esta materia son:

- Conocimientos de lógica de programación.
- Experiencia en el lenguaje de programación C.

Subir

Contextualización

Los estudiantes de ingeniería son en la actualidad usuarios de herramientas informáticas que se ejecutan en máquinas con sistemas operativos multitarea, tanto en estaciones de trabajo como en sistemas multipuesto y redes. Es previsible que en sus futuros puestos de trabajo sea también esa la situación en la que desarrollen su labor profesional.

En este contexto, con esta asignatura se pretende que los alumnos sean conocedores de la estructura que subyace en estos sistemas, que están fundamentados en programación concurrente y distribuida.

Subir

Objetivos y competencias

Los objetivos de esta asignatura son:

  • Ofrecer a los alumnos una visión general de los mecanismos específicos de concurrencia y sincronización en los algoritmos asociados a la programación concurrente. Así mismo, ofrecerles una visión conjunta de los aspectos más sobresalientes en la programación concurrente y distribuida: procesos, mecanismos de sincronización, mecanismos de comunicación, planificación, seguridad y protección.
  • -Ofrecer a los alumnos una visión concreta de la ejecución de los procesos concurrentes y distribuidos mediante la exposición de algunos problemas clásicos de programación concurrente: sección crítica, productores y consumidores, lectores y escritores, problema de los filósofos,…

  • Exponer a los alumnos las soluciones a alguno de los problemas relacionados con la programación paralela y distribuida.
  • Presentar  a los alumnos las técnicas básicas para implementar propiedades de seguridad en programas concurrentes.

  • Presentar a los alumnos un método sistemático para resolver problemas de sincronización en casos en los que la comunicación y la sincronización estén implementadas por medio de variables compartidas.
  •  Iniciar a los alumnos en el uso y la programación y del Shell del sistema operativo LINUX.

 

Subir

Temario y contenidos

PROGRAMA DE TEORÍA

30 horas  de clases teóricas, repartidas en dos horas semanales durante un cuatrimestre.


  • Introducción a la asignatura. Elementos previos necesarios.

  • Procesos concurrentes. Cooperación entre procesos.

  • Elementos de programación concurrente imperativa.

  • Sincronización y exclusión mutua en programas concurrentes.
  •  
  • Invariantes globales en el diseño de programas concurrentes.
  • Elementos de programas concurrentes: semáforos

  • Elementos de programas concurrentes:monitores .

  • Ejemplos clásicos de programación concurrente.

  • Programación distribuida. Conceptos asociados.
  • Elementos usuales en programación distribuida.

  • El paso de mensajes en programas distribuidos.

  • Primitivas asociadas a la programación distribuida asíncrona.

  • Ejemplos clásicos de programación distribuida asíncrona.

  • Primitivas asociadas a la programación distribuida síncrona.

  • PROGRAMA DE PRÁCTICAS EN CLASE

    15 horas  de clases prácticas, impartidas en el aula.

     Las prácticas en clase consisten en la resolución de problemas utilizando la teoría explicada esa misma semana. Se contemplan en estas prácticas:

    La resolución de problemas concretos de programación concurrente utilizando variables compartidas, semáforos y monitores.

    El análisis de ejemplos de programación distribuida asíncrona y síncrona

    la resolución de problemas de programación paralela.

     

    PROGRAMA DE PRÁCTICAS DE LABORATORIO

    15 horas  de clases prácticas, impartidas en un laboratorio de informática.

    Los contenidos de las prácticas se organizan en diez sesiones de prácticas de 1,5 horas de duración, dedicadas al estudio de alguna de las utilidades del Shell del sistema operativo Linux. En estas prácticas se comienza con una introducción a Linux. Posteriormente se estudian las características y el usom de alguna de las utilidades del Shell. Finalmente se propondrán prácticas de programación del Shell. En concreto, estas prácticas tienen los contenidos siguientes:

     

    Introducción al sistema operativo Linux. Usuarios Linux. Comandos básicos del Shell. Organización del sistema.

    Los ficheros y el Shell. Los Procesos y el  Shell.

    Utilidades: filtros.

    Comunicación y cooperación entre procesos para realizar tareas.

    Editores de texto.

    Programación del Shell.

    Programación con la utilidad awk.

Subir

Metodología y plan de trabajo

 TEORÍA Y PRÁCTICAS EN EL AULA

  • 1ª semana

    Introducción a la asignatura. Introducción de elementos previos necesarios.

  • 2ª semana

    - Procesos concurrentes. Cooperación entre procesos.

  • 3ª semana

    - Elementos de programación concurrente imperativa.

  • 4ª semana

    - Sincronización y exclusión mutua en programas concurrentes.

  • 5ª semana

    - Invariantes globales en el diseño de programas concurrentes.

  • 6ª semana

    - Elementos de programas concurrentes: semáforos (I)

  • 7ª semana

    - Elementos de programas concurrentes: semáforos (II)

  • 8ª semana

    - Elementos de programas concurrentes:monitores (I).

  • 9ª semana

    -Elementos de programas concurrentes: monitores (II). Ejemplos clásicos de programación concurrente.

  • 10ª semana

    - Programación distribuida. Conceptos asociados (I).

  • 11ª semana

    - Programación distribuida. Conceptos asociados (II).

  • 12ª semana

    - Elementos usuales en programación distribuida.

  • 13ª semana

    - El paso de mensajes en programas distribuidos.

  • 14ª semana

    - Primitivas asociadas a la programación distribuida asíncrona. Ejemplos clásicos de programación distribuida asíncrona.

  • 15ª semana

    - Primitivas asociadas a la programación distribuida síncrona.

  • PRÁCTICAS EN LABORATORIO

    Práctica 1. Introducción al sistema operativo Linux. Usuarios Linux. Comandos básicos del Shell. Organización del sistema.

    Práctica 2.  Los ficheros y el Shell.

    Práctica 3. Los Procesos y el  Shell.

    Práctica 4. Utilidades: filtros.

    Práctica 5. Comunicación y cooperación entre procesos para realizar tareas.

    Práctica 6. Editores de texto.

    Práctica 7. Programación del Shell (I).

    Práctica 8. Programación del Shell (II).

    Práctica 9. Programación del Shell (III).

    Práctica 10. Programación con la utilidad awk.

Subir

Evaluación

La evaluación  será el resultado del trabajo desarrollado por cada alumno en las prácticas del aula y del laboratorio junto con la calificación final obtenida en los exámenes de teoría/ejercicios y de prácticas.

El 80% de la calificación final se realizará en función del examen de teoría/prácticas.  El 20% restante corresponderá al examen de prácticas de laboratorio.

En el  examen escrito se pedirá el desarrollo de un tema de teoría así como las soluciones de problemas mediante algoritmos concurrentes y distribuidos.

Las parte práctica se evaluará mediante un ejercicio de programación del shell del sistema operativo LINUX.

Subir

Bibliografía y recursos

TEORÍA. BIBLIOGRAFÍA BÁSICA

G. R. Andrews, CONCURRENT PROGRAMMING, The Benjamin/Cummings Pub. 1991.

G. R. Andrews, FOUNDATIONS OF MULTITHREADED, PARALLEL AND DISTRIBUTED PROGRAMMING, Addison-Wesley 2000

TEORÍA. BIBLIOGRAFÍA COMPLEMENTARIA

M. L. Liu, COMPUTACIÓN DISTRIBUIDA. FUNDAMENTOS Y APLICACIONES, Addison-Wesley 2004

 PRÁCTICAS

D. Tansley,    LINUX & UNIX SHELL PROGRAMMING, Addison-Wesley 2000

R. Petersen, FUNDAMENTOS DE PROGRAMACIÓN EN LINUX, Osborne McGraw-Hill 2001

Subir

Idiomas


Castellano

Subir