Curricular Unit:Code:
Programming Languages II1093LPR2
2UndergraduateComputer Systems Engineering7 ects
Learning Period:Language of Instruction:Total Hours:
Spring SemesterPortuguese/English91
Learning Outcomes of the Curricular Unit:
This course unit aims to enable students to understand and use the object-oriented programming (OOP) concepts, and apply them in Java. More specifically:
• Master the concepts and characteristics of object-oriented programming, applying them to the concrete implementation of classes, interfaces, inheritance and polymorphism
• Possess abstraction capacities for the elaboration of object-oriented solutions, using UML class diagrams
• Use fluently data types, operators and expressions, flow control and data collections to interpret and implement UML class diagrams
• Understand, interpret and identify errors in compiling and executing object-oriented programs in Java
• Master the techniques and methods of structuring and developing object-oriented applications/projects in Java
• Design and implement graphical user interfaces (GUI) using standard Java packages
• Properly structure and manipulate persistent information storage in Java
• Create and use data structures using generics
1. Introduction to OOP in Java: design of OO software, classes vs objects, messages, inheritance and polymorphism
2. CASE tools to support UML-based methodologies (class diagrams and Java implementation)
3. Introduction to the Java programming language: classes, data types, attributes, methods - polymorphism (overload and override), encapsulation, operators, flow control, arrays and vectors, contracts and services (interfaces), class inheritance (extends) and interfaces (implements)
4. Graphical interfaces using standard models and packages in Java: hierarchy of graphic components, container components, graphic components, structure managers (layout and XML files) and event programming
5. Handling errors and exceptions
6. Manipulation of files (binaries, objects and text)
7. Creation and use of generics
Demonstration of the Syllabus Coherence with the Curricular Unit's Objectives:
The syllabus covers the intended objectives, as it is organized into modules that specifically address the concepts of object-oriented programming in Java and its use for solving concrete problems. The basic concepts are reviewed in modules 1, 2 and 3 (cf. classes - attributes, constructors and methods, interfaces, data types, flow control, arrays and collections). The most advanced concepts are covered in modules 4, 5, 6 and 7 (cf. graphical user interfaces, exception handling, information persistency and generics). The theoretical concepts associated with each theme are addressed in all modules and their application demonstrated with concrete examples. The individual resolution of exercises in each module is also encouraged.
Teaching Methodologies (Including Evaluation):
The contents are introduced and exposed in the theoretical-practical classes (TP), typically using simple and illustrative examples of application to concrete and realistic problems. This methodology is complemented by the proposal of practical exercises, either for classroom resolution or for individual homework resolution. The laboratory-practical classes (PL) follow the pace of TP classes with the proposal and resolution of exercises appropriate to each module, complementing the effort of TP classes.
Students typically install one of the most commonly used IDEs in the C development community (e.g. IntelliJ, Netbeans) and in which they create a project that is organized to accompany the entire course unit and within which they create and integrate the exercises they develop.
The evaluation comprises two components TP and PL with the following percentages:
TP (25% Test 1 + 45% Test 2) + PL (30% Project)
Demonstration of the Coherence between the Teaching Methodologies and the Learning Outcomes:
The teaching methodology focuses on understanding the object-oriented programming concepts supported by the syntax and semantic of the programming language. These concepts are applied to the resolution of concrete and real problems. The proposed exercises are aimed at understanding the mechanisms available in the programming language, applied in the structuring and implementing object-oriented programming solutions. The recurring resolution of exercises aims to stimulate the application of knowledge regarding the programming mechanisms. This practice aims also to consolidate mastery over the entire object-oriented development process, i.e., the design, implementation and testing of class diagrams applied to concrete problems.
1. Eckel, Bruce, Thinking in Java, 4th Ed., Prentice Hall, 2006.
2. Paul Deitel, Harvey Deitel, Java How to Program, Early Objects, 11th Ed., 2018.
Lecturer (* Responsible):
João Viana (
Rui Silva Moreira (