Go to:
Esta página em português Ajuda Autenticar-se
Formação regular da Biblioteca |fevereiro a maio
You are here: Start > EIC0111

Site map
Edifício A (Administração) Edifício B (Aulas) - Bloco I Edifício B (Aulas) - Bloco II Edifício B (Aulas) - Bloco III Edifício B (Aulas) - Bloco IV Edifício C (Biblioteca) Edifício D (CICA) Edifício E (Química) Edifício F (Minas e Metalurgia) Edifício F (Minas e Metalurgia) Edifício G (Civil) Edifício H (Civil) Edifício I (Electrotecnia) Edifício J (Electrotecnia) Edifício K (Pavilhão FCNAUP) Edifício L (Mecânica) Edifício M (Mecânica) Edifício N (Garagem) Edifício O (Cafetaria) Edifício P (Cantina) Edifício Q (Central de Gases) Edifício R (Laboratório de Engenharia do Ambiente) Edifício S (INESC) Edifício T (Torre do INEGI) Edifício U (Nave do INEGI) Edifício X (Associação de Estudantes)

Object Oriented Programming Laboratory

Code: EIC0111     Acronym: LPOO

Classification Keyword
OFICIAL Programming

Instance: 2018/2019 - 2S Ícone do Moodle

Active? Yes
Web Page: https://web.fe.up.pt/~arestivo/page/courses/2019/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 172 Syllabus since 2009/2010 2 - 6 70 162

Teaching Staff - Responsibilities

Teacher Responsibility
André Monteiro de Oliveira Restivo
Mais informaçõesLast updated on 2019-02-11.

Fields changed: Teaching methods and learning activities, Componentes de Avaliação e Ocupação, Programa, Fórmula de cálculo da classificação final

Teaching language

Suitable for English-speaking students


  • Develop and enhance object-oriented programming skills, using a modern object-oriented programming language (Java), representative of the languages used for developing application software.

  • Developing object-oriented design skills, employing UML, and upholding good design principles and patterns. 

  • Learn to develop applications with graphical user interfaces (GUI) and usage of large software libraries. 

  • Acquire the habit of following good practices in software development (iterative development, unit testing, debugging, SCV, refactoring, pair programming, etc.). 


Learning outcomes and competences

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

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

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

  • To be able to use patterns and frameworks.


Working method


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

Knowledge of Object-Oriented programming in C++



  • The Java language: elements of language, differences from C++, new features of Java 8 (lambda expressions, etc.).
  • Unit testing and test-driven development with JUnit, test coveraga analysis tools and mutation testing tools.
  • Java libraries (Java API): overview, collections, graphical user interfaces (SWING) and input / output.
  • Agile Design and SOLID principles. Code quality metrics: assessment and applicability.
  • Object-oriented design with UML: principles of object-oriented design; class diagrams, sequence diagrams and state diagrams; model driven development.
  • Design patterns.
  • Refactoring and code smells.
  • Introduction to multithreading, remote method invocation and animations in Java.
  • Tools for dynamic program analysis (debugging, profiling).
  • Reflection, run-time type information and meta-programming. 
  • Integrated project.


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 exposition and discussion of program topics, more concentrated at the beginning of the semester. 
Hands-on lab with exercises and the iterative development of one project in object-oriented technologies, in groups of two students: 

  • a first group of exercises identical for all groups, to be held in the first half of the semester; 
  • a second "integrated project", with separate subjects for different groups, to be held in the second half of the semester. 

Individual computer based programming test, in the middle of the semester. 

Individual computer based (multiple choice) test, in the end of the semester. 



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

Assessment components and their weights:

  • 20% - individual computer based programming test;
  • 5% - pratical class participation;
  • 55% - delivery of the integrated project.
  • 20% - individual computer base multiple-choice test.

All components have a minimum grade of 40%.

The delivery of the integrated project is evaluatead as:

  • 10% - intermediary report
  • 30% - final report
  • 60% - delivered product

The final classification cannot exceed by more than 3 points the classification obtained in the mini-tests (weighted average) rounded to the nearest integer.

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-2019 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2019-05-22 at 22:22:16