Per la parte di corso della Prof. Arcelli
Potete trovare il materiale relativo alle lezioni a questo link.
Testi e letture.
Il testi di riferimento del corso sono:
"Computer Architecture, A quantitative approach" di J.L. Hennessy e D.A. Patterson
"The C++ Standard Library" di Nicolai M. Josuttis
"Using OpenMP, portable shared memory parallel programming" di B. Chapman et al.
Questi sono testi di grande qualità che contiengono una quantità enorme di materiale che va ben oltre lo scopo di questo corso. Il materiale nelle trasparenze è sufficiente per sostenere il colloquio finale ma i libri è di grande interesse per chiunque voglia usare seriamente un calcolatore.
Per quanto riguarda l'ingegneria del software molto materiale è presente in rete. Per il colloquio le trasparenze sono sufficienti ma chi volesse approfondire il metoto CleanRoom di IBM può seguire questo link .
Sempre da IBM questa pagina contiene delle divertentissime sfide logiche. Mettetevi alla prova, il vostro nome potrebbe essere pubblicato sul loro sito (e chissà che non vi chiamino).
Per quanto riguarda gli algoritmi numerici vi raccomando il testo classico Numerical Recipies la cui seconda edizione si può consultare gratis a questo link: http://www.nrbook.com/a/bookcpdf.php .
Per quanto riguarda la programmazione a oggetti e il C++, raccomando la lettura della bellissima (perchè chiara e concisa) introduzione di Muller. Introduction to OOP using C++ Consultabile anche qui.
Altrettanto chiaro e interessante il tutorial http://www.arachnoid.com/cpptutor/index.html che contiene tra l'altro un'ottima parte dedicata agli stream di input ed output.
E infine esiste un'ottima collezione di articoli che riguardano la programmazione a oggetti sia in C++ che in JAVA nella rivista gestita dagli studenti crossroads: Objective Viewpoint.
Anche se nel corso viene trattato troppo poco ritengo utile che sappiate almeno le basi di UML.
Un buon riassunto delle potenzialità di questo linguaggio visuale per la modellizzazione del software la trovate qui.
FPGA
Una buona introduzione per chi s'interessa dell'argomento è disponibile a questo link.
Vi segnalo inoltre:
http://www.altera.com/
http://www.xilinx.com/
Programmazione Paralela:
Riguardo a "Threads", una buona pagina sulla gestione dei thraed Posix (Pthread) è questa. Per i thread gestiti in ambiente Windows Win32 API potete invece guardare qui.
OpenMP. DA QUEST'ANNO VIENE STUDIATO E SPERIMENTATO NEL CORSO.
Un buon tutorial di OpenMP lo trovate qui. OpenMP è ufficialmente supportato dai compilatori GCC dalla versione 4.2.x (OpenMP 2.5) ! Consultate il progetto GOMP. l'installazione non dovrebbe presentare alcun problema in Linux (cercate il pacchetto con le librerie OpenMP sen non è già stato installato automaticamente).
GCC 4.4 supporterà nativamente OpenMP3.0.
Per installare GCC con supporto OpenMP in Windows consultate questa pagina.
Per installare GCC con supporto OpenMP in MacOsX consultate questa pagina.
Chi vuole usare OpenMP in ambiente Visual Studio cosulti questa pagina.
Un elenco dei compilatori che supportano OpenMP si trova qui.
Abbiamo avuto una lezione tenuta da Francesco Rossi su CUDA.
Si veda per esempio : http://www.nvidia.it/object/cuda_what_is_it.html
Molto materiale lo trovate a questo link : http://gpgpu.org/tag/tutorials-courses/page/2 e le pagine ad esso collegate.
Le librerie MPIch le trovate qui. Dalla stessa pagina potete accedere ad una vasta documentazione su MPI.
Per quanto riguarda le STL, molti sono i manuali in rete. Fate l'esercizio qui sotto e guardate tutti i link.
Esercizio: Imparate ad usare la funzione SORT dell STL per ordinare a vostro piacimento un vettore di oggetti "data".
Potete trovare il materiale relativo alle lezioni a questo link.
Testi e letture.
Il testi di riferimento del corso sono:
"Computer Architecture, A quantitative approach" di J.L. Hennessy e D.A. Patterson
"The C++ Standard Library" di Nicolai M. Josuttis
"Using OpenMP, portable shared memory parallel programming" di B. Chapman et al.
Questi sono testi di grande qualità che contiengono una quantità enorme di materiale che va ben oltre lo scopo di questo corso. Il materiale nelle trasparenze è sufficiente per sostenere il colloquio finale ma i libri è di grande interesse per chiunque voglia usare seriamente un calcolatore.
Per quanto riguarda l'ingegneria del software molto materiale è presente in rete. Per il colloquio le trasparenze sono sufficienti ma chi volesse approfondire il metoto CleanRoom di IBM può seguire questo link .
Sempre da IBM questa pagina contiene delle divertentissime sfide logiche. Mettetevi alla prova, il vostro nome potrebbe essere pubblicato sul loro sito (e chissà che non vi chiamino).
Per quanto riguarda gli algoritmi numerici vi raccomando il testo classico Numerical Recipies la cui seconda edizione si può consultare gratis a questo link: http://www.nrbook.com/a/bookcpdf.php .
Per quanto riguarda la programmazione a oggetti e il C++, raccomando la lettura della bellissima (perchè chiara e concisa) introduzione di Muller. Introduction to OOP using C++ Consultabile anche qui.
Altrettanto chiaro e interessante il tutorial http://www.arachnoid.com/cpptutor/index.html che contiene tra l'altro un'ottima parte dedicata agli stream di input ed output.
E infine esiste un'ottima collezione di articoli che riguardano la programmazione a oggetti sia in C++ che in JAVA nella rivista gestita dagli studenti crossroads: Objective Viewpoint.
Anche se nel corso viene trattato troppo poco ritengo utile che sappiate almeno le basi di UML.
Un buon riassunto delle potenzialità di questo linguaggio visuale per la modellizzazione del software la trovate qui.
FPGA
Una buona introduzione per chi s'interessa dell'argomento è disponibile a questo link.
Vi segnalo inoltre:
http://www.altera.com/
http://www.xilinx.com/
Programmazione Paralela:
Riguardo a "Threads", una buona pagina sulla gestione dei thraed Posix (Pthread) è questa. Per i thread gestiti in ambiente Windows Win32 API potete invece guardare qui.
OpenMP. DA QUEST'ANNO VIENE STUDIATO E SPERIMENTATO NEL CORSO.
Un buon tutorial di OpenMP lo trovate qui. OpenMP è ufficialmente supportato dai compilatori GCC dalla versione 4.2.x (OpenMP 2.5) ! Consultate il progetto GOMP. l'installazione non dovrebbe presentare alcun problema in Linux (cercate il pacchetto con le librerie OpenMP sen non è già stato installato automaticamente).
GCC 4.4 supporterà nativamente OpenMP3.0.
Per installare GCC con supporto OpenMP in Windows consultate questa pagina.
Per installare GCC con supporto OpenMP in MacOsX consultate questa pagina.
Chi vuole usare OpenMP in ambiente Visual Studio cosulti questa pagina.
Un elenco dei compilatori che supportano OpenMP si trova qui.
Abbiamo avuto una lezione tenuta da Francesco Rossi su CUDA.
Si veda per esempio : http://www.nvidia.it/object/cuda_what_is_it.html
Molto materiale lo trovate a questo link : http://gpgpu.org/tag/tutorials-courses/page/2 e le pagine ad esso collegate.
Le librerie MPIch le trovate qui. Dalla stessa pagina potete accedere ad una vasta documentazione su MPI.
Per quanto riguarda le STL, molti sono i manuali in rete. Fate l'esercizio qui sotto e guardate tutti i link.
Esercizio: Imparate ad usare la funzione SORT dell STL per ordinare a vostro piacimento un vettore di oggetti "data".