Go to:
Logótipo
You are here: Start > EIC0111

Object Oriented Programming Laboratory

Code: EIC0111     Acronym: LPOO

Keywords
Classification Keyword
OFICIAL Programming

Instance: 2020/2021 - 2S Ícone do Moodle Ícone  do Teams

Active? Yes
Web Page: https://web.fe.up.pt/~arestivo/page/courses/lpoo/
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Master in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
MIEIC 182 Syllabus since 2009/2010 2 - 6 70 162

Teaching language

Suitable for English-speaking students

Objectives

This curricular unit is intended for students to develop application design skills using the object-oriented paradigm. Students who pass the course should be able to:

  1. Use Git as a version control system;
  2. Use the Java language as an object-oriented language;
  3. Design unit tests using JUnit;
  4. Apply SOLID principles in the design of applications and understand their importance;
  5. Apply design patterns to solve design problems in the development of applications;
  6. Identify code smells in object-oriented code;
  7. Use refactoring techniques in order to improve non-functional attributes and solve code smells;
  8. Apply the MVC architectural pattern in the design of event-driven applications.

Learning outcomes and competences


  1. To be able to develop (design, code, document, analyze, test and maintain) object-oriented programs with UML and Java;

  2. To be able to use tools to support the various phases of program development and maintenance;

  3. To be able to design and develop maintainable, "future-proof" software;

  4. To be able to use patterns and frameworks.


 

Working method

Presencial

Pre-requirements (prior knowledge) and co-requirements (common knowledge)

Knowledge of Object-Oriented programming in C++.

Program


  1. A brief introduction to Git: local repositories, remotes, branches, and workflows;

  2. Dependency management using Gradle;

  3. The Java language: Type, literals, and variables; Control structures; Classes and objects; Collections; Generic types; Threads and synchronization; Input and output; Graphical interfaces using Swing;

  4. Principles of object-oriented programming: data abstraction, polymorphism, inheritance, and encapsulation; composition over inheritance as a way to achieve polymorphism;

  5. SOLID principles: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion;

  6. Unit testing using JUnit: Mocks and Stubs using Mockito; Coverage and mutation-testing;  

  7. UML diagrams: class, sequence and communication diagrams;

  8. Code smells and refactoring techniques;

  9. Design patterns: Factory-Method, Command, Composite, Observer, Strategy, Abstract Factory, State, Adapter, Decorator and Singleton;

  10. The Model-View-Controller architectural pattern.

Mandatory literature

Bruce Eckel; Thinking in Java. ISBN: 0-13-027363-5
Russ Miles and Kim Hamilton; Learning UML 2.0. ISBN: 978-0-596-00982-3

Complementary Bibliography

Kent Beck; Test-driven development. ISBN: 978-0-32-114653-3
Erich Gamma... [et al.]; Design patterns. ISBN: 0-201-63361-2
Martin Fowler ; with contributions by kent Beck... [et al.]; Refactoring. ISBN: 0-201-48567-2
Robert C. Martin; Agile Software Development: Principles, Patterns and Practices, Prentice-Hall, 2003. ISBN: 0-13-597444-5
Joost Visser; Building Maintainable Software, O'Reilly, 2015. ISBN: 978-1-491-94434-9

Teaching methods and learning activities

Theoretical classes for the recitation and discussion of the program topics;

Practical classes in the laboratory:


  1. In the first part (7 weeks) students will solve exercises that cover the following syllabus: Git, Java, unit testing, SOLID principles, design patterns, code smells and refactoring;

  2. In the second part (6 weeks) students will develop a small integrative project.

Software

IntelliJ

Evaluation Type

Distributed evaluation without final exam

Assessment Components

Designation Weight (%)
Participação presencial 5,00
Teste 40,00
Trabalho laboratorial 55,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Estudo autónomo 30,00
Frequência das aulas 70,00
Trabalho laboratorial 62,00
Total: 162,00

Eligibility for exams

Students have to actively participate in the development of the project. Besides they cannot miss more classes than allowed by the rules.

Calculation formula of final grade

Evaluation Formula:

  1. 5% - participation in practical classes;
  2. 20% - individual computer programming practical test;
  3. 55% - completion of the integration project (groups of 2 elements);
  4. 20% - individual multiple choice computer test.
All components have a minimum grade of 40%.

The integrated project classification consists of:

  1. 10% - intermediate report
  2. 30% - final report
  3. 60% - project code


Due to COVID-19, the practical test and the individual test will be carried out simultaneously during the exam period. The duration of this joint test will be 1h30. The weights of each component will not change.

Special assessment (TE, DA, ...)

All components are mandatory for all students. Students excused from attendance at school (student workers, etc..) should present the work on the same dates of the remaining students and should regularly meet their teachers to show the progress of their work.

Classification improvement

Frequency of the course the following year.

Recommend this page Top
Copyright 1996-2025 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2025-06-22 at 14:49:55 | Acceptable Use Policy | Data Protection Policy | Complaint Portal