Titular Professors
Programming Methodology and Technology
Goal.1 - Demonstrates knowledge of the object-oriented paradigm and all its characteristics.
Classes, Objects and Messages.
Encapsulation and Abstraction.
Inheritance.
Polymorphism.
Goal.2 - Demonstrates knowledge of a real and actual object-oriented language.
Introduction to Java.
Object Orientation in Java.
Inheritance in Java.
Exception Management.
Collections, Generics and other tools.
UI implementation.
Concurrency.
Goal.3 - Demonstrates knowledge of using a real development environment.
Diagram modeling tools.
Development environments (IDE).
Version control systems.
Project management tools.
Goal.4 - Demonstrates the ability to design software from specific specifications.
Class diagrams in UML.
Class, object and message design.
Encapsulation vs Visibility.
Relationships between classes.
Goal.5 - Demonstrates knowledge to use software design patterns.
Responsibility-driven design.
Layered architecture.
Model-View-Controller pattern.
Object Orientation and Data Persistence.
Goal.6 - Demonstrates the ability to work in a team.
Team communication tools.
Version control systems.
Project management tools.
Introduction to Agile development.
The general descriptors of the subject contents are:
1. Analysis, design and object-oriented programming.
2. Class diagram (UML).
3. Linear data structures.
4. Design patterns (GRASP, GOF).
The subject is oriented so that the student takes an active part in his own learning. The teaching methodology is designed so that the subject is dynamic and participatory. The master classes are combined with exercises and activities in class, as well as practices guided by the teachers of the subject.
The subject clearly differentiates the teaching methodology in two semesters. In the first semester, the foundations of the paradigm of object orientation and Java programming are achieved. The teaching orientation of this semester is mostly with master classes, exercises of continuous evaluation and projects. In the second semester, the subject focuses on project-based learning methodology. The realization of an almost real software development project consolidates the knowledge gained during the first semester.
The subject evaluation system will be divided into two semesters.
During the first semester, students will have to progressively develop, under the guidance of the faculty, a project that will aim to consolidate the concepts that represent the foundations of the object-oriented paradigm.
On the other hand, during the second semester, students will have to carry out a group project in which they will have to demonstrate that they can put into practice everything they have learned during the first semester in the implementation of a larger project.
To pass the subject, the student must pass both semesters separately.
The first-semester grade will consist of a project made in pairs that will be delivered in phases. Each phase will have to be passed separately and a phase cannot be evaluated until all previous phases have been passed.
The second-semester grade will be a project carried out in teams of five (5) people. The final grade will be calculated from the project's grade and weighted by the peer review carried out by the group's members and the mentoring grade determined by the faculty.
[1] C.S.Horstman and G.Cornell, Core Java 2, Vol I. Fundamentos, Septima edición, Prentice Hall, 2006.
[2] K.Arnold, JGosling and D.Holmes, The Java programming language, Boston : Addison-Wesley, 2000
[3] M.Fowler, UML Distilled Third Edition. A brief guide to the standard object modeling language, Addison-Wesley, 2003.
[4] R.Miles and K.Hamilton, Learning UML 2.0, O'Reilly Media Inc, 2006.
[5] C.Larman, Applying UML and patterns : an introduction to object-oriented analysis and design, Prentice Hall PTR, 1998
[6] E.Gamma, R.Helm, R.Johnson and J.Vlissides, Design patterns: elements of reusable object-oriented software, Addison-Wesley Longman Publishing Co., 1995
[7] J.Cooper, Java Design Patterns, Addison Wesley, 2000
[8] D.Lea, Concurrent programming in Java: design principles and patterns, Addison-Wesley, 2000
[9] M.Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 2018
[10] R.Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Pearson, 2008
[11] K.Sierra and B.Bates, Head First Java, O'Reilly Media, 2005
[12] E.Freeman, B.Bates, K.Sierra and E.Robson, Head First Design Patterns: A Brain-Friendly Guide, O'Reilly Media, 2004