Course program
Syllabus:
- Introduction to object oriented programming
- Hello, World! The REPL in Java 9
- Types of fundamental data
- Introduction to JRE, JDK and Eclipse
- Type conversions
- Fundamental concepts of object-oriented programming
- Encapsulation and default initialisation
- The String class
- References to objects, heaps & stacks, static methods
- Control structures; iterative constructs
- Iteration; array
- Constants and enumerations
- Inheritance, classes and abstract methods. The keywords this and super in constructors
- Overloading and overriding. Visibility: public, private, protected and default.
- Inheritance vs. composition.
- Polymorphism. Downcasting and upcasting.
- The Object class
- The final keyword.
- Interfaces. Differences with abstract classes. Multiple inheritance. Notable interfaces.
- Functional programming: functional interfaces and lambda expressions. References to methods.
- Stream and lambda expressions.
- Top-level classes, static and internal nested
- Introduction to Java 9 modularization
- Exceptions: try-catch-finally. Catch-or-declare policy. Throw and throws keywords. The Throwable, Exception and Error classes. Checked and unchecked exceptions.
- Collections: hierarchy, fundamental classes and their methods. Three ways to iterate over a collection. Iterable and Iterator. Comparable interface. Sorting with Comparable and Comparator
- Collections: sets and maps without sorting, with natural sorting and with insertion sorting. Methods. Arrays and Collections classes. The Stack stack class and the Queue queue interface.
- Implementation through LinkedList
- Input / Output
- Recursion in Java. Use of overloading.
- Equality in Java.
- Generic types.
- Design pattern: strategy, observer, factory, decorator, callback, MVC.
- Reflection. The Class class.
Prerequisites
There are no formal prerequisites, however it is advisable to have passed or at least attended the "Fondamenti di Programmazione" course.
Books
The course page includes all the necessary teaching material: videos, slides and excercise books. However, it is advisable to refer to at least one of the recommended texts [1, 2, 3].
Teaching mode
The course takes place in remote synchronous mode (https://elearning.unitelma.it/course/view.php?id=1901).
Le 32 videolezioni sono sempre disponibili.
Weekly:
1) the teacher selects a group of video lessons;
2) invite students to prepare lessons;
3) organizes and holds Webinars to deepen the videolessons and carry out exercises with the students.
Webinars are recorded and always available.
The course forums (https://elearning.unitelma.it/mod/forum/view.php?id=89233, https://elearning.unitelma.it/mod/forum/view.php?id=61534) are active all year round.
Frequency
Synchronous participation in the course activities is not mandatory.
Exam mode
The calendar of exam sessions is available at the following link:
https://www.studiareinformatica.uniroma1.it/appelli-d-esame
The exam consists of a written test and a project:
Written test: to be carried out starting from the summer session. It consists of open-ended questions and exercises. The aim is to verify the preparation of the students and in particular the acquired knowledge.
Project: the project specifications will be made available during the course. It consists in the development of software with the Java language. The project is carried out independently by the students or in groups of up to 2 people. The objective is to verify the programming skills with the Java language acquired during the course.
The exam is considered successfully passed if the sufficiency (i.e. 18/30) is obtained both in the written test and in the project. The final mark is obtained by calculating the weighted average of the marks obtained: 60% written test and 40% project. The two tests can be passed independently (i.e. on different dates) and in any order. However, the validity of the marks obtained in the two tests ends with the last session of the academic year (i.e. by the January-February session of the following year or, in the case of working / off-school students, etc., in the March-April session). The delivery of the project is only possible until February (the March session is only for the written test). Booking on Infostud is necessary for taking the written test or for the final report (otherwise, the report will be postponed to the next appeal), but not for discussion of the project only.
Bibliography
[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.
[2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.
[3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.
Lesson mode
The course takes place in remote synchronous mode (https://elearning.unitelma.it/course/view.php?id=1901).Le 32 videolezioni sono sempre disponibili.Weekly:1) the teacher selects a group of video lessons;2) invite students to prepare lessons;3) organizes and holds Webinars to deepen the videolessons and carry out exercises with the students.Webinars are recorded and always available.The course forums (https://elearning.unitelma.it/mod/forum/view.php?id=89233, https://elearning.unitelma.it/mod/forum/view.php?id=61534) are active all year round.