.
.
.
.
.
.
.
.
.
.
.
.

Fondamenti di informatica


Denominazione del corso: Fondamenti di informatica
Corso di studi: I3D - Laurea in Ingegneria Industriale
Quadrimestre/Semestre:
Anno:
Numero di moduli: 1
Crediti: 9
Ore: 90
Tipologia: C - Attività affini o integrative
Struttura: monodisciplinare
Settore Scientifico Disciplinare: ING-INF/05 (Sistemi Di Elaborazione Delle Informazioni)

Docente: Eliseo Clementini (90 ore). Titolo copertura: cattedra (prof. associato)
Orario di ricevimento: su appuntamento via e-mail eliseo.clementini@univaq.it


Programma sintetico del corso:

Il corso è finalizzato all'acquisizione dei concetti fondamentali dell'informatica, senza trascurare gli aspetti sperimentali della disciplina e la sua applicazione immediata. Si inizia con una descrizione del sistema informatico in generale per poi concentrarsi sulle tecniche di programmazione “ad alto livello” con lo scopo di far maturare negli studenti l’abilità a progettare programmi. Il linguaggio di riferimento sarà il Python, un linguaggio orientato agli oggetti di nuova generazione che facilita l’apprendimento agli studenti neofiti mettendoli in condizione di poter utilizzare da subito il linguaggio di programmazione per risolvere problemi reali di interesse pratico.

Programma esteso del corso:

Link Programma completo (PDF)    (Aggiornato il 11-09-2017)

1. Introduzione ai sistemi informatici. Processi e processori. Problemi, algoritmi e programmi. Linguaggi di programmazione. Architettura del calcolatore. Sistemi numerici posizionali a base fissa. Conversioni di base. Rappresentazione di numeri negativi in modulo e segno e in complemento a due. Rappresentazione di numeri reali in virgola mobile normalizzata. Codice ASCII. Algebra di Boole e principali funzioni logiche. 2. Progettazione di algoritmi con diagrammi di flusso. Sviluppo di algoritmi. Concetto di variabile. Operazioni elementari: lettura, scrittura, assegnazione e confronto. Diagrammi di flusso. Pseudo-codice. Struttura di controllo se-allora-altrimenti. Cicli con pre-condizione. Controllo sui dati di input. 3. Linguaggio di programmazione Python. Costrutti base del Python. Struttura di un programma. Variabili. Tipi semplici e operazioni. Espressioni numeriche e condizionali. Istruzione di assegnazione. Istruzione composta. Selezione binaria. Funzioni standard di ingresso/uscita. Istruzioni cicliche (WHILE, FOR). Costruzione di cicli annidati. Selezione n-aria. 4. Programmazione con funzioni. Sottoprogrammi. Progettazione top-down. Parametricità. Dichiarazione di funzioni. Variabili locali. Parametri formali e attuali. Ciclo di vita delle variabili. Visibilità delle variabili. Ricorsione. 5. Programmazione con tipi composti. Vettori e matrici. Liste. Stringhe. File di testo. Tuple. Dizionari. 6. Programmazione a oggetti. Definizione di classi. Attributi e metodi. Ereditarietà. 7. Algoritmi fondamentali. Ricerca sequenziale. Ricerca binaria. Ordinamento insertionsort. Tempo di esecuzione. Complessità computazionale. 8. Programmazione funzionale. Funzione Lambda. Map. Filter. Reduce. 9. Applicazioni grafiche. Grafica vettoriale con Turtle Graphics. Elaborazione immagini con libreria PIL.


Testi consigliati:

1. A. Downey, J. Elkner, C. Meyers. Pensare da informatico: Imparare con Python. Green Tea Press. 2003

2. K.A. Lambert. Programmazione in Python. Apogeo. 2012

3. E. Clementini. Fondamenti di Informatica: Programmazione strutturata in C++. Carocci Editore. 2006.

            
            
                         


Modalità d'esame:

Durante il corso è prevista una parte pratica in cui gli studenti devono costruire i propri programmi. Almeno una settimana prima dell’appello bisogna inoltre discutere un progetto svolto su un determinato argomento. Il giorno dell’appello è prevista la prova d’esame composta da test da svolgere sul proprio computer portatile o su carta. Bisogna portare una chiavetta USB per la consegna degli elaborati. Il punteggio attribuito è di 5 punti al progetto e di 25 punti alla prova d’esame.


Risultati di apprendimento previsti:

Il corso ha lo scopo di far maturare negli studenti l’abilità a progettare programmi. Il linguaggio di riferimento sarà il Python. Saranno approfonditi aspetti relativi alle applicazioni grafiche.


Link al materiale didattico:

http://www.didattica.univaq.it/moodle/course/view.php?id=5781