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 ([email protected])
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