Saltar al contingut Saltar a navegacio
Map
  • Home
  • Information
  • Contact
  • Map

Advanced Programming Concepts ( CAP )

Change to no-tab version

ECTS Credits Department Type Requirements Teaching Languages
6.0 LSI
  • Specialization Complement (Software Engineering)
Pre-requisit IES
Pre-requisit PROP
  • Catalan   
Center where the class is given: Facultat d'Informàtica de Barcelona (FIB) - Universitat Politècnica de Catalunya - BarcelonaTECH

Professors

Person in charge:   Jordi Delgado Pin (jdelgado@lsi.upc.edu)
Other: Alberto Rubio Gimeno (albert@lsi.upc.edu)
Weekly hours dedication T : 2.0 P : 0.0 L : 2.0 AA : 5.6 AD : 0.4

Generic Competences

Transversal Competences

  • TEAMWORK

  • G5 - To be capable to work as a team member, being just one more member or performing management tasks, with the finality of contributing to develop projects in a pragmatic way and with responsibility sense; to assume compromises taking into account the available resources.
  • G5.2 - To plan the objectives, operation rules, responsibilities, agenda and review procedure of the work. To identify conflicts, negotiate and solve them in a effective way. To adapt oneself to different kinds of groups (big/small, technical/mixed, same space/at distance). To interact efficiently and promote the participation with other group members.


Technical Competences

  • SOFTWARE ENGINEERING SPECIALIZATION

  • CES1 - To develop, maintain and evaluate software services and systems which satisfy all user requirements, which behave reliably and efficiently, with a reasonable development and maintenance and which satisfy the rules for quality applying the theories, principles, methods and practices of Software Engineering.
  • CES1.1 - To develop, maintain and evaluate complex and/or critical software systems and services.
  • CES1.3 - To identify, evaluate and manage potential risks related to software building which could arise.
  • CES1.7 - To control the quality and design tests in the software production

Goals

  1. Review the concepts of object-oriented programming in order to ensure a common knowledge base from which to proceed with the specific subject matter of the course and to know a dynamic and object oriented programming language such as Smalltalk.

    Related Competences
  2. Learn the basics of computational reflection, so that the student is able to understand how these concepts are implemented in different programming languages

    Related Competences
  3. Knowing how computational reflection is implemented in Java and Smalltalk: accessing and modifying members of classes at runtime, creating code at runtime, etc..

    Related Competences
  4. Being able to develop a computer program of small-middle size that uses reflection techniques

    Related Competences
  5. Learn the basic concepts of aspect oriented programming, so that the student is able to understand how these concepts are implemented in different programming languages

    Related Competences
  6. Learn AspectJ and Phantom, two implementations of AOP for Java and Smalltalk resp. and delve into details of a specific implementation of the concepts learned.

    Related Competences
  7. Learn the basic concepts of prototype based programming, so that the student is able to understand how these concepts are implemented in different programming languages

    Related Competences
  8. Learn a language based on prototypes so that the student is able to get the general concepts in a concrete implementation (presumably this would be JavaScript or Self)

    Related Competences
  9. Knowing what a closure is and some techniques associated with their use.

    Related Competences

Contents

1. Review of object oriented programming and Introduction to Smalltalk

Philosophy and origins. Encapsulation, members private / (protected) / public, inheritance, polymorphism, early / late binding. Patterns. Smalltalk, learning the language and the Pharo environment.

2. Reflection: General concepts

What is reflection?. Types of reflection: Introspection, intercession, reification. Implications of reflection for a programming language. Reflection in object-oriented programming.

3. Reflection in Java and Smalltalk

Using java.lang.reflect and Smalltalk. Access to classes members at runtime. Patterns and Reflection. Creating reflective objects. Code Generation at runtime.

4. Aspect Oriented Programming: General concepts

Encapsulation of cross-cutting concerns, dynamic and static. Join points, pointcuts and aspects. Weaving mechanisms

5. AspectJ and Phantom: AOP in Java and Smalltalk

Implementation of the concepts considered in the general description of AOP in the context of the Java and Smalltalk programming languages: Join points, pointcuts, aspects, advices, weaving mechanisms, etc..

6. Prototype based programming

Classes vs. prototypes. Inheritance vs. cloning. Delegation. Closures and techniques associated with their use.

Activities

Legend

ActivityEvaluative Activity T P L AA AD
Activity Evaluative Activity Theory hours Problem hours Lab hours Independent Learning Hours Directed Learning Hours

Review of Object Oriented Programming: Generalities T      P      L      AA    AD    Total 
2.0 0.0 0.0 0.0 0.0 2.0

Alumn: The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.

Goals:

Contents
  • 1. Review of object oriented programming and Introduction to Smalltalk
Introduction to Smalltalk T      P      L      AA    AD    Total 
2.0 0.0 4.0 0.0 0.0 6.0

Alumn: The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.

Goals:

Contents
  • 1. Review of object oriented programming and Introduction to Smalltalk
Reflection: General concepts T      P      L      AA    AD    Total 
2.0 0.0 2.0 10.0 2.0 16.0

Alumn: The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.

Goals:

Contents
  • 2. Reflection: General concepts
Reflection in Java (java.lang.reflect) and Smalltalk T      P      L      AA    AD    Total 
10.0 0.0 8.0 15.0 0.0 33.0

Alumn: The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.

Goals:

Contents
  • 3. Reflection in Java and Smalltalk
Practical exercise T      P      L      AA    AD    Total 
- - 0.0 0.0 - 0.0

Submission date: End of semester.

Setmana 15-18
Tipus Examen: Laboratory exam

Goals:
Theory test T      P      L      AA    AD    Total 
- - 2.0 10.0 - 12.0

Setmana 8
Tipus Examen: Laboratory exam

Goals:
Aspect Oriented Programming: General concepts T      P      L      AA    AD    Total 
2.0 0.0 2.0 10.0 2.0 16.0

Alumn: The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.

Goals:

Contents
  • 4. Aspect Oriented Programming: General concepts
AspectJ: AOP in Java and Phantom: AOP in Smalltalk T      P      L      AA    AD    Total 
8.0 0.0 6.0 15.0 0.0 29.0

Alumn: The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.

Goals:

Contents
  • 5. AspectJ and Phantom: AOP in Java and Smalltalk
Prototype based programming T      P      L      AA    AD    Total 
4.0 0.0 6.0 14.0 0.0 24.0

Alumn: The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.

Goals:

Contents
  • 6. Prototype based programming
Final test T      P      L      AA    AD    Total 
- - - 10.0 2.0 12.0

Setmana 15-18
Tipus Examen: Final exam

Goals:
Total per type T      P      L      AA    AD    Total 
30.0 0.0 30.0 84.0 6.0 150.0

Teaching methods

Teaching the course is structured in lectures and laboratory sessions.

Teachers will use lectures to introduce the essential contents of the course. In the laboratory sessions the contents of the course will be brought to the computer by carrying out practical problems. The laboratory classes will be a continuation of the lectures, where new concepts will be implemented as they appear in lectures.

Assessment

Evaluation type

The subject is avaluated in exam period

Grading the course will consist of two theoretical tests (T1 and T2), one mid-course and the other at the end, and one medium-sized practical work (P), plus some consideration of other aspects mainly related to participation (Pa) in class and directed activities (AD).

Then, the evaluation method would be:
0.6 * Theory + Practice * 0.25 + 0.1 * (Pa+AD) + 0.05 (teamwork)
where:
Theory: 0.4 * T1 + 0.6 * T2

Teamwork:

Evaluated using a simple rubric that each group tutor group uses
to rank different aspects of teamwork of every member of the group.

Generic competences weight in the evaluation specific part

  • 5.0 % - To plan the objectives, operation rules, responsibilities, agenda and review procedure of the work. To identify conflicts, negotiate and solve them in a effective way. To adapt oneself to different kinds of groups (big/small, technical/mixed, same space/at distance). To interact efficiently and promote the participation with other group members.

Basics bibliography

  • Black, Andrew P.; Ducasse, Stéphane; Nierstrasz, Oscar; Pollet, Damien; Cassou, Damien; Denker, Marcus , Pharo by Example , Square Bracket Associates , 2010 , ISBN:9783952334140.
  • http://pharobyexample.org/

  • Forman, Nate & Forman, Ira , Java Reflection in Action , Manning Publications , 2004 , ISBN:1932394184.


  • Laddad, Ramnivas , AspectJ in Action: Enterprise AOP with Spring Applications (2nd. ed.) , Manning Publications , 2009 , ISBN:1933988053.


  • Fabry, Johan; Galdames, Daniel , PHANtom: a modern aspect language for Pharo Smalltalk , IWST '11 Proceedings of the International Workshop on Smalltalk Technologies , 2011 , ISBN:978-1-4503-1050-5.
  • http://dx.doi.org/10.1145/2166929.2166939

  • Noble, James; Taivalsaari, Antero; Moore, Ivan (Editors) , Prototype-Based Programming: Concepts, Languages and Applications , Springer Verlag , 1999 , ISBN:9814021253.


Complementary bibliography

Links

  1. Obrir nova finestra http://download.oracle.com/javase/6/docs/technotes/guides/reflection/index.html
    Reflexió a la documentació original d'Oracle.
  2. Obrir nova finestra http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/rivard/rivard.html
    Article "Smalltalk: a Reflective Language" de Fred Rivard, aparegut a Reflection'96 - San Francisco - CA (edited by Gregor Kiczales)
  3. Obrir nova finestra http://www.eclipse.org/aspectj/
    Web d'AspectJ.
  4. Obrir nova finestra http://pleiad.dcc.uchile.cl/research/software/phantom
    Web de Phantom, el sistema d'aspectes implementat a Pharo (Smalltalk)
  5. Obrir nova finestra https://developer.mozilla.org/es/JavaScript
    Javascript, documentació original de Mozilla.

Prior learning

Students should have enough knowledge of data structures and algorithms and object oriented programming and design.

Compartir

 
logo FIB © Barcelona school of informatics - Contact - RSS