• No se han encontrado resultados

PROGRAMACIÓN AVANZADA II

N/A
N/A
Protected

Academic year: 2021

Share "PROGRAMACIÓN AVANZADA II"

Copied!
9
0
0

Texto completo

(1)

PROGRAMACIÓN AVANZADA

II

Grado en

Ingeniero en Informática

Universidad de Alcalá

Curso Académico 2011/12

Curso 3º – Cuatrimestre 2º

(2)

GUÍA DOCENTE

Nombre de la

asignatura: PROGRAMACION AVANZADA 2

Código: 780026

Titulación en la que se

imparte: Grado en Ingeniería Informática

Departamento y Área de

Conocimiento: CIENCIAS DE LA COMPUTACION

Carácter: OBLIGATORIA

Créditos ECTS: 6

Curso:

Profesorado: David de Castro

Juan José Sánchez

Horario de Tutoría: El establecido por cada profesor Idioma en el que se

imparte: Español

1. PRESENTACIÓN

La asignatura Programación Avanzada 2 desarrolla contenidos de programación orientados a alcanzar un perfeccionamiento en las técnicas de programación conocidas por los alumnos mediante la utilización de las tecnologías más novedosas.

Prerrequisitos y Recomendaciones

Es obligatorio haber cursado la asignatura Programación Avanzada.

2. COMPETENCIAS

Esta asignatura, y de forma más amplia la materia de la que forma parte, desarrolla en el alumno las siguientes competencias:

Competencias de la materia

1. Interpretar, representar y medir elementos del mundo real mediante el concepto de dato. 2. Aplicar la estructura física y lógica de datos que representan números, caracteres, registros

(3)

3. Aplicar los conceptos de clase, tipo abstracto de datos y objeto, en programas.

4. Identificar las diferencias entre la representación basada en objetos y los modelos de flujo de datos.

5. Diseñar soluciones algorítmicas a problemas y representarlas como programas u objetos. 6. Aplicar la estrategia de implementación descendente (topdown).

7. Aplicar el diseño modular y los conceptos cohesión y acoplamiento. 8. Alcanzar una visión de sistema de la verificación y validación.

9. Ser capaz de utilizar entornos de programación, herramientas de desarrollo y entornos gráficos de desarrollo, variados

10.Aplicar los conceptos y técnicas de la manipulación de ficheros.

11.Diseñar programas y aplicaciones que utilicen estructuras abstractas de datos. 12.Diseñar soluciones a problemas que impliquen uso de ficheros y bases de datos.

13.Aplicar técnicas de desarrollo, diseño, prueba y depuración a la resolución de problemas. 14.Evaluar cómo afectan las capacidades y limitaciones de los lenguajes de programación

más comunes a la creación de sistemas informáticos.

15.Analizar críticamente la evolución de los lenguajes de programación los diferentes

paradigmas disponibles hoy día y sus principales características y aplicar esta información al diseño y resolución de problemas.

16.Comparar y contrastar entornos de ejecución interpretados y compilados, con sus ventajas y desventajas, así como la importancia de la abstracción en el contexto de las máquinas virtuales y comprender distintas realizaciones prácticas de dicho concepto.

17.Reconocer los modelos formales que sostienen la teoría del procesamiento de lenguajes, i.e., expresiones regulares, teoría de autómatas, y gramáticas.

18.Ser capaz de describir las distintas fases y algoritmos utilizados en la traducción y generación de código desde el programa fuente al ejecutable, incluidas las consideración en la traducción de código dependiente e independiente de la máquina

19.Aplicar los conceptos de optimización de código, incluyendo las distintas posibilidades en la elección de código intermedio y fases de optimización.

20.Evaluar los conceptos de tipos, ámbito y su comprobación (compatibilidad), en el procesamiento de lenguajes de programación

21.Valorar el concepto de tipo de dato y ser capaz de identificar las características principales de un sistema de tipos.

22.Analizar críticamente los fundamentos de la programación funcional y lógica identificando las ventajas e inconvenientes de cada paradigma.

23.Aplicar la programación distribuida, concurrente y paralela, conociendo sus algoritmos fundamentales y las ventajas e inconvenientes de cada paradigma, para diseñar sistemas más eficaces o eficientes desde el punto de vista de rendimiento, usuario u otros.

Competencias genéricas:

 Desarrollar aptitudes para la comunicación oral y escrita

 Desarrollar capacidad de análisis y síntesis

 Desarrollar capacidad para la toma de decisiones

 Desarrollar métodos para la autoorganización y planificación del trabajo individual.

 Desarrollar métodos para el trabajo en equipo.

 Motivación por la calidad

(4)

 Evaluar cómo afectan las capacidades y limitaciones de los lenguajes de programación más comunes a la creación de sistemas informáticos.

 Analizar críticamente la evolución de los lenguajes de programación, los diferentes paradigmas disponibles hoy día y sus principales características a las decisiones de diseño de sistemas de información.

 Comparar y contrastar entornos de ejecución interpretados y compilados, con sus ventajas y desventajas, así como la importancia de la abstracción en el contexto de las máquinas virtuales y comprender distintas realizaciones prácticas de dicho concepto.

 Aplicar la programación distribuida, concurrente y paralela, conociendo sus algoritmos fundamentales y las ventajas e inconvenientes de cada paradigma, para diseñar sistemas más eficaces o eficientes desde el punto de vista de rendimiento, usuario u otros

 Analizar críticamente los fundamentos de la programación funcional y lógica identificando las ventajas e inconvenientes de cada paradigma.

3. CONTENIDOS

1. Programación declarativa y Funcional:

Características de este tipo de programación. Influencia sobre los lenguajes actuales. Lenguajes funcionales modernos y tencendias.

2. Programación paralela:

Modelos de sistemas paralelos y programación. Evaluación del rendimiento. Metodología y notaciones. Programación de hardware gráfico paralelo.

3. Programación en la nube:

Nuevo paradigmas. SW como servicio, Plataforma como servicio e Infraestructura como servicio. Tipos de nubes.

4. Máquinas virtuales.

Tipos de máquinas. Máquinas de sistema y proceso. Técnicas para máquinas virtuales. Máquinas virtuales más comunes.

(5)

Unidades temáticas Temas Total horas, clases, créditos o tiempo de dedicación (*) Programación funcional Programación funcional  12 horas

Programación paralela Programación paralela  12 horas Computación en la Nube Computación en la

nube  12 horas

Máquinas virtuales Máquinas Virtuales  12 horas

(*) Incluyen PECs

4. METODOLOGÍAS DE ENSEÑANZA-APRENDIZAJE. ACTIVIDADES

FORMATIVAS

La asignatura Fundamentos de la programación se organiza como una asignatura cuatrimestral de 6 ECTS (150 horas).

En el proceso de enseñanza-aprendizaje de los contenidos anteriormente reseñados se emplearán las siguientes actividades formativas:

 Clases Teóricas presenciales.

 Clases Prácticas: resolución de problemas presenciales.

 Prácticas en Laboratorio presenciales.

 Tutorías: individuales y/o grupales.

Además, en función de la naturaleza de las distintas partes de la materia objeto de estudio, se podrán utilizar, entre otras, las siguientes actividades formativas:

 Elaboración de trabajos con responsabilidad individual pero con gestión de la información como equipo.

 Puesta en común de la información, problemas y dudas que aparezcan en la realización de los trabajos.

 Organización y realización de jornadas públicas con presentaciones orales y discusión de resultados.

(6)

Actividades presenciales:

1. En el aula: exposición y discusión de los conocimientos básicos de la asignatura. Planteamiento y resolución teórica de ejercicios y supuestos relacionados. Orientadas a la enseñanza de las competencias específicas de la asignatura, especialmente las relacionadas con los conocimientos básicos y las técnicas de programación imperativa.

2. En el laboratorio: planteamiento y desarrollo de ejercicios prácticos que permitan solventar problemas y analizar hipótesis y contribuyan al desarrollo de la capacidad de análisis de resultados, razonamiento crítico y comprensión de los métodos de resolución planteados. Servirán como base para la adquisición de las competencias genéricas descritas en el apartado 2.

Actividades no presenciales:

1. Análisis y asimilación de los contenidos de la materia, resolución de problemas, consulta bibliográfica, preparación de trabajos individuales y grupales, realización de exámenes presenciales y autoevaluaciones. Orientadas especialmente al desarrollo de métodos para la autoorganización y planificación del trabajo individual y en equipo.

2. Tutorías: asesoramiento individual y en grupos durante el proceso de enseñanza-aprendizaje, bien en forma presencial o a distancia.

Número de horas totales:

La asignación de horas a las distintas actividades formativas, incluyendo los exámenes es la siguiente:

Clases presenciales de Teoría y problemas: 24 horas Clases presenciales de Laboratorio: 24 horas Evaluación final: 3 horas Tutorías y trabajo del alumno: 99 horas

TOTAL: 150 horas

Materiales y recursos

 Bibliografía de referencia sobre la asignatura.

 Ordenadores personales.

 Entornos de desarrollo y manuales de uso de los mismos.

 Conexión a Internet.

 Plataforma de Aula Virtual y manuales de uso de las mismas.

(7)

5. EVALUACIÓN

El sistema de calificación se ajustará a la “NORMATIVA REGULADORA DE LOS PROCESOS DE EVALUACIÓN DE LOS APRENDIZAJES“ aprobada en Consejo de Gobierno de la Universidad de Alcalá de 24 de marzo de 2011.

La dimensión y cuestiones que serán valoradas en el aprendizaje se corresponden a la adquisición de competencias presentadas en la guía. Se considerará también a estos efectos la actitud, asistencia, participación e intereses del alumno.

La evaluación de la adquisición de competencias tendrá en cuenta la actitud y el interés del alumno. Los estudiantes tendrán la opción de evaluación continua mediante las Pruebas de Evaluación Continua (PEC) distribuidas a lo largo del cuatrimestre. Además, los estudiantes que no se acojan a la evaluación continua, podrán optar a una Evaluación Final si lo solicitan en tiempo y forma. La evaluación continua servirá en cualquier caso como evaluación formativa durante el proceso de enseñanza-aprendizaje.

El sistema de evaluación continua que se propone se compone de: Entregas periódicas de ejercicios de laboratorio, un ejercicio final de laboratorio y pruebas escritas de carácter teórico/ practico, pudiendo ser de carácter eliminatorio y relativas a los conocimientos impartidos que se podrán realizar en el aula/laboratorio o a través de la Plataforma de Aula Virtual.

En cuanto a los detalles sobre la evaluación continua son los siguientes:

Valoración de las Pruebas de Evaluación Continua (PEC) sobre la nota total

 Cada una de las cuatro secciones de la asignatura tendrá una PEC de teoría y una de práctica.

 El peso de cada una de las cuatro secciones será del 25% sobre la nota final.

◦ La nota de cada sección se calculará aplicando un 60% sobre la nota de la PEC de teoría y un 40% sobre la nota de la PEC de laboratorio.

 Porcentaje asignado a cada elemento de la evaluación continua:  Información sobre valoración de entregas parciales.

◦ En cada PEC será necesario obtener una calificación mínima de 3,5 para promediar con

las otras.

◦ En el caso de entregas de PEC perdidas por causa justificada según valoración del

profesor, se establecerá algún mecanismo de entrega tardía siempre que el retraso no sea excesivo ni afecte a un número importante de PEC.

6. BIBLIOGRAFÍA

(8)

“Introducción a la Programación Paralela”. F. Almeida, D. Gimenez, Jose Miguel Mantas, A.M. Vidal. Paraninfo Cengage Learning, 2008.

“Introduction to Parallel Computing”. Kumar, V., Grama, A., Gupta, A., Karypis G. Benjamin/Cummings Publishing Company, 2003.

“Parallel Programming. Techniques and applications using networked workstations and parallel computers”. Vol II. Wilkinson, B., Allen, M. Prentice-Hall. 2005.

“Parallel Programming in C with MPI and OpenMP”. Michael J. Quinn. McGraw-Hill, 2003. “The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications”. Clay Breshears. O'Reilly Media, 2009.

Página Oficial de Open MPI: http://www.open-mpi.org/ Página Oficial de OpenMP: http://www.openmp.org

Programación Declarativa Funcional

"Razonando con Haskell". Blas C. Ruiz, Francisco Gutiérrez y otros. 2004. Thomson "Introducción a la programación funcional con Haskell". Richard Bird. 2001. Prentice Hall

“Manual de F#”. http://msdn.microsoft.com/es-es/fsharp

“COMMERCIAL USERS OF FUNCTIONAL PROGRAMMING“ . http://cufp.org/

Computación en la nube

“Cloud Computing: First International Conference, CloudComp 2009 Munich, Germany, October 19-21, 2009” Dimiter Avresky, Michel Diaz, Arndt Bode, and Claudio Bruno 2010, Springer

“Cloud Computing: Principles, Systems and Applications (Computer Communications and Networks) “ Nick Antonopoulos and Lee Gillam 2010, Springer

“Programming Windows Azure: Programming the Microsoft Cloud “ Sriram Krishnan 2010, OREILLY

“Management Strategies for the Cloud Revolution: How Cloud Computing Is Transforming Business and Why You Can't Afford to Be Left Behind” Charles Babcock 2010, Mc Graw Hill

“Cloud Computing: Technologies and Strategies of the Ubiquitous Data Center“. Brian J. S. Chee and Curtis Franklin Jr. 2010, Ed. CRC Press

Máquinas Virtuales

(9)

“Virtual Manufacturing (Springer Series in Advanced Manufacturing)” Wasim Ahmed Khan, Abdul Raouf, and Kai Cheng (Mar 1, 2011) not released yet, Editorial Springer

“Getting Started with Microsoft Application Virtualization 4.6 “ Augusto Alvarez 2011, Packt Publishing Ltd.

“Virtualization and Forensics: A Digital Forensic Investigator's Guide to Virtual Environments” Diane Barrett and Greg Kipper 2010, ed Syngress

“Programming Scala. Tackle Multi-Core Complexity on the Java Virtual Machine” Venkat Subramaniam 2009, Ed. Pragmatic Bookshelf

“Virtual Machine: History, Application and Future “ Ziyaad Mohammad Twaheer Ramdianee 2009, Lambert Academic Publishing

Referencias

Documento similar

cv.wait espera hasta que reciba una notifiación, entonces hace lock con el mutex y pregunta por la condición (lambda).. Variables

se muestra el estado inicial de un tablero, el cual contiene en la primer casilla (de izquierda a derecha) una bellota, representada por un asterisco (*), y a la ardilla,

Regresa el valor de la variable thread-limit-var, que es el n´ umero m´ aximo de hilos OpenMP disponibles para el programa.. void omp set max active levels(int

Con esta aplicación podemos editar videos nuestros o de la web para intercalar preguntas en ellos y hacer que los estudiantes que vean el video contesten de forma obligatoria a

DISEÑO ELECTRÓNICO AVANZADO FÍSICA AVANZADA PARA MECATRÓNICA SISTEMAS DE PERCEPCIÓN. PROGRAMACIÓN EN MULTIPROCESADORES SIMULACIÓN NUMÉRICA DEL FLUJO ALREDEDOR DE

Remarque: Lorsque le Robot termine le cycle de nettoyage ou lorsque la pile est faible, le Robot retourne automatiquement à la station d’accueil pour se recharger.. Le robot

En esta asignatura se revisarán los problemas añadidos de la programación concurrente respecto de la programación secuencial, como la falta de exclusión mutua, la sincronización y

Es posible que para conseguir la línea Recta haya una ligera diferencia en la velocidad entre ambos motores.. © Microlog Tecnología y Sistemas SL