28006 - Foundations of Informatics T-2

Course Unit Page

  • Teacher Enrico Denti

  • Learning modules Enrico Denti (Modulo 1)
    Roberta Calegari (Modulo 2)
    Ambra Molesini (Modulo 3)

  • Credits 12

  • SSD ING-INF/05

  • Teaching Mode Traditional lectures (Modulo 1)
    Traditional lectures (Modulo 2)
    Traditional lectures (Modulo 3)

  • Language Italian

Academic Year 2019/2020

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 applications according to the object-oriented paradigm.

The Java language and platform is adopted for this purpose: at the same time, a comparison with the C# language and .NET platform is carried out for many topics of the course, in order to provide a broader view.

 

Course contents

Basic concepts of programming languages. Language families -- imperative, functional, logic, and object-oriented languages (5hrs).

Introduction to software design: software components, abstract data types, 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 to Java operation 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

Slides (available from the Unibo IOL site) are projected and discussed during class hours, thus avoiding students the burden of  taking notes all the time, letting them focus on the discussed concepts.

Exercises are continuously interleaved with theoretical concepts and immediately shown 'on line' from the teacher's notebook.

This module (theory) is strictly integrated with the other parallel module (lab), 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.

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 solution can be considered for correction and evaluation only if it is compiled by the Java compiler: if compilation fails, the test is 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.

Normally, a successful lab test (evaluation of 18/30 or above) can be officially registered as a passed exam. However, the teacher reserves the right to call the student to an oral discussion, which is mainly (but not exclusively) devoted to discuss 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.

Teaching tools

The main tools are the JDK (Java Development Kit) and the Eclipse IDE for Java developers; other minor tools include Visual Studio (for some C# tests), Visio, SceneBuilder.

The teacher's web portal provides updated information, copy of the slides projected and discussed during the lecture hours, some extra
material, and suggested books.

Links to further information

http://enricodenti.disi.unibo.it/

Office hours

See the website of Enrico Denti

See the website of Roberta Calegari

See the website of Ambra Molesini