- Docente: Danilo Pianini
- Credits: 9
- SSD: ING-INF/05
- Language: Italian
- Moduli: Danilo Pianini (Modulo 1) Gianluca Aguzzi (Modulo 2) Angelo Filaseta (Modulo 3)
- Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2) Traditional lectures (Modulo 3)
- Campus: Cesena
- Corso: First cycle degree programme (L) in Computer Systems Technologies (cod. 6007)
-
from Sep 18, 2025 to Oct 31, 2025
-
from Nov 06, 2025 to Dec 19, 2025
-
from Sep 23, 2025 to Dec 16, 2025
Learning outcomes
At the end of the course, the student will possess a foundational understanding of programming paradigms for software in-the-large, such as the object-oriented and functional paradigms, their main design patterns, and their embodiment in modern programming languages and related development frameworks. The student will therefore be able to design and develop complete small- to medium-scale applications, making use of development processes and agile techniques, including the DevOps approach to project management.
Course contents
-
Fundamentals of analysis, design, and object-oriented programming
-
Java language: overview and development tools
-
Core and typical concepts of object-oriented languages: classes, objects, methods, fields, instantiation
-
Polymorphism, inheritance, and reuse: interfaces and abstract classes
-
Advanced aspects: generic programming, annotations, exception handling, elements of functional programming (lambda expressions)
-
Core libraries for program development
-
Input/output management
-
Graphical user interface programming
-
Introductory elements of concurrent programming
-
Introduction to design patterns and effective programming techniques
-
Development tools and basics of DevOps: JDK, IntelliJ IDEA, Git, Gradle, continuous integration
Readings/Bibliography
Reference text:
-
Bruce Eckel, Thinking in Java — Fourth Edition
Additional recommended texts:
-
Joshua Bloch, Effective Java — Second Edition
-
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns
Purchasing these books is not required, as substitute slides will be provided. The course will also make use of tutorials and technical documentation available online.
Teaching methods
The course combines lectures with partially guided laboratory sessions.
In class, object-oriented programming techniques and the details of the Java language are presented, along with exercises that encourage critical discussion with students.
In the laboratory, students are introduced to the main development tools and assigned programming tasks to strengthen their practical skills through active approaches.
Due to the nature of the activities involved, attendance requires prior completion of safety training modules 1 and 2, delivered in e-learning mode.
Assessment methods
Learning will be assessed through an oral examination with project presentation.
Students, organised in groups of about three, will develop a software project in Java and produce a report describing requirements, design, and implementation. Evaluation will consider the quality of the proposed solution and the discussion of design choices.
Teaching tools
The instructor will provide additional teaching material (in particular slides and exercises). Laboratory activities will reinforce practical learning, with the support of a teaching tutor.
Office hours
See the website of Danilo Pianini
See the website of Gianluca Aguzzi
See the website of Angelo Filaseta