Nel secondo modulo dell'esame di Inglese, lo studente acquisirà conoscenze di inglese tecnico affrontando in lingua inglese argomenti trattati in corsi dell’area informatica seguiti al I semestre.

CFU 4:
Architettura di un elaboratore. La codifica binaria. Reti logiche. Porte logiche e algebra booleana. 
CFU 5:
Algoritmo e programma. Rappresentazione dell’algoritmo. Diagrammi di flusso e la pseudocodifica.
CFU 6:
Introduzione ai sistemi operativi. Attività e struttura di un sistema operativo. Il kernel ed i moduli di un sistema operativo.

The student will acquire the basics on:

  • logic, with particular attention to their applications in computer science;
  • automata and grammars as formalisms to define the behavior of a system and used in the different phases of compilation;
  • elements on the design of algorithms with hints of complexity.

Knowledge and ability to understand 
The course aims to provide the knowledge of the basic mechanisms of logical inference, through the study of the fundamental notions of classical and first-order propositional logic. This knowledge is aimed at forming and increasing the logical ability, formalization and abstraction of information and also the ability to understand the theoretical and practical aspects of the principles of programming languages. 

Knowledge and understanding skills applied
The logical and formal concepts applied extensively in computer science. The student will be able to design, through the use of logic, automata and formal languages, algorithmic solutions to simple problems.

Autonomy of judgment
The student will be able to analyze problems and be aware of their abilities. He will be able to solve a problem even in a different way from how he learned in class and to evaluate the logical correctness of the reasoning.


Communication skills
The student will learn how to display and discuss computer concepts acquired with conceptual and linguistic precision, thanks to the knowledge of formal and logical languages.

Ability to learn
The knowledge of the logical mechanisms of mathematical reasoning allows the acquisition of adequate skills for the deepening of one's own knowledge and for the individual development of new skills. Therefore, the student will acquire a greater mental elasticity that will make it more open to the continuous evolution of IT. 


The goal of the course is to provide essential knowledge in mathematical analysis for scientific degree course students with particular emphasis on computer science applications. To enforce abstraction, formality, and rigor of mathematical reasoning.

Knowledge and ability to understand 
At the end of the didactic activity, the student will know the theoretical and practical aspects related to numerical sets, combinatorial calculus, elementary functions, matrix calculus, complex numbers, geometrical places of the plane, limits, derivatives, integrals.

Knowledge and understanding skills applied
At the end of the course the student will have experimented through exercises and discussions in the classroom the resolution of equations in the field of complex numbers, behavior of elementary functions, points, measurements, trends of geometric locations of the plane, matrix calculus, calculations of limits, derivatives and integrals, series development, resolution of differential equations both on direct questions and inverse problems or when instrumental in solving problems.

Autonomy of judgment 
The student will achieve the necessary skills to be able to solve exercises even in a different way from how they learned in class. Preference of a demonstration of a theorem carried out in a different way from the one shown by the teacher in class.

Communication skills
The student will be able to use an appropriate language to enunciate theorems, to carry out demonstrations, to define definitions. It will also be able to express with language the meaning of concepts, theorems, definitions.

Ability to learn
The student will have the ability to identify the mathematical tool useful to solve a specific problem.


The student, in line with the objectives of the course of study, will develop skills related to the implementation of simple programs through the use of object-oriented programming.

Knowledge and ability to understand
The student will know the theoretical and practical aspects related to the design and coding of programs in Java language with graphical interfaces. 

Knowledge and understanding skills applied
The student will be able to design and develop simple programs through the use of Java language.

Autonomy of judgment 
The student will be able to analyze a set of functional requirements and to adopt an implementation strategy of these requirements also different from those learned in class. 

Communication skills 
The student will be able to describe with sufficient level of formalism and appropriate language a solution to a specific problem.

Ability to learn
The student will be able, given a problem, to evaluate the different resolution strategies and choose the most suitable in specific circumstances, aware of the limitations and strengths of the strategy adopted.


The student, consistent with the objectives of the course of study, will develop skills related to the implementation of simple programs through the use of procedural programming.

Knowledge and ability to understand
The student will know the theoretical and practical aspects related to the design and coding of C language programs based on linear data structures (programming in the small), with particular reference to the principle of functional abstraction and to the definition of abstract data types.


Knowledge and understanding skills applied
The student will be able to design and develop through the use of C language. 

Autonomy of judgment 
The student will be able to analyze a set of functional requirements and to adopt an implementation strategy of these requirements also different from those learned in class. 

Communication skills 
The student will be able to describe with sufficient level of formalism and appropriate language a solution to a specific problem.

Ability to learn
The student will be able, given a problem, to evaluate the different resolution strategies and choose the most suitable in specific circumstances, aware of the limitations and strengths of the strategy adopted.

The course aims to teach the fundamental concepts related to modern operating systems. The student will understand the role of operating systems, the management of resources by an operating system and the main differences between the different modern operating systems. The student will address some of the typical problems of the concurrent management of multiple resources, both from a theoretical point of view and from a practical point of view. Finally, the student will become familiar with the various distributions and with the Linux command interpreter.

Knowledge and ability to understand

At the end of the didactic activity, the student will know the theoretical and practical aspects underlying the realization and use of operating systems with particular reference to the GNU-Linux system.

Knowledge and understanding skills applied

The student will experiment with the different modern operating systems and the different distributions and will be encouraged to customize the environment according to their specific needs. In order to be able to experiment with the different distributions, a virtualization software will be used.

Autonomy of judgment

The student will achieve the necessary skills to evaluate the pros and cons of each of the solutions tested not only from the point of view of an end user, but also and above all in terms of an expert system engineer.

Communication skills

The student will be able to express complex technical concepts, such as those inherent in the structure and components of a modern operating system through a clear and understandable language even to a non-expert interlocutor.

Ability to learn


The student will be able to understand the functioning of an operating system by accessing the sources of a real system and experimenting with the different functionalities. The student will also be able to access the main sources of online documentation and understand its contents on the basis of a basic knowledge of the fundamentals of a modern operating system.


 The course aims to analyze the relationship between computer science and law, with particular reference to the main laws on computer crimes in EU and Italian law, the protection of intellectual property, the ethical-legal aspects of the Internet, the protection of personal data, to the legal implications concerning spamming, data retention, social networks, smartphones and tablets, cloud computing, video surveillance, biometrics, as well as the digitization of the Public Administration. Through the acquisition of adequate knowledge and understanding of the thematic content addressed, this course is aimed at the formation of indispensable applicative skills of the concepts learned, designed to generate good operational potential also within the legal regulation of information technology, especially as regards regards the processing of personal data in accordance with the legal provisions in force.


The goal of the Computer Architecture course is to provide students basic knowledge of computer organization and the principles underlying their functioning. We will study digital circuits theory (combinational and sequential machines analysis and synthesis), as well as some more advanced aspects of the organization and architecture of computer systems and mobile devices. In addition, the course will provide essential tools for the understanding and use of assembly language. Finally, the course will provide background on the use of Arduino.