Download 270086 - CAP - Conceptos Avanzados de Programación
Document related concepts
no text concepts found
Transcript
Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación Unidad responsable: 270 - FIB - Facultad de Informática de Barcelona Unidad que imparte: 723 - CS - Departamento de Ciencias de la Computación Curso: 2016 Titulación: GRADO EN INGENIERÍA INFORMÁTICA (Plan 2010). (Unidad docente Optativa) Créditos ECTS: 6 Idiomas docencia: Catalán Profesorado Responsable: - Jordi Delgado Pin (jdelgado@cs.upc.edu) Capacidades previas Los alumnos deberían tener conocimientos suficientes de estructuras de datos y algoritmos y de diseño y programación orientada a objetos. Requisitos - Pre-requisito PROP - Pre-requisito IES Competencias de la titulación a las cuales contribuye la asignatura Específicas: CES1.1. Desarrollar mantener y evaluar sistemas y servicios software complejos y/o críticos. CES1.3. Identificar, evaluar y gestionar los riesgos potenciales asociados a la construcción de software que pudiesen presentarse. CES1.7. Controlar la calidad y diseñar pruebas en la producción de software. Genéricas: G5. TRABAJO EN EQUIPO: Ser capaz de trabajar como miembro de un equipo, ya sea como un miembro más, o realizando tareas de dirección con la finalidad de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles. Metodologías docentes La docencia de la asignatura está estructurada en clases de teoría y clases de laboratorio. En las clases de teoría los profesores presentan los contenidos esenciales de la asignatura. En las clases de laboratorio se practican los contenidos de la asignatura (los presentados en clase y los adquiridos autónomamente) mediante la realización de problemas prácticos. Las clases de laboratorio serán una continuación de las clases teóricas, donde los conceptos nuevos se implementarán a medida que vayan apareciendo. Objetivos de aprendizaje de la asignatura 1.Revisar los conceptos de programación orientada a objetos de cara a asegurar una base de conocimientos común suficiente a partir de la cual proceder con el temario específico de la asignatura y conocer un lenguaje de programación dinámico orientado a objetos como Smalltalk. 2.Conocer los conceptos básicos y generales de la reflexión computacional, de manera que el estudiante sea capaz de entender cómo están implementados estos conceptos en diferentes lenguajes de programación 1/8 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación 3.Conocer cómo está implementada la reflexión computacional en Java y Smalltalk: acceso y modificación de los miembros de clases en tiempo de ejecución, creación de código en tiempo de ejecución, etc. 4.Ser capaz de desarrollar en equipo un programa de tamaño pequeño-medio que utilice técnicas de reflexión 5.Conocer las los conceptos básicos y generales de la programación orientada a aspectos, de manera que el estudiante sea capaz de entender cómo están implementados estos conceptos en diferentes lenguajes de programación 6.Conocer AspectJ, implementación para Java de la programación orientada a aspectos para profundizar y entrar en detalles de una implementación concreta de los conceptos aprendidos. 7.Conocer las los conceptos básicos y generales de la programación basada en prototipos, de manera que el estudiante sea capaz de entender cómo están implementados estos conceptos en diferentes lenguajes de programación 8.Conocer de manera suficiente un lenguaje basado en prototipos como para ser capaces de ilustrar los conceptos generales en una implementación concreta (presumiblemente este lenguaje sería Javascript o Self) 9.Conocer qué es un cierre (closure) y algunas técnicas asociadas a su utilización. Horas totales de dedicación del estudiantado Dedicación total: 150h Horas grupo grande: 30h 20.00% Horas grupo mediano: 0h 0.00% Horas grupo pequeño: 30h 20.00% Horas actividades dirigidas: 6h 4.00% Horas aprendizaje autónomo: 84h 56.00% 2/8 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación Contenidos Repaso de la programación orientada a objetos e Iniciación a Smalltalk Competencias de la titulación a las que contribuye el contenido: Descripción: Filosofía y orígenes. Encapsulación, miembros privado / (protected) / public, herencia, polimorfismo, early / late binding. Patrones. Smalltalk, aprendizaje y utilización del entorno Pharo Reflexión: Conceptos generales Competencias de la titulación a las que contribuye el contenido: Descripción: ¿Qué es la reflexión?. Tipo de reflexión: Introspección, intercesión, reificación. Implicaciones de la reflexión para un lenguaje de programación. Reflexión en programación orientada a objetos. Implementación en Java y Smalltalk de la reflexión Competencias de la titulación a las que contribuye el contenido: Descripción: Utilización de java.lang.reflect y Smalltalk. Acceso a los miembros de clases en tiempo de ejecución. Patrones y Reflexión. Construir objetos de manera reflexiva. Generación de código en tiempo de ejecución. Programación Orientada a Aspectos: Conceptos generales Competencias de la titulación a las que contribuye el contenido: Descripción: Encapsulación del código transversal (cross-cutting concerns), dinámico y estático. Puntos de unión (join points), puntos de corte (pointcuts) y aspectos. Mecanismos de weaving AspectJ: Programación Orientada a Aspectos en Java Competencias de la titulación a las que contribuye el contenido: Descripción: Implementación de los conceptos considerados en la descripción general de la programación orientada a aspectos en el contexto del lenguaje de programación Java: Puntos de unión, puntos de corte, aspectos, advices, mecanismos de weaving, etc. Programación basada en prototipos. Competencias de la titulación a las que contribuye el contenido: 3/8 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación Descripción: Clases vs. prototipos. Herencia vs. clonación. Delegación. Clausuras (closures) y técnicas asociadas a su uso. 4/8 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación Planificación de actividades Repaso de la programación orientada a objetos: Aspectos generales Dedicación: 2h Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 0h Actividades dirigidas: 0h Aprendizaje autónomo: 0h Descripción: El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor. Objetivos específicos: 1 Dedicación: 6h Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 4h Actividades dirigidas: 0h Aprendizaje autónomo: 0h Introducción a Smalltalk Descripción: El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor. Objetivos específicos: 1 Dedicación: 16h Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 2h Actividades dirigidas: 2h Aprendizaje autónomo: 10h Reflexión: Conceptos generales Descripción: El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor. Objetivos específicos: 2 Dedicación: 33h Grupo grande/Teoría: 10h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 8h Actividades dirigidas: 0h Aprendizaje autónomo: 15h Reflexión: Utilización en Java (java.lang.reflect) y Smalltalk Objetivos específicos: 1 5/8 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación Descripción: El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor. Objetivos específicos: 3, 4 Dedicación: 0h Actividades dirigidas: 0h Aprendizaje autónomo: 0h Práctica Descripción: Fecha de entrega; A determinar una vez hayan acabado las clases. Objetivos específicos: 4 Dedicación: 12h Actividades dirigidas: 2h Aprendizaje autónomo: 10h Control teoría Objetivos específicos: 2, 3 Dedicación: 16h Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 2h Actividades dirigidas: 2h Aprendizaje autónomo: 10h Programación Orientada a Aspectos: Conceptos generales Descripción: El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor. Objetivos específicos: 5 Dedicación: 29h Grupo grande/Teoría: 8h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 6h Actividades dirigidas: 0h Aprendizaje autónomo: 15h AspectJ: AOP en Java Descripción: El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor. 6/8 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación Objetivos específicos: 6 Dedicación: 24h Grupo grande/Teoría: 4h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 6h Actividades dirigidas: 0h Aprendizaje autónomo: 14h Programación basada en prototipos. Descripción: El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor. Objetivos específicos: 7, 8, 9 Dedicación: 12h Actividades dirigidas: 2h Aprendizaje autónomo: 10h Control final Objetivos específicos: 5, 6, 7, 8, 9 Sistema de calificación El método de evaluación de la asignatura consistirá en dos pruebas de carácter teórico (T1 y T2), una a mediados de curso y otra al final y una práctica de tamaño pequeño-medio (P), más la consideración otros aspectos principalmente relacionados con participación en clase (Pa) y las actividades dirigidas (AD). Entonces, el método de evaluación sería: 0.6 * Teoría + 0.35 * Practica + 0.05 * (Pa+AD) donde: Teoría: 0.4 * T1 + 0.6 * T2 Competencia transversal "Trabajo en equipo": Se evalúa usando una rúbrica simple en que el tutor de cada grupo puntúa los diferentes aspectos del trabajo en equipo de cada miembro de los grupos. 7/8 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270086 - CAP - Conceptos Avanzados de Programación Bibliografía Básica: Black, A.P.; Ducasse, S.; Nierstrasz, O.; Pollet, D.; Cassou, D.; Denker, M. Pharo by example. Square Bracket Associates, 2009. ISBN 9783952334140. Forman, I.R.; Forman, N. Java reflection in action. Manning Publications, 2005. ISBN 1932394184. Laddad, R. AspectJ in action: enterprise AOP with spring applications. 2nd ed. Manning Publications, 2010. ISBN 1933988053. Noble, J.; Taivalsaari, A.; Moore, I. (Editors). Prototype-based programming: concepts, languages, and applications. Springer, 1999. ISBN 9814021253. Complementaria: Communications of the ACM [en línea]. Disponible a: <http://dl.acm.org/citation.cfm?id=383845&CFID=482078270&CFTOKEN=35757917>. Proceedings of OOPSLA '87, ACM SIGPLAN Notices. 22(12):147--155, 1987. Tanter, E. From metaobject protocols to versatile kernels for aspect-oriented programming (PhD Thesis) [en línea]. Université de Nantes, 2004Disponible a: <http://www.emn.fr/z-info/reflex/references/etanter-phd.pdf>. Adams, B.; Haupt, M.; Lohmann, D. Proceedings of the 9th Workshop on Aspects, Components, and Patterns for Infrastructure Software (ACP4IS'10) (Technical Reports, vol. 33) [en línea]. Hasso-Plattner-Institute, Universität Potsdam, 2010Disponible a: <http://opus.kobv.de/ubp/volltexte/2010/4122/pdf/tbhpi33.pdf>. ISBN 978-3-86956-043-4. Otros recursos: Enlace web http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/rivard/rivard.html http://download.oracle.com/javase/6/docs/technotes/guides/reflection/index.html http://www.eclipse.org/aspectj/ https://developer.mozilla.org/es/JavaScript 8/8 Universitat Politècnica de Catalunya