Source: http://docplayer.es/3632408-Ampliacion-de-programacion-avanzada.html
Timestamp: 2017-11-22 18:35:41+00:00

Document:
AMPLIACIÓN DE PROGRAMACIÓN AVANZADA - PDF
Download "AMPLIACIÓN DE PROGRAMACIÓN AVANZADA"
Gregorio Blanco Quintana
1 - AMPLIACIÓN DE PROGRAMACIÓN AVANZADA Grado en Ingeniero en Informática Universidad de Alcalá Curso Académico 2015/16 Curso 3º Cuatrimestre 2º
2 GUÍA DOCENTE Nombre de la asignatura: AMPLIACIÓN PROGRAMACIÓN AVANZADA Código: Titulación en la que se imparte: Grado en Ingeniaría Informática Departamento y Área de Conocimiento: CIENCIAS DE LA COMPUTACIÓN Carácter: OBLIGATORIA Créditos ECTS: 6 Curso: 3º Profesorado: Horario de Tutoría: Idioma en el que se imparte: El establecido por cada profesor 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 materia: 1. Conocer el concepto de dato como representación y medida de elementos del mundo real.
3 2. Conocer y exponer la estructura física y lógica de datos que representan números, caracteres, registros, ficheros. 3. Conocer los conceptos de clase, tipo abstracto de datos y objeto. 4. Conocer los fundamentos de la orientación a objetos y ser capaz identificar las diferencias entre la representación basada en objetos y los modelos de flujo de datos 5. Desarrollar la habilidad de crear soluciones algorítmicas a problemas y ser capaz de representarla como programa u objetos. 6. Conocer la estrategia de implementación descendente (topdown). 7. Ser capaz de realizar una implementación mediante objetos 8. Conocer el diseño modular y los conceptos cohesión y acoplamiento. 9. Alcanzar una visión de sistema de la verificación y validación. 10. Conocer entornos de programación, herramientas de desarrollo y entornos gráficos de desarrollo, variados. 11. Conocer los conceptos y técnicas de la manipulación de ficheros mediante ejemplos simples. 12. Conocer los conceptos de las estructuras abstractas de datos y su uso en programas y aplicaciones. 13. Conocer la resolución de problemas que impliquen uso de ficheros y bases de datos 14. Conocer técnicas de desarrollo, diseño, prueba y depuración aplicadas a problemas. 15. Conocer las capacidades y limitaciones de los lenguajes de programación más comunes. 16. Describir la evolución de los lenguajes de programación los diferentes paradigmas disponibles hoy día y sus principales características. 17. 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 18. 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. 19. 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 consideraciones en la traducción de código dependiente e independiente de la máquina. 20. Introducir 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. 21. Introducir los conceptos de tipos, ámbito y su comprobación (compatibilidad), en el procesamiento de lenguajes de programación
4 22. Conocer los fundamentos de la programación funcional y lógica identificando las ventajas e inconvenientes de cada paradigma. 23. Comprender el concepto de tipo de dato y ser capaz de identificar las características principales de un sistema de tipos 24. Conocer los fundamentos de la programación distribuida, concurrente y paralela, sus algoritmos fundamentales y las ventajas e inconvenientes de cada paradigma. 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 Resultados de Aprendizaje: Evaluar, justificar y resolver cómo afectan las capacidades y limitaciones de los lenguajes de programación más comunes a la creación de sistemas informáticos. Identificar, aplicar y evaluar 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. Identificar y 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 Identificar, aplicar y evaluar críticamente los fundamentos de la programación funcional identificando las ventajas e inconvenientes de cada paradigma. 3. CONTENIDOS 1. Programación Paralela Modelos de sistemas paralelos y programación. Evaluación
5 del rendimiento. Metodología y notaciones. Programación de hardware gráfico paralelo. 2. Programación Funcional Características de este tipo de programación. Influencia sobre los lenguajes actuales. Lenguajes funcionales modernos y tendencias. 3. Programación en la nube (Cloud Computing) Nuevos 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. Programación de los contenidos Unidades temáticas Programación paralela Programación funcional Computación en la nube Máquinas virtuales (*) Incluyen PECs Temas Programación paralela Programación funcional Computación en la nube Máquinas Virtuales Total horas, clases, créditos o tiempo de dedicación (*) 20 horas 20 horas 16 horas 4 horas 4. METODOLOGÍAS DE ENSEÑANZA-APRENDIZAJE. ACTIVIDADES FORMATIVAS La asignatura Ampliación de Programación Avanzada 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.
6 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. Utilización de Plataforma de Aula Virtual. Actividades presenciales: 1. En el aula: exposición y discusión de los conocimientos básicos de la asignatura y planteamiento y resolución teórica de ejercicios y supuestos relacionados (orientados a la enseñanza de las competencias específicas de la asignatura). 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. 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: Clases presenciales de Laboratorio: 30 horas 30 horas
7 Evaluación final: 3 horas Tutorías y trabajo del alumno: 87 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. Proyectores. 5. EVALUACIÓN El sistema de calificación se ajustará tanto al RD 1125/2003, por el cual se regula el sistema de créditos ECTS, como 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 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. La evaluación continua servirá en cualquier caso como evaluación formativa durante el proceso de enseñanza-aprendizaje. Los estudiantes que no se acojan a la evaluación continua, podrán optar a una Evaluación Final si lo solicitan por escrito al director de la escuela y tienen una causa justificada. El plazo limite de solicitud será de dos semanas desde el comienzo de las clases o de la matricula del alumno. Los alumnos a los que se les conceda evaluación final deberán ponerse en contacto con los profesores de la asignatura para que éstos les informen de las prácticas y/o trabajos que deberán presentar. El sistema de evaluación continua que se propone se compone de: Entregas periódicas de ejercicios de laboratorio (PEC Laboratorio) y Teoría y pruebas escritas de carácter teórico/práctico (PEC Teoría), relativas a los conocimientos
8 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: Se realizarán dos PECS teóricas (T1 y T2), tres trabajos teóricos (TA1,TA2 y TA3) y tres prácticas (L1, L2 y L3). El porcentaje asignado a cada elemento de la evaluación continua es el siguiente: PEC % sobre total % sobre total T1 14 TA1 2 L1 20 T2 20 TA2 2 L2 20 TA3 2 L3 20 Información sobre valoración de entregas parciales. o En cuanto a las PEC de prácticas (L1,L2 y L3), en cada una de ellas se presentarán informes periódicos así como un informe final y la defensa del trabajo. Es obligatoria la entrega de todas ellas para superar la asignatura. Información sobre valoración de exámenes parciales. o En cuanto a las PEC de teóricas (T1 y T2), es obligatoria la presentación a todas ellas para superar la asignatura. o En cuanto a las TA trabajos de la asignatura (TA1 TA2 y TA3), es obligatoria la presentación de todas ellas para superar la asignatura
9 En el caso de que el alumno se decante por evaluación final, la nota final se calculará aplicando un 40% sobre la nota de teoría y un 60% sobre la nota de prácticas. Los alumnos que no superen la evaluación continua o la final tienen derecho a un examen extraordinario. Dicho examen consistirá en la entrega de ejercicios de laboratorio propuestos para esta convocatoria y una prueba escrita de carácter teórico/ practico relativas a los conocimientos impartidos. Los alumnos deberán ponerse en contacto con los profesores de la asignatura para que éstos les informen de las prácticas y/o trabajos que deberán presentar. Para aprobar la asignatura el alumno debe superar todas las competencias de la asignatura. Criterios de Evaluación En todos los procedimientos de evaluación los problemas servirán para evaluar la adquisición de las competencias relativas a la capacidad para la resolución de los problemas matemáticos en la ingeniería, así como evaluar los conocimientos básicos de ampliación de programación avanzada. Las cuestiones teóricas permiten evaluar la adquisición de la competencia en la comprensión y dominio de los conceptos básicos sobre las leyes generales de diversas ramas de la ingeniería, así como el conocimiento aplicado a la ampliación de programación avanzada. Tanto en problemas como en cuestiones teóricas, se evaluará el conocimiento en materias básicas y tecnológicas, que capacite para el aprendizaje de nuevos métodos y teorías, y dote de versatilidad para adaptarse a nuevas situaciones. Con los trabajos y problemas de laboratorio se evalúa la adquisición de la competencia sobre el uso de software especifico en ampliación de programación avanzada. Así también se evaluará la capacidad del alumno de resolver problemas con iniciativa, toma de decisiones, creatividad, razonamiento crítico y de comunicar y transmitir conocimientos, habilidades y destrezas en el campo de la ingeniería y de ampliación de programación avanzada.
10 6. BIBLIOGRAFÍA Programación Paralela Kirk & Hwu, Programming massively Parallel Processors, Elsevier, 2010 Sanders & Kandrot, CUDA by Example, Addison-Wesley, Mattson et al., Patterns for Parallel Programming, Addison Wesley, 2005 NVIDIA, NVidia CUDA Programming Guide, NVidia (Libro de Referencia), 2011 Programación Funcional Odersky, Spoon & Venners, Programming in Scala A Comprehensive Step-by-step Guide, Artima 2008 Wampler & Payne, Programming Scala, O Reilly, 2009 Subramaniam, Programming Scala. Tackle Multi-Core Complexity on the Java Virtual Machine, Pragmatic Bookshelf, 2009 Computación en la nube Roche & Douglas, Beginning Java Google App Engine, Apress, 2009 Dewsbury, Google Web Toolkit Applications, Prentice-Hall, 2008 Chen-Becker, Danciu & Weir, The definite Guide to Lift, Apress, 2009 Máquinas Virtuales Lindholm & Yellin, The JavaTM Virtual Machine Specification, 2nd Ed., Prentice-Hall, 2009 Engel, Programming for the Java Virtual Machine, Addison- Wesley, 1999 Venners, Inside the Java 2 Virtual Machine, McGraw-Hill, Craig, Virtual Machines, Springer, 2006 Ziyaad, Mohammad, Twaheer & Ramdianee, Virtual Machine: History, Application and Future, Lambert Academic Publishing, 2009
PROGRAMACIÓN AVANZADA II Grado en Ingeniero en Informática Universidad de Alcalá Curso Académico 2011/12 Curso 3º Cuatrimestre 2º GUÍA DOCENTE Nombre de la asignatura: PROGRAMACION AVANZADA 2 Código: 780026

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución