Object Oriented Programming Laboratory
Instance: 2018/2019 - 2S
Cycles of Study/Courses
||No. of Students
||Syllabus since 2009/2010
Teaching Staff - Responsibilities
Teaching - Hours
Last 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
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.
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.
- 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.
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
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.
Distributed evaluation without final exam
Amount of time allocated to each course unit
|Frequência das aulas
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.
Frequency of the course the following year.