FONDAMENTI DI INFORMATICA
Stampa
Anno immatricolazione
2021/2022
Anno offerta
2021/2022
Normativa
DM270
SSD
ING-INF/05 (SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI)
Dipartimento
DIPARTIMENTO DI INGEGNERIA INDUSTRIALE E DELL'INFORMAZIONE
Corso di studio
INGEGNERIA INDUSTRIALE
Curriculum
PERCORSO COMUNE
Anno di corso
Periodo didattico
Annualità Singola (27/09/2021 - 17/06/2022)
Crediti
12
Ore
106 ore di attività frontale
Lingua insegnamento
Italiano
Tipo esame
SCRITTO
Docente
CUSANO CLAUDIO (titolare) - 12 CFU
Prerequisiti
=
Obiettivi formativi
Il corso si propone di far acquisire agli studenti una conoscenza di base dei principi dell'informatica.
Gli studenti saranno in grado di comprendere il funzionamento di un calcolatore elettronico e delle componenti hardware e software che costituiscono i sistemi informatici. Gli studenti saranno anche in grado di formulare soluzioni a semplici problemi computazionali tramite la progettazione di algoritmi e strutture dati.
Al termine del corso, avranno inoltre acquisito la capacità di realizzare programmi applicativi scritti nel linguaggio di programmazione Python.
Programma e contenuti
Il corso si divide in due parti: la prima rappresenta introduzione all'informatica e alla programmazione procedurale, mentre la seconda approfondisce i temi della programmazione orientata agli oggetti, degli algoritmi e delle strutture dati.

Più precisamente, la prima parte include i seguenti argomenti:
- rappresentazione dell'informazione: rappresentazione di numeri interi e frazionari; rappresentazione di numeri negativi; rappresentazioni in virgola fissa e mobile. Codifica dell'informazione testuale e multimediale.
- Architettura degli elaboratori: architettura di Von Neumann; linguaggio macchina; ciclo di esecuzione delle istruzioni. Dispositivi di memorizzazione e dispositivi di input/output.
- Programmi e linguaggi di programmazione: sintassi e semantica dei linguaggi; compilatori ed interpreti.
- Il linguaggio di programmazione Python: variabili ed espressioni; strutture di controllo; libreria standard.
- Tipi di dato composto: stringhe, liste, tuple, dizionari ed insiemi.
- Programmazione procedurale: definizione di funzioni; passaggio di parametri; funzioni ricorsive.

La seconda parte del corso tratta i seguenti argomenti:
- programmazione orientata agli oggetti: classi ed oggetti; attributi e metodi; ereditarietà e polimorfismo.
- Tecniche avanzate di programmazione: eccezioni, iteratori, espressioni generatrici.
- Algoritmi: definizione e proprietà; analisi della loro correttezza e complessità.
- Algoritmi di ricerca: ricerca lineare e binaria; hash tables.
- Algoritmi di ordinamento: algoritmi elementari; algoritmi ricorsivi; stabilità degli algoritmi.
- Strutture dati lineari: liste, stack e code.
- Alberi: definizioni; rappresentazione di strutture ad albero; alberi di ricerca; heap e code con priorità.
- Grafi: definizioni; rappresentazione di strutture a grafo; algoritmi su grafi.
- Cenni di teoria della computazione.
Metodi didattici
Lezioni (ore/anno in aula): 82
Esercitazioni (ore/anno in aula): 0
Attività pratiche (ore/anno in laboratorio): 24
Testi di riferimento
Allen B. Downey. Think Python: How to Think Like a Computer Scientist. O'Reilly.
https://greenteapress.com/thinkpython/thinkpython.html

Bradley N. Miller, David L. Ranum. Problem Solving With Algorithims and Data Structures Using Python. Franklin Beedle & Assoc.
https://runestone.academy/runestone/books/published/pythonds/index.html
Modalità verifica apprendimento
L'esame si svolge in laboratorio ed è suddiviso in due sezioni, una per ciascuna parte del corso. Le sezioni sono tra loro indipendenti e ciascuna comprende domande ed esercizi sugli argomenti del corso oltre ad esercizi di programmazione.
Altre informazioni
L'esame si svolge in laboratorio ed è suddiviso in due sezioni, una per ciascuna parte del corso. Le sezioni sono tra loro indipendenti e ciascuna comprende domande ed esercizi sugli argomenti del corso oltre ad esercizi di programmazione.
Obiettivi Agenda 2030 per lo sviluppo sostenibile