COURSE LANGUAGE: English
YEAR OF THE DEGREE PROGRAMME (I, II, III): I
SEMESTER (I, II, ANNUAL): II
CFU: 9
REQUIRED PRELIMINARY COURSES (IF MENTIONED IN THE COURSE STRUCTURE “REGOLAMENTO”)
None.
PREREQUISITES (IF APPLICABLE)
Basic knowledge of computer programming.
LEARNING GOALS
The aim of the course is to provide the fundamental skills for object-oriented design and programming through the understanding of concepts such as data abstraction, information encapsulation, cohesion and coupling, and code reuse; understanding the differences between the object-oriented paradigm and the procedural paradigm; and knowledge of the Java language for defining classes and promoting software reuse.
EXPECTED LEARNING OUTCOMES (DUBLIN DESCRIPTORS)
Knowledge and understanding
Students will be expected to demonstrate that they have:
- Acquired the basic skills for object-oriented design through an understanding of concepts such as data abstraction, information encapsulation, cohesion and coupling, and code reuse;
- Understood the differences between the object-oriented paradigm and the procedural paradigm;
- Gained knowledge of the Java programming language for class definition and for promoting software reuse.
Applying knowledge and understanding
Students will be expected to demonstrate practical skills with the Object-Oriented paradigm, effectively applying the knowledge acquired to solve problems and tackle challenges, even in contexts different from those addressed during the course.
Students should therefore be able to:
- Apply the methodological tools learned to design an information system according to the Object-Oriented paradigm, using the basic constructs of UML;
- Apply the methodological tools learned to implement an information system using the Java programming language, through both individual and group activities.
COURSE CONTENT/SYLLABUS
- Object-Oriented Programming
- Concepts of data abstraction, definition of custom types, and encapsulation. Objects, variables, classes, and methods. Constructors. Inheritance and polymorphism. Overloading and overriding. Interfaces and their benefits.
- The Java Language.
- The JVM and the JDK. Primitive types and references in Java. In-depth study of Object and String, and of == vs .equals(). The Garbage Collector.
- Collections in Java. The java.util.collections framework. In-depth study of List and its implementations. Enhanced for loop. Iterators. Generics and the notation. Wrapper classes in Java. Autoboxing and unboxing.
- Exceptions in Java. The try-catch construct. Checked and unchecked exceptions. Definition of custom exceptions. Use of exceptions for error handling in method definitions.
- Building Event-Driven Graphical Interfaces.
- Event-driven programming. Different types of windows, panels, and components. Architectures for GUI applications.
- Software Development Methodologies.
- UML: Class diagrams and their correspondence with source code. Integrated Development Environments (IDEs): Eclipse. Version control systems: Subversion and GIT. Mock-ups. Design Patterns: Iterator, Data Access Object.
READINGS/BIBLIOGRAPHY
Java How to Program, 11/e, Early Objects, Deitel & Deitel.
TEACHING METHODS
Teachers will use: a) About 60% of the time for in-person lectures. b) About 40% of the time for exercise and practical exercises on Java. Exercise will be held using an Integrated Development Environment
EXAMINATION/EVALUATION CRITERIA
Exam type:
- Written and oral.
- Project discussion.
In case of a written exam, questions refer to:
- Open answers.
- Multiple choice answers.
Evaluation criteria:
The result of the written exam is binding for admission to the oral exam. The outcome of the oral exam, together with the evaluation of the project work, is used to determine the final grade for the course.



