Skip to main content
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
e-Learning - UNIMIB
  • Home
  • Calendar
  • My Media
  • More
Listen to this page using ReadSpeaker
English ‎(en)‎
English ‎(en)‎ Italiano ‎(it)‎
You are currently using guest access
 Log in
e-Learning - UNIMIB
Home Calendar My Media
Percorso della pagina
  1. Science
  2. Master Degree
  3. Teoria e Tecnologia della Comunicazione [F9202P - F9201P]
  4. Courses
  5. A.A. 2026-2027
  6. 1st year
  1. Elements of Computer Science
  2. Summary
Insegnamento Course full name
Elements of Computer Science
Course ID number
2627-1-F9202P009
Course summary SYLLABUS

Course Syllabus

  • Italiano ‎(it)‎
  • English ‎(en)‎
Export

Obiettivi

Il primo obiettivo è quello di fornire agli studenti e alle studentesse le nozioni fondamentali che riguardano la rappresentazione, elaborazione, trasmissione e comunicazione dell’informazione digitale attraverso un calcolatore elettronico o una rete di calcolatori elettronici. Il secondo obiettivo è quello di insegnare alle studentesse e agli studenti, grazie a lezioni teoriche ed esercitazioni pratiche, i rudimenti per la programmazione di un calcolatore elettronico in ambito Python.

Obiettivi declinati tramite i Descrittori di Dublino:

Conoscenza e comprensione
Fondamenti teorici: conoscere i principi base dell’informatica, inclusi i concetti di algoritmo, computazione, e struttura dei dati.
Architettura dei computer: comprendere come funziona un computer a basso livello (CPU, memoria, input/output) e l’interazione tra hardware e software.
Linguaggi di programmazione: avere una conoscenza di base di almeno un linguaggio di programmazione (ad esempio, Python) e dei suoi costrutti fondamentali (variabili, cicli, condizionali, funzioni).
Sistemi operativi: conoscere i concetti base dei sistemi operativi, come processi, memoria, file system e gestione delle risorse.
Reti di computer: comprendere i principi delle reti, inclusi protocolli di base (TCP/IP, HTTP), indirizzamento IP e funzionamento di Internet.
Basi di dati: conoscere i concetti fondamentali delle basi di dati relazionali (tabelle, chiavi, query SQL) e il loro utilizzo pratico.

Capacità di applicare conoscenza e comprensione
Programmazione: saper comprendere programmi semplici in un linguaggio di programmazione, risolvendo problemi di base.
Gestione dei dati: saper creare, modificare e interrogare una base di dati semplice utilizzando SQL.
Risoluzione di problemi tecnici: essere in grado di identificare e risolvere problemi comuni legati all’hardware, al software o alle reti.

Autonomia di giudizio
Valutazione delle soluzioni: saper valutare criticamente diverse soluzioni a un problema informatico, considerando efficienza, leggibilità e manutenibilità.
Scelta degli strumenti: essere in grado di selezionare gli strumenti software e hardware più adatti per un compito specifico.
Etica e responsabilità: riflettere sulle implicazioni etiche e sociali dell’informatica, come la privacy, la sicurezza dei dati e l’accessibilità.

Abilità comunicative
Documentazione: saper scrivere documentazione chiara e comprensibile per il codice, i progetti o i sistemi sviluppati.
Lavoro di squadra: collaborare efficacemente in gruppo, comunicando idee tecniche in modo accessibile anche a non esperti.
Comunicazione tecnica: spiegare concetti informatici ad interlocutrici e interlocutori con diversi livelli di competenza, evitando gergo eccessivo.

Capacità di apprendimento
Autoapprendimento: Essere in grado di apprendere nuovi linguaggi, strumenti o tecnologie in modo autonomo, utilizzando risorse online, documentazione ufficiale e tutorial.
Adattabilità: adattarsi rapidamente a nuove tecnologie, linguaggi di programmazione o metodologie di sviluppo.
Ricerca di soluzioni: saper cercare e valutare soluzioni a problemi tecnici utilizzando risorse come Stack Overflow, forum specializzati o documentazione ufficiale.
Aggiornamento continuo: mantenersi aggiornato sulle tendenze e le novità nel campo dell’informatica, seguendo blog, conferenze o corsi online.

Contenuti sintetici

L’insegnamento è costituito da due parti principali. Una prima parte, prevalentemente teorica, che tratta i concetti fondamentali di: rappresentazione digitale dell’informazione nei calcolatori elettronici, sistemi informativi e sistemi per la gestione della conoscenza, architettura dei calcolatori, sistemi operativi, reti di calcolatori e internet of things.

Una seconda parte, pratico-teorica, che introduce i concetti principali della programmazione con esempi su Python. Questa parte sarà accompagnata da un’attività esercitativa ad hoc.

Programma esteso

Rappresentazione digitale dell’informazione: il concetto di informazione, rappresentazione digitale dei numeri, digitalizzazione dei segnali, rappresentazione digitale dell’audio, delle immagini, del video e dei caratteri, organizzazione della conoscenza in un calcolatore.

Sistemi per l’elaborazione dell’informazione: la macchina informatica, tipi di calcolatori, sistemi operativi.

Reti di calcolatori e internet: il concetto di rete di calcolatori, principali tipologie di reti, mezzi trasmissivi e principali apparati di rete, applicazioni multimediali distribuite.

Programmazione di un calcolatore: concetto di algoritmo, linguaggio di programmazione, programma, tipi di dati, strutture dati elementari e costrutti di programmazione.

Esempi di programmazione mediante l’uso Python e forse altri di diversi linguaggi di programmazione.

Prerequisiti

Nessuno

Modalità didattica

L’insegnamento prevede una parte di lezioni teoriche che si terranno in aula e una parte di esercitazioni che si terranno in laboratorio e/o in aula e che richiederanno l’uso del proprio PC (o quello a disposizione presso i laboratori informatici dell'Ateneo). Le esercitazioni sono finalizzate alla realizzazione di semplici scripts con il linguaggio di programmazione Python. Questa parte dell'attività è funzionale a comprendere nozioni di base della programmazione.

Si prevede la condivisione di tutto il materiale didattico necessario per lo studio degli argomenti dell’insegnamento e la preparazione della prova d'esame attraverso strumenti di elearning.

Tutte le lezioni e le ore di didattica verranno svolte in presenza, eccetto casi straordinari di problemi particolari.
Le lezioni consisteranno di:

  • 30 ore di lezioni frontali (didattica erogativa)
  • 24 ore di lezioni di laboratorio (didattica interattiva)
  • circa 15 ore di attività di tutorato (didattica interattiva)

Materiale didattico

Dispense fornite dai docenti durante le lezioni.

Plotting and programming in Python online free tutorial by Software Carpentry (in inglese)

Testi consigliati, non obbligatori, per chi volesse approfondire:

"Informatica per le arti visive, la musica e lo spettacolo" (Massimo De Santo, Francesco Colace, Paolo Napoletano) Italy, McGraw-Hill Company, 2012.

"Laboratori di Programmazione Web" (Marco Avvenuti e Mario G.C.A. Cimino) Italy, McGraw-Hill Company, 2012.

Periodo di erogazione dell'insegnamento

Primo semestre

Modalità di verifica del profitto e valutazione

Esame scritto con esercizi a risposta multipla e a domande aperte per valutare le conoscenze acquisite sugli argomenti dell’insegnamento. La prova comprende anche alcuni esercizi per la verifica della comprensione e capacità di applicazione delle principali nozioni acquisite.

Orale integrativo facoltativo, dove la prova orale potrà confermare il voto dello scritto, o aggiungere 1 o 2 punti, o togliere 1 o 2 punti dal voto dello scritto.

Orario di ricevimento

Via appuntamento (scrivendo a davide.chicco@unimib.it )

Sustainable Development Goals

ISTRUZIONE DI QUALITÁ
Export

Aims

The first aim is to provide students with the basic understandings regarding the representation, processing, transmission and communication of digital information using a computer or a network of computers. The second aim is to teach students, thanks to theoretical lessons and practical exercises, the basic skills of computer programming in the Python field.

Learning outcomes as set out in the Dublin Descriptors:

Knowledge and understanding
Theoretical foundations: to be familiar with the basic principles of computer science, including the concepts of algorithms, computation and data structures.
Computer architecture: to understand how a computer works at a low level (CPU, memory, input/output) and the interaction between hardware and software.
Programming languages: to have a basic knowledge of at least one programming language (e.g. Python) and its fundamental constructs (variables, loops, conditionals, functions).
Operating systems: to be familiar with the basic concepts of operating systems, such as processes, memory, file systems and resource management.
Computer networks: understanding the principles of networking, including basic protocols (TCP/IP, HTTP), IP addressing and how the Internet works.
Databases: understanding the fundamental concepts of relational databases (tables, keys, SQL queries) and their practical application.

Ability to apply knowledge and understanding
Programming: being able to understand simple programmes in a programming language and solve basic problems.
Data management: being able to create, modify and query a simple database using SQL.
Technical problem-solving: being able to identify and resolve common problems relating to hardware, software or networks.

Independent judgement
Evaluation of solutions: being able to critically evaluate different solutions to an IT problem, taking into account efficiency, readability and maintainability.
Choice of tools: being able to select the most suitable software and hardware tools for a specific task.
Ethics and responsibility: reflecting on the ethical and social implications of IT, such as privacy, data security and accessibility.

Communication skills
Documentation: being able to write clear and comprehensible documentation for the code, projects or systems developed.
Teamwork: collaborating effectively within a team, communicating technical ideas in a way that is accessible even to non-experts.
Technical communication: explaining IT concepts to people with different levels of expertise, avoiding excessive jargon.

Learning ability
Self-learning: Being able to learn new languages, tools or technologies independently, using online resources, official documentation and tutorials.
Adaptability: Adapting quickly to new technologies, programming languages or development methodologies.
Problem-solving: Knowing how to search for and evaluate solutions to technical problems using resources such as Stack Overflow, specialist forums or official documentation.
Continuous professional development: Keeping up to date with trends and developments in the field of IT by following blogs, attending conferences or taking online courses.

Contents

The teaching is made of two main parts. A first part, mainly theoretical, which deals with the fundamental concepts of: digital representation of information in computers, information systems and systems for knowledge management, computer architecture, operating systems, computer networks and internet of things.

A second part, practical-theoretical, introduces the main concepts of coding, by showing some Python examples. This part will be supported by an ad hoc exercise activity.

Detailed program

Digital representation of information: definition of information, digital representation of numbers, audio, images, video and characters, knowledge representation in a computer.

Information processing systems: the computer machine, types of computers, operating systems.

Computer networks and internet: computer networks basics, main types of networks, transmission media and main network devices, distributed multimedia applications.

Computer programming: definition of algorithm, programming language paradigms, programs, data types, basic data structures and programming constructs.

Examples of programming using Python and perhaps other programming languages.

Prerequisites

None

Teaching form

A part of lectures will be theoretical and will take place in a classroom; another part of the lectures will be exercise classes that will take place in a computational laboratory and/or in the classrom. For these exercise classes, students will have to use a personal computer (their own or university's ones). The exercise classes will be aimed at the development of simple script applications in the Python programming language.

We foresee the sharing the of all the didactics content needed for sudying these topics and for preparing the exam tests through eLearning tools.

All lectures and teaching sessions will take place in person, except in exceptional circumstances where specific problems arise.
The course will consist of:

  • 30 hours of lectures (lecture-based teaching)
  • 24 hours of laboratory sessions (interactive teaching)
  • approximately 15 hours of tutorial sessions (interactive teaching)

Textbook and teaching resource

Handouts provided by the teachers (alternative textbooks will be suggested to students not speaking Italian)

Plotting and programming in Python online free tutorial by Software Carpentry (in English)

Semester

First semester

Assessment method

A written exam consisting of multiple-choice and open-ended questions to assess the knowledge acquired on the course topics. The exam also includes several exercises to assess students’ understanding and ability to apply the key concepts learned.

An optional supplementary oral exam, in which the oral exam may confirm the written exam grade, add 1 or 2 points to it, or subtract 1 or 2 points from it.

Translated with DeepL.com (free version)

Office hours

Through appointment (writing to davide.chicco@unimib.it )

Sustainable Development Goals

QUALITY EDUCATION
Enter

Key information

Field of research
INFO-01/A
ECTS
6
Term
First semester
Activity type
Mandatory to be chosen
Course Length (Hours)
52
Degree Course Type
2-year Master Degree
Language
Italian

Staff

    Teacher

  • HA
    Hamza Amrani
  • Davide Chicco
    Davide Chicco

Students' opinion

View previous A.Y. opinion

Bibliography

Find the books for this course in the Library

Enrolment methods

Manual enrolments
Self enrolment (Student)

Sustainable Development Goals

QUALITY EDUCATION - Ensure inclusive and equitable quality education and promote lifelong learning opportunities for all
QUALITY EDUCATION

You are currently using guest access (Log in)
Policies
Get the mobile app
Powered by Moodle
© 2026 Università degli Studi di Milano-Bicocca
  • Privacy policy
  • Accessibility
  • Statistics