- Docente: Enrico Denti
- Credits: 12
- Language: Italian
- Moduli: Enrico Denti (Modulo 1) (Modulo 2)
- Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
- Campus: Bologna
-
Corso:
First cycle degree programme (L) in
Computer Engineering (cod. 6668)
Also valid for First cycle degree programme (L) in Computer Engineering (cod. 6668)
Learning outcomes
The course aims to provide an in-depth concptual & practical knowedlge about the basics concepts, methodologies, technologies and tools for the design and development of medium-size applications according to the object-oriented paradigm.
At the end, the student:
- knows the methodological foundations for the analysis and development of object-oriented software applications
- knows the corresponding techniques in depth both from the conceptual and practical viewpoints
- is able to apply such knowledge and techniques to medium-size applications using the Java language
- knows in depth the fundamental data structures and related algorithms
- has the fundamental notions of functional programming in modern OO-blended languages (Java, Kotlin, Scala, C#)
-is able to develop simple graphical user interfaces in JavaFX according to the event-driven programming pattern
Throughout the course, while the Java language and platform are the main reference (and the only one required for assessment in the final examination), a multi-language approach is adopted when introducing concepts and constructs, presenting the Java approch in comparison with other object-oriented languages such as C#, Scala, Kotlin, so as to provide a broader view.
Course contents
Basic concepts of programming languages. Language families -- imperative, functional, logic, and object-oriented languages (5hrs).
Introduction to Object-oriented software design in a multi-language perspective: singleton objects, abstract data types, classes and objects. Basic concepts of the Java language and architecture: classes, instances, object construction and deletion, inheritance, polymorphism. Abstract classes, interfaces, multiple inheritance. (30hrs + 12hrs lab)
Lambda expressions and functional interfaces. (12hrs + 6hrs lab)
Exceptions and exception handling. I/O streams and file access, object serialization. Data structures: lists, hashmaps, trees and related algorithms. (20hrs + 12hrs lab)
Introduction functional programming in general and specifically to Java streams. (3rhs)
Basic elements for GUI construction in Java on the JavaFX platform: event-driven programming, event listeners. (10hrs + 10hrs lab)
Readings/Bibliography
Please see the course's web portal and the course slides.
Teaching methods
The course adopts an interactive approach, where problem presentation and discussion (via slides, donwloadable from the VirtuaLE.unibo.it site) are continuoulsy interleaved. Live examples and coding sessions are also exploited whenever necessary.
Exercises are continuously interleaved with theoretical concepts and immediately shown 'on line'. MS Teams is also exploited for blended learning, and to support team work during lab hours.
Generally speaking, the more theorectical module is strictly integrated with the lab module, which is mainly devoted to lab experiments and exercises, both in groups and as individual activities: each week, a task is assigned to be completed during the lab session. Its resolution tests the students' ability in the concepts explained in the previous weeks, according to the constructive, "how to", interactive learning approach.
Due to the relevant lab work expected, this course requires the mandatory previous participation to both 1 & 2 modules about safety at work, as per the Italian law. Such modules can be attended on-line at [https://elearning-sicurezza.unibo.it/].
Assessment methods
Assessment is achieved both as self-evaluation in the lab sessions systematically proposed during the course, and as a final examination, which is integrated for both modules (theory & lab). The lab assignments during the course do not replace the final examination, nor do they contribute to the final evaluation, given their purpose of allowing students to self-evaluate.
The final examination consists in the practical implementation of the solution to a practical medium-size problem in the lab: during the test, students can freely consult books, manuals, on-line slides and resources in order to provide a solution to the proposed application problem. The test is divided in parts, with specific scores for each part, so as to effectively support student self-evaluation.
The solution can be considered for correction and evaluation only if it is compiled by the Java compiler and passes at least 2/3 of the unit tests provided: if compilation fails or too many test fail, the exam is considered not passed, regardless of any other consideration. If it compiles, the proposed solution is evaluated, taking into account in particular its conformity to the problem specification. It is strongly prohibited to use any messaging app or tool, and to exploit AI tools: such behaviour will cause the nullification of the assignment, and the violator will be asked to leave immediately.
The detailed exam rules are available both on the course web page and on Unibo VirtuaLE site.
Normally, a successful lab test (evaluation of 18/30 or above) can be officially registered as a passed exam with no need for an oral discussion. However, the teacher reserves the right to call the student to an oral discussion anytime: in such a case, the discussion is mainly (but not exclusively) devoted to explore more in depth the approach and solution of the lab test.
The student can always ask to take an optional oral exam, in order to (hopefully) improve his/her evaluation. In this case, the discussion concerns any topic in the course, and the final result is always officially registered, independently of the final score.
The exam result (either accepted od declined) is always officially registered , coherently with the university regulations. However, students are allowed a reasonable time - typically, at least until the next exam date - to decide whether to accept or decline the exam result.
Students with learning disorders and\or temporary or permanent disabilities: please, contact the office responsible (https://site.unibo.it/studenti-con-disabilita-e-dsa/en/for-students ) as soon as possible so that they can propose acceptable adjustments. The request for adaptation must be submitted in advance (at least 15 days before the exam date, even in advance if possible) to the lecturer, who will assess the appropriateness of the adjustments, taking into account the teaching objectives.
PLEASE NOTE: the use of AI techniques and generative tools is NEVER permitted during exams and will cause the immediate invalidation of the test.
Teaching tools
The main tools are the JDK (Java Development Kit) and the Eclipse IDE for Java developers; programming editors can also be of help for quick tests, as well as online testing environments (both for Java and other languages like Kotlin, Scala, C#) on a personal basis.
The course web pages provide updated information, while the VirtuaLE unibo site hosts all the course material (slides, exercises, start kits, extramaterial, suggested books).
Links to further information
http://enricodenti.disi.unibo.it/
Office hours
See the website of Enrico Denti
See the website of
SDGs




This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.