The learning objectives can be associated with the following expected learning outcomes:
*Knowledge and understanding*
The course aims to provide the basic methodological and application knowledge of the main tools for object -oriented programming, and for the analysis and design of algorithms.
*Applying knowledge and understanding*
Even if it is taking as a reference language the Java language, the course aims to provide students with the tools to understand and use any object-oriented programming language. Moreover, also with the help concrete case studies carried out in the laboratory, the student will be able to analyze and develop algorithms for solving fundamental problems, even using non-trivial data structures such as trees and graphs.