
Object-oriented Programming
Code: 104389Credits: 6
| Degree programme | Type | Course |
|---|---|---|
| Computational Mathematics and Data Analytics | FB | 1 |
Contact lecturer
- Name :
- Guillermo Torres
- Email :
- guillermo.torres@uab.cat
Teaching staff
- Enric Sala Esteva
Group languages
You can consult this information at the end of the document.
Prerequisites
There are no official prerequisites, but it is necessary to have programming skills in Python.
Objectives
The main objective is for students to acquire knowledge of Object-Oriented Design principles and Design Patterns in order to create software designs represented using UML diagrams, which will then be implemented in an object-oriented programming language.
This includes fundamental concepts such as classes, objects, methods, attributes, inheritance, composition, and encapsulation. Based on these principles, students will be introduced to Software Design Patterns, which provide reusable solutions to common problems in software development.
UML diagrams allow for a clear representation of the software’s structures and relationships, facilitating the visualisation and comparison of different designs, as well as the planning of their implementation.
Learning outcomes
- CM09 (Develop effective algorithmic solutions to computational problems in accordance with the established requirements for object-oriented programming.) Develop effective algorithmic solutions to computational problems in accordance with the established requirements for object-oriented programming.
- CM10 (Analyse the computational complexity of the algorithmic solutions to develop and implement the one that guarantees the best performance for object-oriented programming.) Analyse the computational complexity of the algorithmic solutions to develop and implement the one that guarantees the best performance for object-oriented programming.
- CM11 (Ensure the correct functioning of an algorithmic solution in accordance with the requirements of the problem to be solved for object-oriented programming.) Ensure the correct functioning of an algorithmic solution in accordance with the requirements of the problem to be solved for object-oriented programming.
- KM09 (Recognise the methods, systems and technologies specific to object-oriented programming.) Recognise the methods, systems and technologies specific to object-oriented programming.
- SM09 (Use operating systems and software commonly used in object-oriented programming.) Use operating systems and software commonly used in object-oriented programming.
- SM10 (Use algorithmic and data representation structures suitable for problem-solving in object-oriented programming.) Use algorithmic and data representation structures suitable for problem-solving in object-oriented programming.
Contents
- Object-Oriented Concepts. Introduction to the fundamental principles of object orientation, such as encapsulation, inheritance, composition, and the use of interfaces, as well as graphical representation through UML class diagrams.
- Object-Oriented Programming in Python. Use of a programming language to apply object-oriented concepts, including advanced language features.
- Object-Oriented Design Principles. Analysis of principles for structuring maintainable and scalable software, and for assigning responsibilities consistently across components.
- Design Patterns. Study of reusable solutions to common software design problems.
- Coding Style and Best Practices. Application of style conventions, code documentation, use of comments, and techniques to improve software traceability and comprehension.
- Incremental Practical Development. Progressive application of theoretical and practical content through exercises and a main project developed in phases.
Learning activities and methodology
| Title | Hours | ECTS | Learning outcomes |
|---|---|---|---|
| Practicum sessions | 13 | 0.52 | CM09, CM10, SM09 |
| Study | 50.5 | 2.02 | |
| Theory lectures | 36 | 1.44 | CM11, KM09, SM10 |
| Programming | 50.5 | 2.02 |
The course follows a project-based learning methodology (PBL), in which students progressively develop a programming project applying the principles of Object-Oriented Programming (OOP). The project is structured in milestones, which allow consolidating the content covered throughout the course, promoting meaningful, active, and practice-oriented learning.
Lecturer classes. Key concepts of the object-oriented paradigm are introduced, providing the necessary foundations to tackle the project development. These classes also include solving small design and object-oriented programming problems. Additionally, bibliographic references (books, articles, online resources) are provided to complement the face-to-face sessions. The lecture slides should not be considered the sole study resource; students are expected to actively consult the recommended materials available on the course’s virtual campus.
Practical classes. At the beginning of the course, students are organized into small working groups. During these sessions, 1) the weekly progress on the project is reviewed and technical and/or conceptual doubts are addressed, and 2) continuous evaluation, both group and individual, is carried out according to the assessment criteria defined in the practice guidelines. These sessions are not designed to develop the entire project from scratch but to monitor and evaluate the work the groups have previously advanced autonomously.
Autonomous work. Learning programming requires dedication and continuous practice. Therefore, students are expected to work independently outside the classroom by studying theoretical content, solving exercises, reviewing examples, and steadily advancing in the project development.
The virtual campus contains all the course materials as well as the detailed course planning. All written content is provided in English.
Assessment
Continuous assessment activities
| Title | Weight | Hours | ECTS | Learning outcomes |
|---|---|---|---|---|
| Theory | 50% | 0 | 0 | CM11, KM09, SM10 |
| Practicum | 50% | 0 | 0 | CM09, CM10, SM09 |
The assessment of the course is based on a continuous assessment system that combines individual and group activities, with the aim of assessing both conceptual understanding and the practical application of the theoretical-practical contents.
Calculation of the final mark (FM)
All marks are out of 10 points. The final mark is calculated according to the following algorithm:
EX = max(0.5 * (EX1 + EX2), EXR) + OPextra
PR = 0.4 * M1 + 0.4 * M2 + 0.2 * PReval
if (EX >= 4.0) and (PR >= 4.0):
FM = 0.5 * (EX + PR)
else:
FM = min(EX, PR)
To pass the course, FM >= 5 points is required.
Where:
- EX is the theory mark, which is obtained from:
- EX1 and EX2, which correspond to the first exam and the second exam, two individual written tests carried out during the course.
- EXR, which is the resit exam and may replace the average of EX1 and EX2 if it improves the mark.
- OPextra, which corresponds to the additional points obtained through optional reinforcement exercises.
- EX is out of 10 points.
- PR is the practical component mark, which is obtained from:
- M1 and M2, which are the projects assessed during the practical sessions, both in groups and individually, throughout the course.
- PReval, which is an individual assessment of the practical sessions.
- PR is out of 10 points.
Single assessment
- This course does not provide for the single assessment system.
Assessment of the practical component
- The practical component consists of projects M1 and M2, which are carried out in groups and assessed in situ during the practical sessions.
- Submission of the projects is compulsory. Failure to submit a project will be graded with a 0.
- Submissions will be made through the virtual campus. Late submissions may receive a maximum mark of 5 points.
- In case of doubts regarding authorship or individual contribution within the group, the mark will become individual, assigning the mark according to each member’s contribution.
- The practical sessions are compulsory and require in-person attendance. Attendance will be recorded throughout the course. In the event of absence, the student must provide appropriate justification. If the absence is not duly justified, the maximum mark that may be obtained for the practical component of the course will be 5 points.
- An individual assessment (PReval) will be carried out.
- These assessments cannot be retaken.
Theory assessment
- Two written tests (EX1 and EX2) will be carried out during the course.
- There is a resit exam (EXR) that allows the mark to be improved if it is higher than the average of EX1 and EX2.
- The optional reinforcement exercises (OPextra) may add additional points to the theory mark (EX) and cannot be retaken. They must be submitted through the virtual campus, and late submissions will not be accepted. The points obtained from OPextra cannot be added to an exam or to the practical component in order to reach the required minimum mark.
Other relevant aspects
- Practical work, exercises or exams from previous academic years will not be recognised.
- In case of failure to submit an exam or a part of the practical component, the mark for that part will be zero.
- The final mark will be “not assessable” if the student has not submitted any assessable activity.
- The grade of Honours (MH) will be awarded at the discretion of the teaching staff to students with a final mark higher than 9.0, taking into account all the activities carried out.
- Submission and assessment dates will be published on the virtual campus and may be modified in case of incidents, always informing students through that platform.
- For written exams, a date and place will be indicated for students to review their exam; if the student does not attend, no subsequent review will be carried out.
- Plagiarism, copying or any irregularity in assessable activities will result in a mark of zero in that activity, without the possibility of retaking it in the same academic year, and, where applicable, failing the course.
- Under no circumstances may generative artificial intelligence (AI) be used to supplant the student’s learning activity. Tasks suspected of having been generated by these techniques will be graded with a 0.
Use of AI
- Artificial intelligence tools may be used as support tools for learning, for example, to improve wording, style, clarity of expression, linguistic correctness or to obtain assistance with technical aspects. Under no circumstances may they replace and/or supplant the student’s learning activity or the acquisition of the specific knowledge of the course.
- It is not acceptable to use artificial intelligence tools to generate contents of the work that are subject to assessment. Assessable tasks/activities suspected of having been generated by an AI instead of the student will be considered copying and will be graded with a 0.
Bibliography
Basic Reading
Theoretical classes are based on a set of slides that summarise the key concepts of the course. These materials serve as a guide, and it is recommended to consult the following works for a deeper understanding and to broaden your knowledge:
Design Patterns, E. Gamma, R. Helm, R. Johnson, J. Vlissides. Pearson Education, 2003.
A classic book on object-oriented design patterns, written by the authors who introduced the concept. The original English version was published in 1995, so some examples and diagrams may feel outdated, but the fundamentals are explained very clearly.
Design Patterns Explained Simply, Alexander Shvets.
Online book: sourcemaking.com. Another related work by the same author is available at refactoring.guru.
Provides clear explanations illustrated with examples in multiple languages, including Python, C++, and Java. Ideal as a practical introduction.
Recommended Reading
Head First Design Patterns, E. Freeman & E. Robson, 2021.
A highly didactic book on design patterns that uses simple, humorous examples to explain concepts.
Python: Master the Art of Design Patterns, D. Phillips, C. Giridhar, S. Kasampalis. Packt Publishing, 2016.
A comprehensive book (over 700 pages) focused on the detailed implementation of design patterns in Python. Very useful for understanding how to apply them effectively in this language.
Mastering Object-Oriented Python, Steven F. Lott. Packt Publishing, 2014.
Offers an advanced view of the Python language, delving into key aspects of object-oriented programming. Chapters such as the one on the logging system and other language-specific topics are particularly noteworthy.
Software
- Python using the package manager Pip or Anaconda to install libraries such as NumPy and Matplotlib.
- Spyder IDE for writing and debugging Python code.
Course groups and languages
The information provided is provisional until November 30. After this date, you will be able to consult the language of each group through this link. To access the information, you will need to enter the course CODE
| Type of teaching | Group | Language | Semester | Shift |
|---|---|---|---|---|
| (TE) Theory | 1 | Spanish | second semester | morning-mixed |
| (PLAB) Practical laboratories | 1 | Catalan | second semester | morning-mixed |
| (PLAB) Practical laboratories | 2 | Catalan | second semester | morning-mixed |