Anno di corso: 1

Crediti: 8
Crediti: 8
Crediti: 8
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale

Anno di corso: 2

Anno di corso: 3

PROGRAMMAZIONE E AMMINISTRAZIONE DI SISTEMA

Scheda dell'insegnamento

Anno accademico di regolamento: 
2016/2017
Anno di corso: 
3
Anno accademico di erogazione: 
2018/2019
Tipo di attività: 
Obbligatorio a scelta
Lingua: 
Italiano
Crediti: 
8
Ciclo: 
Primo Semestre
Ore di attivita' didattica: 
80
Prerequisiti: 

Conoscenze di base di programmazione.

Moduli

Metodi di valutazione

Modalita' di verifica dell'apprendimento: 

La verifica dell'apprendimento comprende una prova scritta ed una prova orale.

La prova scritta è generalmente un progetto che prevede lo sviluppo di una soluzione ad un problema assegnato con le tecniche e gli strumenti visti nel corso. Il problema è definito in modo tale da verificare l'acquisizione delle competenze pratiche e di problem solving. Il testo del progetto è pubblicato un mese prima dell'appello d'esame e gli studenti hanno tre settimane per la consegna. La valutazione del progetto è in trentesimi ed è la base della valutazione finale.

La prova orale consiste in una discussione della soluzione sviluppata, domande di teoria sulle nozioni presentate a lezione e domande di ragionamento e deduzione. La valutazione della prova orale, consente di aumentare (o diminuire) la valutazione base ottenuta in precedenza nel progetto.

Non sono previste prove in itinere.

Valutazione: 
Voto Finale

Obiettivi formativi

Al termine del corso, lo studente sarà in grado di progettare e sviluppare programmi modulari e manutenibili. Sarà inoltre in grado di applicare le moderne tecniche di programmazione C++ per sviluppare applicazioni performanti e grafiche gestendo in modo corretto ed attento le risorse. le competenze acquisite consentiranno allo studente di affrontare e comprendere le applicazioni C++ più complesse.

Contenuti

Il corso si prefigge di dare allo studente le basi necessarie per affrontare lo sviluppo di applicazioni C++ in modo corretto ed attento alle problematiche di gestione delle risorse. A tal fine verranno mostrate, attraverso l'use intensivo di casi di studio, le criticità e difficoltà inerenti al linguaggio C++ e le tecniche più adatte ad affrontarle. Verrà inoltre presentato un framework cross-platform per lo sviluppo di applicazioni C++ grafiche.

Programma esteso

Introduzione al C++.
Concetti base di programmazione C++
- tipi di dati, puntatori, reference, scoping
- casting,
C++ come linguaggio ad oggetti
- classi, costruttori e distruttori, overloading, metodi friend
- inline, constness"

Concetti avanzati di programmazione C++
- overloading degli operatori
- metodi virtual, abstract, polimorfismo
- ereditarietà
Programmazione generica
- template
- iteratori

La libreria Standard (STL)
- Le classi container
- Gli algoritmi
- Funtori
- Multithread

Uso delle librerie esterne
- Librerie statiche
- Librerie dinamiche
- La libreria OpenMP

I nuovi standard C++11, C++14

Applicazioni GUI
- Ambiente di sviluppo QT Creator
- Sviluppo di interfacce grafiche
- Gestione degli eventi
- Le librerie Qt, QTWidgets

Bibliografia consigliata

Bjarne Stroustrup, The C++ Programming Language - Special Edition, Addison Wensley. La "Special Edition" è la versione riveduta e corretta della "Third Edition".

Bruce Eckel, Thinking in C++ vol. 1 e vol. 2, Prentice Hall

Peter Van Weert, Marc Gregoire, C++ Standard Library Quick Reference, Apress

Lee Zhi Eng, Qt5 C++ GUI Programming Cookbook, Packt Publishing

Slides e dispense varie.

Metodi didattici

Lezioni ed esercitazioni in aula e/o in laboratorio.

Attività di laboratorio con casi di studio pratici.