SSD: ING-INF/05
CFU: 9
Insegnamenti propedeutici (se previsti dall'Ordinamento del CdS)
Nessuno
Eventuali prerequisiti
Nessuno
Obiettivi formativi
Fornire le nozioni di base per le discipline informatiche, introducendo lo studente allo studio dei fondamenti teorici dell’informatica, dell’architettura dei calcolatori e dei linguaggi di programmazione ad alto livello. Fornire le conoscenze necessarie per lo sviluppo di programmi per la risoluzione di problemi di limitata complessità.
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione
Lo studente deve dimostrare di conoscere, saper comprendere e saper descrivere i concetti di base relativi all’informatica teorica, all’architettura dei calcolatori e ai linguaggi di programmazione ad alto livello. Inoltre, lo studente deve dimostrare di conoscere e saper comprendere i programmi per la risoluzione di problemi di limitata complessità.
Capacità di applicare conoscenza e comprensione
Lo studente deve dimostrare di saper applicare le conoscenze apprese per la soluzione di semplici problemi di programmazione, progettando e sviluppando programmi per la soluzione di problemi di limitata complessità.
Programma - Syllabus
Il concetto di elaborazione e di algoritmo. I modelli in Informatica. Automi a stati finiti: definizione, grafo e tabella. Macchina di Turing. Calcolabilità.
Algebra di Boole: definizioni e teorema di De Morgan. Funzioni booleane. L’algebra della logica delle proposizioni.
La codifica e la rappresentazione dell’informazione. Rappresentazione dei numeri naturali, relativi, reali.
Fondamenti di architettura dei sistemi di elaborazione: il modello di Von Neumann, funzionamento del processore. Le memorie, l’Input/Output.
Il sistema operativo. Il ciclo di vita di un programma. Traduttori ed interpreti. I linguaggi di programmazione: grammatiche; la Backus-Naur Form.
Fondamenti di programmazione: tipi di dato semplici strutturati; istruzioni elementari e strutture di controllo.
La programmazione strutturata. Array. I sottoprogrammi e le librerie standard.
Allocazione dinamica e puntatori. Algoritmi su sequenze e array. Strutture e stringhe. Operazioni di Input/Output verso le memorie di massa.
I tipi di dato astratto: liste, pile, code. Algoritmi di ricerca ed ordinamento.
Il linguaggio C++. Impiego di un ambiente di sviluppo dei programmi con esempi di algoritmi fondamentali e di gestione di tipi di dato astratto. Elementi di programmazione ad oggetti.
Materiale didattico
Si veda sito web del docente della materia.
Modalità di svolgimento dell'insegnamento
I docenti utilizzeranno: a) lezioni frontali per circa il 60% delle ore totali, b) ed esercitazioni sullo sviluppo di programmi in linguaggio C++ per circa il 40% delle ore totali.
Le esercitazioni vengono svolte in aula e/o in laboratorio con l’utilizzo di un ambiente di sviluppo integrato ed attraverso piattaforme per laboratori didattici virtuali.
Verifica di apprendimento e criteri di valutazione
Modalità di esame
L'esame si articola in prova scritta e orale. In caso di prova scritta i quesiti sono: a risposta libera.
L'esame consiste in una prova di programmazione è vincolante ai finire dell'accesso alla prova finale.