Object Oriented Programming Laboratory
Keywords |
Classification |
Keyword |
OFICIAL |
Programming |
Instance: 2011/2012 - 2S
Cycles of Study/Courses
Acronym |
No. of Students |
Study Plan |
Curricular Years |
Credits UCN |
Credits ECTS |
Contact hours |
Total Time |
MIEIC |
108 |
Syllabus since 2009/2010 |
2 |
- |
6 |
70 |
162 |
Teaching language
Portuguese
Objectives
1 - BACKGROUND
Object-oriented programming languages are prevalent today. In previous curricular units, students learn an object-oriented language (C++) more suited for developing so called system software or software with stringent constraints in terms of execution efficiency. However, for developing so called application software, higher-level object-oriented languages, such as Java and C #, are more advantageous and more used today, by the greater ease and speed of development they provide, for the large number of libraries they offer, among other features.
Moreover, from a certain level of program complexity, the object-oriented design skills become more important than the mere coding skills in a specific language. It thus becomes important to know notations that can be used to document design decisions at a high level of abstraction (UML), as well as design patterns which incorporate the growing body of knowledge of good solutions for recurring problems that arise in object-oriented software design.
2 - SPECIFIC OBJECTIVES
- Develop and deepen the skills of object-oriented programming, in a modern object-oriented programming language (Java), representative of the languages used for developing application software.
- Developing object-oriented design skills, employing UML and design patterns.
- Learn to develop applications with graphical user interfaces (GUI) and large software libraries.
- Acquire the habit of following good practices in software development (iterative development, unit testing, refactoring, pair programming, etc.).
3 – PREVIOUS KNOWLEDGE
Knowledge of object oriented programming in C++.
4 - PERCENTAGE DISTRIBUTION
Scientific Component: 50%
Technological Component: 50%
5 - LEARNING OUTCOMES
At the end of the course, students should:
- be able to develop (design, code, document, analyze, test and maintain) object-oriented programs with UML and Java;
- be able to use tools to support the various phases of program development and maintenance:
- be able to use patterns and frameworks.
Program
The Java language: elements of language and differences from C++.
Unit testing and test-driven development with JUnit.
Java libraries (Java API): overview, collections, graphical user interfaces and input / output.
Object-oriented design with UML (Unified Modeling Language): principles of object-oriented design, class diagrams, sequence diagrams, state diagrams, model driven development, examples.
Design patterns.
Refactoring.
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.
Design by contract.
Other object-oriented languages: C# and Ruby.
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
Teaching methods and learning activities
Theoretical exposition and discussion of program topics, more concentrated at the beginning of the semester.
Hands-on lab for the iterative development of two projects in object-oriented technologies, in groups of two students:
- a first "guided project" 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, possibly in coordination with other courses the same semester.
Individual computer based programming test, in the middle of the semester.
Individual computer based (multiple choice) test, in the end of the semester.
Software
Enterprise Architect
Eclipse
Evaluation Type
Distributed evaluation without final exam
Assessment Components
Description |
Type |
Time (hours) |
Weight (%) |
End date |
Attendance (estimated) |
Participação presencial |
66,00 |
|
|
Guided project |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
24,00 |
|
2012-03-30 |
Integrated project |
Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese |
28,00 |
|
2012-06-01 |
Individual computer based programming test |
Exame |
3,00 |
|
2012-03-14 |
Presentation and discussion of integrated project |
Exame |
3,00 |
|
2012-06-07 |
Individual test (multiple choice) |
Exame |
2,00 |
|
2012-06-06 |
|
Total: |
- |
0,00 |
|
Amount of time allocated to each course unit
Description |
Type |
Time (hours) |
End date |
Individual study |
Estudo autónomo |
36 |
2012-06-07 |
|
Total: |
36,00 |
|
Calculation formula of final grade
Assessment components and their weights:
- 15% - individual computer based programming test;
- 25% - guided project;
- 15% - intermediate delivery of the integrated project;
- 35% - final delivery of the integrated project.
- 10% - individual computer base multiple-choice test.
All components have a minimum grade of 40%.
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.