This course intends to explain programming concepts that deepen in the use of certain constructions and structures linked to paradigms of programming that students should already know. This year, the concept of Reflection is explained, both in dynamic and static programming languages, as a natural extension of what they have learned in GRAU-PROP on Object Orientation. Also, as an extension of Object Orientation, we will see how to work with programming languages that do not have the concept of class. In addition, we explore the apparently simple concept of Control Structure, exploring the possibilities of reifying and modifying the program's execution stack, and defining and using the concept of Continuation.
Person in charge
Jordi Delgado Pin (
G5 [Avaluable] - 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.
- 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 of each Specialization
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.
- To develop, maintain and evaluate complex and/or critical software systems and services.
- To identify, evaluate and manage potential risks related to software building which could arise.
- To control the quality and design tests in the software production
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.
Learn the basics of computational reflection, so that the student is able to understand how these concepts are implemented in different programming languages
Knowing how computational reflection is implemented in Java and Smalltalk: accessing and modifying members of classes at runtime, creating code at runtime, etc..
Being able to develop a computer program of small-middle size that uses reflection techniques
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
Knowing what a closure is and some techniques associated with their use. Understanding what Continuations are and using them to implement several control structures
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 a Smalltalk environment
Reflection: General concepts
What is reflection?. Types of reflection: Introspection, intercession, reification. Implications of reflection for a programming language. Reflection in object-oriented programming.
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.
Prototype based programming
Classes vs. prototypes. Inheritance vs. delegation
Control Structures: Continuations
Continuations are the result of being able to reify and eventually modify the execution stack of a program while it is running, but from the same language. We will explore the possibilities that this offers and the associated techniques.
Review of Object Oriented Programming: Generalities
The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer. Objectives:1 Contents:
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.
Students should have enough knowledge of data structures and algorithms and object oriented programming and design.
L'assignatura GRAU-CAP serà TOTALMENT NO presencial, en el context d'un QT-2020/21 (quadrimestre de tardor del curs 2020-21) excepcional. Les classes seran asíncrones (en diferit).
CONTINGUTS: No canvien, tot i que és possible que afegeixi alguna cosa nova cap al final de curs (cada any ho faig, tot i que no modifico la guia docent).
La idea és fer les classes en forma de dos screencasts setmanals (teoria i laboratori), i les sessions de laboratori tindran exercicis a fer off-line.
S'obrirà un grup d'Slack per a l'assignatura per mantenir un contacte més proper amb els estudiants.
No canvia. Hi haurà dos examens (parcial i final) i una pràctica a fer en grups de dos persones. El pes dins la nota és l'indicat a la guia docent.
Val a dir que intentaré fer els examens PRESENCIALS, tot i que l'assignatura no ho sigui. Seràn examens com els habituals a CAP, en aules de laboratori i amb entorn segur.
El plà de contingència, considerant que l'assignatura és 100% no presencial, és innecessari. Sí que és cert que en cas de confinament forçat, els examens seran no presencials. Aquest és l'únic canvi que caldrà fer.
Where we are
B6 Building Campus Nord
C/Jordi Girona Salgado,1-3
08034 BARCELONA Spain
Tel: (+34) 93 401 70 00