2. questo è un corso (avanzato) di informatica
Prof. Pier Luca Lanzi
3. “assumiamo” che tutti abbiano conoscenze di
base di informatica e di programmazione
per chi avesse difficoltà “di base” il CCS ha
un servizio di tutoring su C/C++/Matlab
Prof. Pier Luca Lanzi
4. Laurea intorno ai 25-27 anni
Pensione intorno ai 65-70 anni
Circa 40 anni di vita lavorativa
Cosa dovremmo imparare in questo corso?
Prof. Pier Luca Lanzi
6. “cambiare tutto per non cambiare niente”
algoritmi
6
macchina di Von Neuman
Certe cose però cambiano…
Linguaggi Programmazione
(Cobol, RPG, Pascal, C, ecc.)
Programmazione a Oggetti
(Simula, Smalltalk, C++, Java)
Calcolo Parallelo
(vettoriale, MPI, OpenMP, CUDA)
strutture dati
Prof. Pier Luca Lanzi
7. qual è l’obiettivo del corso?
imparare i principi generali
(valgono sempre)
impararli a utilizzare ora
(con le tecnologie disponibili)
Prof. Pier Luca Lanzi
8. quali principi generali?
algoritmi, strutture dati, calcolo parallelo
quale tecnologia?
C++, programmazione a oggetti,
MPI, OpenMP, CUDA
Prof. Pier Luca Lanzi
9. Perché Imparare a Programmare?
•
•
•
•
Difficile pensare che per risolvere un
problema possa fare a meno di un
calcolatore
“non dobbiamo diventare
programmatori”
“ci sono gli informatici per quello,
l’implementazione la possono
fare loro”
E’ davvero possibile?
Sviluppo senza controllo
Correttezza
Modifica
Prof. Pier Luca Lanzi
9
10. Obiettivi del Corso
•
•
10
Darvi degli strumenti che vi permettano di implementare
(almeno in forma prototipale) degli algoritmi/metodi
partendo da una descrizione ad alto livello (da un
articolo?)
Conoscenze di base per
Valutarne la complessità
Valutare le conseguenze delle scelte implementative
Valutare la possibilità di migliorarne le prestazioni
attraverso tecniche di parallelizzazione
Prof. Pier Luca Lanzi
11. Modalità di Valutazione in Itinere
•
11
Il voto si compone di
9 punti di scritto (relativo a tutto il programma svolto)
21 punti distribuiti su tre prove pratiche
(C++, algoritmi e strutture dati)
A causa di problemi logistici, le prove pratiche si terranno il sabato
mattina, avranno una durata di 5 ore (dalle 8:15 alle 13:15)
Il voto ottenuto durante le tre prove pratiche è valido fino all’appello di
Marzo compreso.
•
Prova Scritta
Due-Tre esercizi più un esercizio di recupero
Durante la prova scritta sarà possibile utilizzare i due libri di testo e le
trasparenze per la parte di calcolo parallelo che non contengano esercizi
Prof. Pier Luca Lanzi
12. Modalità di Valutazione non in Itinere
•
12
Il voto (per l’esame svolto durante il corso) si compone di
21 punti di scritto (relativo a tutto il programma svolto)
9 punti ottenuti durante una prova pratica svolta in laboratorio informatico
Per svolgere la prova pratica bisogna ottenere almeno 12 punti nella
prova scritta.
Prof. Pier Luca Lanzi
13. Modalità di Valutazione
•
•
•
13
Prove pratiche
Sono tre e sono obbligatorie e avranno una durata di 5 ore
Svolta in gruppi di 3-4 studenti (selezionati a caso)
Si svolgono in un’aula standard quindi dovrete utilizzare i vostri portatili
Struttura delle prove pratiche
Dopo l’appello verranno formati i gruppi e verranno
distribuiti uno o più articoli che descrivono un algoritmo
Ogni gruppo ha 5 ore di tempo per implementare l’algoritmo descritto
Recupero
E’ prevista la possibilità di essere assenti per una prova pratica o di
rifiutare uno dei voti di una delle tre prove pratiche, svolgendo un
esercizio di recupero durante lo scritto.
Prevediamo una prova di recupero di laboratorio a Luglio
e una prova di recupero a Settembre
Le prove di recupero sono svolte singolarmente in laboratorio informatico
Prof. Pier Luca Lanzi
15. Materiale
•
15
Algoritmi e Strutture Dati
Bertossi Alan A., Montresor Alberto. “Algoritmi e
strutture di dati” (seconda edizione), CittàStudi 2010
Primi 17 capitoli
Trasparenze del corso
•
Programmazione C++
Stanley B. Lippman, Barbara E. Moo, Josee Lajoie
“C++ Primer”, 4th Edition Addison-Wesley
Primi 16 Capitoli e le appendici
•
Calcolo Parallelo
Trasparenze delle lezioni
Prof. Pier Luca Lanzi
16. Riferimenti
•
16
Algoritmi e Strutture Dati
Bertossi Alan A., Montresor Alberto. “Algoritmi e
strutture di dati” (seconda edizione), CittàStudi 2010
Primi 17 capitoli
Trasparenze del corso
•
Stanley B. Lippman, Barbara E. Moo, Josee Lajoie
“C++ Primer”, 5th Edition Addison-Wesley
Primi 16 Capitoli e le appendici
•
Calcolo Parallelo
Trasparenze delle lezioni
Prof. Pier Luca Lanzi
17. Docenti del Corso
•
•
•
Prof. Pier Luca Lanzi (lezioni)
Dipartimento di Elettronica e Informazione
pierluca.lanzi@polimi.it
tel. 02 23993472
http://www.pierlucalanzi.net
Ricevimento
Mercoledì, dalla 14:30 alle 16:30,
su appuntamento
Ing. Daniele Loiacono
(esercitazioni e laboratorio)
Dipartimento di Elettronica e Informazione
loiacono@elet.polimi.it
http://www.dei.polimi.it/people/loiacono
Prof. Pier Luca Lanzi
17
18. Per la Programmazione
•
•
•
•
18
Distribuzione GNU/Linux “Ubuntu” disponibile al sito
http://www.ubuntu.com/
E’ possibile installare la distribuzione direttamente su un PC
oppure utilizzare un DVD live
Verrà fornita una macchina virtuale per VirtualBox che permette
l’esecuzione di una distribuzione Ubuntu su un altro sistema
operativo
Per programmi di poche righe è anche possibile utilizzare siti
specializzati che danno la possibilità di compilare ed eseguire
semplici programmi
http://codepad.org/
http://ideone.com/
Prof. Pier Luca Lanzi
19. “una goccia di pratica è meglio
di un oceano di teoria”
Giuseppe Perlati
Prof. Pier Luca Lanzi
20. "Students have to be active in developing their
knowledge, they can't passively assimilate it.”
Eric Mazur, Harvard
Prof. Pier Luca Lanzi
21. Cosa Succede in Aula?
21
Discutere, domandare, interagire
Se ci sono punti non chiari, chiedere spiegazioni
Se volete approfondimenti, chiedete.
Prof. Pier Luca Lanzi