Degree | Type | Year | Semester |
---|---|---|---|
2503740 Computational Mathematics and Data Analytics | FB | 1 | 2 |
There are no official prerequisites, but you need to know Python.
One of the most employed methodologies of design and programming is object-orientation. Software is organized in classes that contain methods (procedures) and attributes (data). The instances or objects of these classes send messages to each other (they make "calls" to methods of other objects) in order to achieve the desired functionality. Apart from the concept of class, three other fundamental elements are inheritance, composition and separation of public and private parts of classes. These elements are therefore necessary for OO programming, but not sufficient: you need to know how to use them to reach solutions that are easily extendable in the future. There are a number of design principles or heuristics that tell us how to use these elements for this goal. And over them, design patterns are being built, which are solutions at the OO design level to recurring problems, which often appear when solving seemingly independent problems. In this subject, the OO concepts are introduced and practiced as well as design principles and patterns.
Learning revolves around a project --- the practicum --- in which it is necessary to apply all the topics explained in order to design and implement a software application based on a statement that plays the role of a document of requirements. The programming languages used in the course (and the practicum) will be Python, but we will use also Java for some exercises because it better supports the concepts of object orientation.
1. Object orientation concepts: encapsulation, inheritance, composition, interface. UML class diagrams
2. Object-oriented programming in Python3 and Java
3. Assignment of responsibilities: GRASP patterns
4. General principles of object-oriented design
5. Design patterns: creational, structural, behavioral
6. Coding style, assertions and logging messages
As stated in the objectives, the subject follows a learning methodology based on the development of a project. Its concrete implementation with regard to the use of class hours is as follows:
- Theory classes. In them the teacher introduces the theoretical contents and gives useful references (books, articles, web pages) so that the student can then continue their learning, as well as develop the proposed project. The transparencies used in these classes should not be taken as the sole source of study. It is necessary to study the recommended books, and the articles, chapters of open access books and others, available on the web page of the subject. In these classes we will also solve small problems, design and / or OO programming in Java and Python.
- Practical sessions. The students will have formed at the beginning of the course groups of 3 students. In these sessions students come to 1) 'pass on accounts' with the teacher of the work done each week of the project and resolve doubts, and 2) to be evaluated continuously, in accordance with the scale in the statement of practice Therefore, the practice * no * is done only during these sessions but requires a previous job.
All the materials of the subject along with their detailed planning will be found on the virtual campus or be on the web page that will be announced. Most of these materials are in English.
Title | Hours | ECTS | Learning Outcomes |
---|---|---|---|
Type: Directed | |||
Practicum sessions | 75 | 3 | 7, 14, 11 |
Theory lectures | 75 | 3 | 2, 9, 1, 4, 5 |
There is a group assessment part and one individual assessment. The note of the first (PR) corresponds to the practicum. The second (EX) of the average of two exams during the term (EX1, EX2), or a retake exam (EXR1, EXR2).
The algorithm for calculating the final mark (FM) is the following (all marks over 10):
EX = 0.5 * (max (EX1 + EXR1), max (EX2, EXR2))
if (EX> = 4.0) and (PR> = 4.0):
FM = (EX + PR) /2.0
else:
FM = min (EX, PR)
Optionally, we will propose some exercises and small problems that will add points to EX1, EX2 and the corresponding retake exams.
If you do not deliver an exam or practice it, the mark in this part is zero. There is no retake for the practicum. The final grade will be "non-evaluable" if no exam or practicum has been delivered.
One thing that we want to ensure through the different evaluations is that each member of the group has really contributed to the practice in the same way as the others. Therefore, if, as a result of the questions the teacher makes during the project sessions or written test, we have evidences/hints that this does not happen, then the practicum mark will be individual: we will evaluate separately the part of the project that each member has done.
Notwithstanding other disciplinary measures that are deemed appropriate, and in accordance with the current academic regulations, the irregularities committed by the student who can lead to a variation of the qualification of an act of self- evaluation. Therefore, plagiarizing, copying or letting copying the practice or any other evaluation activity will imply fail with a zero and can not be recovered in the same academic year. If this activity has a minimum associated mark, then the student won't pass the course.
Title | Weighting | Hours | ECTS | Learning Outcomes |
---|---|---|---|---|
Exams | 50% | 0 | 0 | 2, 9, 1, 8, 7, 6, 4, 5 |
Practicum | 50% | 0 | 0 | 12, 10, 9, 1, 7, 4, 14, 3, 11, 13 |
Python: master the art of design patterns. D. Phillips, C. Giridhar, S. Kasampalis. Packt Publishing, 2016.
Mastering object-oriented Python. Steven F. Lott. Packt publishing, 2014.
Head first object oriented analysis and design. B.D. McLaughlin, G. Pollice, D. West. O'Reilly, 2007.
Design patterns explained simply. Alexander Shvets. https://sourcemaking.com/design-patterns-ebook.
Head first design patterns. E. Freeman, E. Freeman, K. Sierra, B. Bates. O'Reilly, 2004.
Clean code: a handbook of agile software craftmanship. R.C. Martin. Prentice Hall, 2008.