( english version )
Fondamenti di informatica + Laboratorio di programmazione ( 9 CFU )
Prof. Michele Tomaiuolo
     Tel. 0521 905712 - Fax. 0521 905723           E-mail. tomamic@ce.unipr.it           Home page. http://www.ce.unipr.it/people/tomamic

Finalità
Apprendere i concetti di base dell'informatica e saper sviluppare semplici programmi per calcolatori elettronici, secondo il paradigma ad oggetti. Come linguaggio di programmazione principale viene usato il C++.

Lezioni in aula, con l'ausilio di presentazioni già disponibili agli studenti. Soluzione di esercizi in aula. Esercizi di programmazione in laboratorio.

Programma
Contenuti
Introduzione all'informatica: rappresentazione dei dati, linguaggi e macchine astratte, sistemi informatici, sviluppo del software. Programmazione in C++: tipi di dati e strutture di controllo, collezioni e flussi di dati, funzioni, classi ed oggetti, interfacce grafiche, gestione della memoria.

Programma esteso
Introduzione all'informatica (26 ore, in aula)
1. Introduzione: informatica, problemi, algoritmi, sistemi ad oggetti.
2. Rappresentazione dei dati: numeri in complemento a due ed in virgola mobile; algebra booleana; rappresentazione del testo, codifica ASCII ed Unicode, HTML e CSS; rappresentazione di immagini e suoni.
3. Linguaggi e macchine astratte: automi a stati finiti; espressioni regolari; macchina di Touring; architettura di von Neumann; linguaggi e paradigmi di programmazione; complessità computazionale, algoritmi di ricerca e di ordinamento.
4. Sistemi informatici: sistemi operativi; basi di dati relazionali, SQL; reti di calcolatori, World Wide Web, HTTP, PHP, Javascript, AJAX.
5. Sviluppo del software: metodologie di sviluppo e qualità del software; ricerca degli errori; gestione delle versioni; contratti, asserzioni, eccezioni; collaudo.

Programmazione ad oggetti in C++ (22 ore, in aula)
1. Il linguaggio C++: struttura di un programma, tipi di dati, costanti, variabili, espressioni, condizioni, cicli, annidamento.
2. Collezioni e flussi di dati: vettori, matrici, mappe; lettura e scrittura dati, console, file, stringhe.
3. Funzioni: ambito degli identificatori, modalità di passaggio dei parametri, stack e record di attivazione, ricorsione.
4. Classi ed oggetti: incapsulamento, allocazione dinamica di oggetti, associazioni tra classi; ereditarietà e polimorfismo.
5. Interfacce grafiche: librerie Qt, disposizione degli elementi, bottoni, menu; meccanismi di segnalazione, eventi, timer, scene con elementi animati.
6. Gestione della memoria: iteratori, puntatori, array ed array di caratteri, gestione dinamica della memoria.




Attività d'esercitazione
Le esercitazioni in laboratorio sono centrali per il corso. Gli esercizi proposti vertono sugli stessi argomenti generali delle lezioni in aula. L'obiettivo è di introdurre i principi della programmazione orientata agli oggetti, guidando lo studente alla soluzione di problemi con un livello di complessità crescente.

Modalità d'esame
L'esame consiste di una prova di teoria (brevi esercizi e quiz, a cui rispondere in circa mezz'ora), una prova di programmazione (un programma ad oggetti in C++, da sviluppare in circa 3 ore) e un colloquio. La partecipazione continua e particolarmente proficua alle esercitazioni potrebbe esonerare dalla prova di programmazione finale.

Propedeuticità
Nessuna propedeuticità. Si suppone comunque che lo studente conosca le basi dell'uso del computer e di Internet - l'equivalente dei moduli 1, 2, 3 e 7 del Syllabus ECDL (European Computer Driving Licence).

Testi consigliati
D. Mandrioli, S. Ceri et al.: Informatica arte e mestiere - McGraw-Hill (2008) - 978-8838664298
B. Eckel: Thinking in C++, vol. 1 - Prentice-Hall (2000) - 978-0139798092
B. Stroustrup: Programming: Principles and Practice Using C++ - Addison-Wesley (2009) - 978-0321543721

Testi d'approfondimento
J.G. Brookshear: Informatica. Una panoramica generale. Pearson (2012).
U. Avalle, L. Console, M. Ribaudo. Introduzione all'informatica. UTET (2010).
E. Clementini: Fondamenti di Informatica – Programmazione strutturata in C++. Carocci (2006).
A. Koenig, B.E. Moo: Accelerated C++: Practical Programming by Example. Addison-Wesley (2000).
H. Schildt: C++: A Beginner's Guide. McGraw-Hill (2003).
S. Prata: C++ Primer Plus. Addison-Wesley (2011).
L.J. Aguilar: Fondamenti di programmazione in C++. McGraw-Hill (2008).
B. Eckel: Thinking in C++, vol. 2. Prentice-Hall (2003) – 978-0131225527.
 
stampa il programma ~ torna indietro