Advanced Programming Concepts

You are here

Credits
6
Types
Specialization complementary (Software Engineering)
Requirements
  • Prerequisite: IES
  • Prerequisite: PROP
Department
CS
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.

Teachers

Person in charge

  • Jordi Delgado Pin ( )

Weekly hours

Theory
2
Problems
0
Laboratory
2
Guided learning
0.4
Autonomous learning
5.6

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 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.
    • 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

Objectives

  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: CES1.1, CES1.3, CES1.7,
  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: CES1.1, CES1.3, CES1.7,
  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: CES1.1, CES1.3, CES1.7,
  4. Being able to develop a computer program of small-middle size that uses reflection techniques
    Related competences: CES1.1, G5.2, CES1.7,
  5. 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: CES1.1, CES1.3, CES1.7,
  6. Learn a language based on prototypes so that the student is able to get the general concepts in a concrete implementation (JavaScript)
    Related competences: CES1.1, CES1.3,
  7. Knowing what a closure is and some techniques associated with their use. Understanding what Continuations are and using them to implement several control structures
    Related competences: CES1.1, CES1.3,

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 a Smalltalk 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. Prototype based programming
    Classes vs. prototypes. Inheritance vs. delegation
  5. 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.

Activities

Activity Evaluation act


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:
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
0h

Introduction to Smalltalk

The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.
Objectives: 1
Contents:
Theory
6h
Problems
0h
Laboratory
6h
Guided learning
0h
Autonomous learning
6h

Reflection: General concepts

The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.
Objectives: 2
Contents:
Theory
2h
Problems
0h
Laboratory
2h
Guided learning
2h
Autonomous learning
10h

Reflection in Java (java.lang.reflect) and Smalltalk

The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.
Objectives: 3 4
Contents:
Theory
8h
Problems
0h
Laboratory
8h
Guided learning
0h
Autonomous learning
20h

Practical exercise

Submission date: End of semester.
Objectives: 4
Week: 15
Type: lab exam
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
0h

Theory test


Objectives: 2 3
Week: 8
Type: lab exam
Theory
0h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
10h

Prototype based programming

The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.
Objectives: 5 6 7
Contents:
Theory
6h
Problems
0h
Laboratory
6h
Guided learning
0h
Autonomous learning
14h

Continuations

The student should pay attention to the lecture and he/she should work through the exercises suggested by the lecturer.
Objectives: 7
Contents:
Theory
6h
Problems
0h
Laboratory
6h
Guided learning
2h
Autonomous learning
14h

Final test


Objectives: 5 6 7
Week: 15 (Outside class hours)
Type: final exam
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
2h
Autonomous learning
10h

Teaching methodology

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.

Evaluation methodology

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 (Practice).

Then, the evaluation method would be:
0.6 * Theory + 0.4*Practice
where:
Theory: 0.5 * T1 + 0.5 * 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.

Bibliography

Basic:

Complementary:

Web links

Previous capacities

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