Teaching Staff: Marco RUSSO
Credit Value: 6
Scientific field: INF/01 - Informatics
Taught classes: 35 hours
Laboratories: 15 hours
Term / Semester:

Learning Objectives

The student will acquire:

  • capability to develop object-oriented software programs;
  • a certain knowledge of advanced computer tools of current use in the fields of basic and applied research;
  • capability to use the analogy tool to apply known solutions to new problems (problem solving);
  • capability to design and implement experimental and theoretical procedures to solve problems of academic and industrial research or to improve existing results;
  • capability to work with increasing degrees of autonomy, also assuming responsibility in the planning and management of projects;
  • communication skills in Italian and English in the fields of object-oriented programming and artificial intelligence;
  • capability to present one's own research or review activity to a generic audience.

Furthermore, with reference to the so-called Dublin Descriptors, this course helps to acquire the following soft skills:

Knowledge and understanding:

The primary objective of the course is the students' acquisition of the "philosophy" of object-oriented programming regardless of the programming language. Another goal is to understand the software bottlenecks to be implemented in order to optimize in terms of speed/memory. Another objective is to know how to disseminate the knowledge acquired and/or developed through its software in written form. Lastly, it is intended, optionally, to provide the rudiments of artificial intelligence.

Applying knowledge and understanding:

It is intended to provide students with the following skills:

  • Translate the problems to be solved or the phenomena to be simulated into object-oriented code;
  • Design, describe and implement object-oriented programs and libraries;
  • Knowing how to use the basic tools for object oriented programming;
  • Understand and analyze object-oriented code also in terms of efficiency;

Making judgments.

Through the examination of numerous code examples and a substantial practical component that involves carrying out computer exercises, the learner will be able, both autonomously and cooperatively, to analyze problems and design and implement the related software solutions. to objects and optimized in speed and / or memory.

Communication skills.

The student will acquire the necessary communication skills and expressive appropriateness in the use of technical verbal language in the context of computer object programming. Optionally he will acquire acne communication skills in the field of artificial intelligence. Learning skills. The course aims to provide the learner with the necessary theoretical and practical methodologies to be used in research and professional contexts with particular attention to the physical field.

Course Structure

Frontal lessons and practical exercises.

Detailed Course Content

From structured programming to objects

- Revisiting of variables, addresses, arrays and pointers in C.

- Pointers to functions

- The passage of values ​​to functions and references

- Dynamic memory allocation

- Creation of libraries, headers, object files and linking.

- The concept of object-oriented programming applied to any programming language

- The concept of reusability of the code and its modifiability

- Practical examples of objects in C.

- Classes, data hiding and abstract data types

- Class-level members

- Builders and destroyers of objects

- Inheritance

- Polymorphism

- Examples of programming of objects of type:

- stacks, queues and trees.


Introduction to artificial intelligence techniques

- Fuzzy Logic

- Neural networks

- Clustering

- Genetic algorithms

- Genetic programming

- Applications in the field of Physics Frontal lessons and practical exercises

Textbook Information

Notes provided in class. These notes, the code developed in class and any other material useful for the course will be available on the teacher's website: