Select Academic Year:     2017/2018 2018/2019 2019/2020 2020/2021 2021/2022 2022/2023
Second Semester 
Teaching style
Lingua Insegnamento

Informazioni aggiuntive

Course Curriculum CFU Length(h)
[70/77]  CHEMICAL ENGINEERING [77/00 - Ord. 2020]  PERCORSO COMUNE 6 60
[70/78]  MECHANICAL ENGINEERING [78/00 - Ord. 2019]  PERCORSO COMUNE 6 60


Knowledge and understanding: the student is expected to learn the basics of computer science –as a science that studies the algorithms, the principles of functioning, and the organization of computers, information systems, and computer networks, as well as the foundations of programming languages.

Ability to apply knowledge and understanding: the student will become able to understand the organization and the behavior of modern information systems, develop algorithms for solving problems of medium complexity and to encode them using the Python language.

Making judgments: the student will be able to assess the adequacy of information technology tools in a professional environment, the data structures, and approaches to their use for solving data processing problems.

Communication skills: the student will be able to interact with computer specialists on the basic organization of a modern information system, and to describe the procedures for solving problems of data processing.

Ability to learn independently: the student will be able to learn advanced methods and new programming languages, applying in a flexible way the basic concepts provided in the course.


No preliminary requirements.


Definition of computer science. IT system and information system. Components of a computer system. Informal definition of algorithm. IT applications.

Algebra of Boole
Definition. Truth Tables. Basic operators: AND, OR, NOT. Properties and theorems (De Morgan). Boolean expressions. XOR, XNOR, NAND, NOR operators.

Binary information coding (outline)
The concept of coding information. Coding of numeric information: integers (without sign, sign and value, two's complement) and real numbers (fixed and floating point). Notes on coding other non-numeric information (e.g. sounds and images).

Computer architecture (outline)
Logical organization and operating principles of computers: Von Neumann's architecture. Components of the architecture of Von Neumann: CPU, memory, I / O peripherals, system bus. Mechanism of program execution. Evolutions of Von Neumann's architecture.

The operating system (outline)
Background. Functions and organization of operating systems. Management of processes, main memory, peripherals, secondary memory. The user interface.

Databases, database management systems. Data models: the relational model. Tables, attributes, schemes and instances of a relational database. Key to a table. Integrity constraints. Query languages: SQL.

Algorithms and coding languages of algorithms
Formal definition of algorithm. Languages for coding algorithms. Programming languages: low / high level languages, translated / interpreted languages. Examples of algorithms: sorting algorithms (selection sort, insertion sort) and search (sequential search and binary search on ordered sequences).

Introduction to the Python language
The main instructions of the Python language: assignment instruction, conditional, iterative, input / output instructions (print and input / raw_input). Functions and procedures.

Data structures of the Python language
Definition of data type. Simple and structured data types. Predefined and user-defined types. The predefined simple types (int, long, double, boolean, string). Structured types: tuple, list, dictionary. Class definitions.

Control structures of the Python language
The if, for, while statements.

Subroutines in the Python language: functions and procedures
Subdivision of a program into subprograms. Parameters and arguments of subroutines. Definition and call of subroutines. Subroutines in the Python language: functions and procedures. Subroutines declaration. Passing parameters. Some predefined Python functions (str, len, etc.). Rules for formatting strings for writing.

Standard and file-based input / output in Python language
Access to read / write / edit files. Operations on secondary memory files: the open, close, etc. functions.

Teaching Methods

* 12 hours of lectures on general issues concerning computer science (boolean algebra, binary information representations, architectures of computers, operating systems, and databases).
* 48 hours on programming in Python language.

To meet specific educational needs related to the epidemiological situation, the possibility of live streaming lessons or recordings of the same available online is provided.
Furthermore, the exercises can be carried out through forms of remote interaction with the available IT supports.

Verification of learning

The exam consists of a written test divided into three levels of difficulty, basic, intermediate, advanced, to be completed incrementally. Access to the exercises of the next level is allowed according to the achievement of a minimum score consisting of 18/30 for the intermediate level, 25/30 for the advanced level. The basic level allows the achievement of a maximum score of 23/30.
The test is carried out through open-ended, multiple choice questions, solving conversion exercises in binary / decimal format, Boolean expressions, databases, computer architectures and operating systems. The PYTHON language part consists of writing one or more programs and functions in PYTHON code. Programming aims to verify the competences possessed by the candidate in terms of linguistic abstraction and problem solving skills, using the language constructs indicated in the course contents.
The oral exam is compulsory if the student scores between 16/30 and 17/30 or if the teacher has doubts about how to solve the exercises presented by the student, regardless of the score.
COVID-19 emergency (up to AA 2020/21). The written test is administered as a "fiduciary written test" assigned through the MS Teams platform. The exam has the same format stated for the face-to-face modality. All the details, together with a video-tutorial for the execution of the fiduciary written test, are disclosed on the course website at the page:


1) S. Ceri, D. Mandriola, L. Sbattella, P. Cremonesi, G. Cugola, Informatica: arte e mestiere, Terza Edizione, McGraw-Hill 2008, ISBN 918-88-386-6429-8.
2) K.A. Lambert, Programmare in Python, Apogeo, 2012, ISBN 978-88-387-8699-0.
3) G.M. Schneider, J.L. Gersting, Informatica, Apogeo (Maggioli), 2007.
4) M. Mezzalama, E. Piccolo, Capire l’informatica, CittàStudi (De Agostini), 2010.
5) C. Horstmann, R.D. Necaise, Concetti di informatica e fondamenti di Python, Apogeo (Maggioli), 2014.
6) F. Aiolli, Appunti di programmazione (scientifica) in Python, Esculapio, 2014.

More Information

The pdf slides of the lessons are available to students on the web pages of the teacher: https://www.unica.it/unica/page/it/gianluca_marcialis

Questionnaire and social

Share on:
Impostazioni cookie