F57033 - Programmazione per la Musica [a.a. 2006-07]
Indice
Il corso di Programmazione per la Musica è un insegnamento fondamentale
del corso di laurea (triennale) in Scienze e Tecnologie della Comunicazione
Musicale.
- Lunedi dalle 08:30 alle 12:30 in aula Sigma (Via Comelico 39).
- Martedi dalle 08:30 alle 10:30 in aula Sigma (Via Comelico 39).
- Venerdi dalle 14:30 alle 16:30 in aula Sigma (Via Comelico 39).
[Orario cosi' posticipato di un'ora a partire dal 20 aprile, per cause di forza maggiore.]
Visto che il numero di iscritti al secondo anno del corso di laurea in STCM
e' pari circa al doppio delle postazioni di lavoro presenti in Aula 2, il
corso viene erogato su due turni. Piu' precisamente, ogni settimana verranno
tenute due lezioni (nel seguito denominate "Lezione A" e "Lezione B") di due
ore ciascuna, che verranno ripetute due volte nel corso della stessa settimana
come segue:
- Lunedi dalle 08:30 alle 10:30 -- Lezione A
- Lunedi dalle 10:30 alle 12:30 -- Ripetizione della Lezione A
- Martedi dalle 08:30 alle 10:30 -- Lezione B
- Venerdi dalle 13:30 alle 15:30 -- Ripetizione della Lezione B
Il corso puo' essere seguito combinando liberamente, per ciascuna settimana,
una qualunque Lezione A con una qualunque Lezione B (non necessariamente le
stesse per tutta la durata del corso).
Il programma consiste di tutti e soli gli argomenti trattati a lezione,
secondo quanto viene via via pubblicato nella sottostante sezione
Diario delle lezioni tenute.
La prova di esame si svolge in Silab (via Comelico 39), e consiste nella
realizzazione di un programma in linguaggio Java conforme a specifiche date.
- Appello 1 a.a. 2006-07 - Aula Sigma - Ore 14:30 - 18 Jun 07 -
[Voti]
- Appello 2 a.a. 2006-07 - Aula Sigma - Ore 14:30 - 06 Jul 07 -
[Voti]
- Appello 3 a.a. 2006-07 - Aula Sigma - Ore 14:30 - 20 Jul 07 -
[Voti]
- Appello 4 a.a. 2006-07 - Aula Sigma - Ore 14:30 - 28 Sep 07 -
[Voti]
- Appello 5 a.a. 2006-07 - Aula Sigma - Ore 14:30 - 01 Feb 08 -
[Voti]
- Appello 6 a.a. 2006-07 - Aula Sigma - Ore 14:30 - 29 Feb 08 -
[Voti]
Viste norme entrate in vigore il 1 gennaio 2005, la verbalizzazione
può avvenire ESCLUSIVAMENTE in occasione di un appello ufficiale,
gestito tramite il sistema SIFA, al quale il candidato risulti
regolarmente iscritto. Si tenga presente che dette norme rendono
praticamente impossibile la verbalizzazione di un voto al di fuori
del normale regime degli appelli a calendario, e che la soluzione
in extremis di problemi burocratici legati alla ritardata o mancata
verbalizzazione di un voto sarà estremamente problematica.
(Per situazioni di emergenza -- p.es. imminenza dell'esame di laurea,
scadenza dei termini per la presentazione di domande di borse di
studio, etc. -- presentarsi durante l'orario di
ricevimento
dopo aver concordato una linea d'azione con la segreteria didattica
del corso di studi di appartenenza e/o della Facoltà.)
Lezioni 01-02 -- Lun 05.03.07 -- Introduzione a JDK (Java Development Kit), alla libreria Java Sound e alla documentazione della specifica MIDI.
Lezioni 03-04 -- Ven 09.03.07 -- Classi vuote; commenti; metodi vuoti; stampa di stringhe; produzione (MIDI) di singoli suoni, di diadi e di triadi.
Lezioni 03'-04' -- Ven 09.03.07 -- Ripetizione delle Lezioni 03-04.
Lezioni 05-06 -- Lun 12.03.07 -- Costrutto iterativo for. Array di stringhe: importazione di argomenti da linea di comando.
Lezioni 07-08 -- Lun 12.03.07 -- Scale a gradi equidistanti (cromatiche, esatonali, etc.).
Lezioni 09-10 -- Ven 16.03.07 -- Lezione sospesa.
Lezioni 11-12 -- Lun 19.03.07 -- Scale a gradi non equidistanti (maggiore, minore, frigia, etc.).
Lezioni 13-14 -- Lun 19.03.07 -- Costrutti iterativi while e do-while: scale ascendenti e discendenti.
Lezioni 15-16 -- Mar 20.03.07 -- Classi e oggetti: riscrittura in modalita' object-oriented degli esempi precedenti.
Lezioni 17-18 -- Ven 23.03.07 -- Lezione sospesa (concomitanza con altra lezione del docente)
Lezioni 19-20 -- Lun 26.03.07 --
Lezioni 19'-20' -- Lun 26.03.07 --
Lezioni 21-22 -- Mar 27.03.07 --
Lezioni 21'-22' -- Ven 30.03.07 --
Lezioni 23-24 -- Lun 02.04.07 --
Lezioni 23'-24' -- Lun 02.04.07 --
Lezioni 25-26 -- Mar 27.03.07 --
Lezioni 25'-26' -- Ven 06.04.07 -- Lezione sospesa (vacanza accademica)
Lezioni 27-28 -- Lun 09.04.07 -- Lezione sospesa (vacanza accademica)
Lezioni 27'-28' -- Lun 09.04.07 -- Lezione sospesa (vacanza accademica)
Lezioni 29-30 -- Mar 10.04.07 -- Lezione sospesa (vacanza accademica)
Lezioni 25'-26' -- Ven 13.04.07 --
Lezioni 31-32 -- Lun 16.04.07 --
Lezioni 31'-32' -- Lun 16.04.07 --
Lezioni 33-34 -- Mar 16.04.07 --
Lezioni 33'-34' -- Ven 20.04.07 --
Lezioni 35-36 -- Lun 23.04.07 --
Lezioni 35'-36' -- Lun 23.04.07 --
Lezioni 37-38 -- Mar 24.04.07 --
Lezioni 37'-38' -- Ven 27.04.07 -- Lezione sospesa (indisponibilita' aula)
Lezioni 39-40 -- Lun 30.04.07 -- Lezione sospesa (vacanza accademica)
Lezioni 39'-40' -- Lun 30.04.07 -- Lezione sospesa (vacanza accademica)
Lezioni 41-42 -- Mar 01.05.07 -- Lezione sospesa (festivita' nazionale)
Lezioni 37'-38' -- Ven 04.05.07 --
Lezioni 43-44 -- Lun 07.05.07 --
Lezioni 43'-44' -- Lun 07.05.07 --
Lezioni 45-46 -- Mar 08.05.07 --
Lezioni 45'-46'-- Ven 11.05.07 --
Lezioni 45-46 -- Lun 14.05.07 --
Lezioni 45'-46' -- Lun 14.05.07 --
Lezioni 47-48 -- Mar 18.05.07 --
Lezioni 47'-48'-- Ven 18.05.07 --
Lezioni 49-50 -- Lun 21.05.07 --
Lezioni 49'-50' -- Lun 21.05.07 --
Lezioni 51-52 -- Mar 22.05.07 --
Lezioni 51'-52'-- Ven 25.05.07 --
Lezioni 51-52 -- Lun 28.05.07 -- Lezione sospesa (missione del docente fuori sede)
Lezioni 51'-52' -- Lun 28.05.07 -- Lezione sospesa (missione del docente fuori sede)
Lezioni 53-54 -- Mar 29.05.07 -- Lezione sospesa (missione del docente fuori sede)
Lezioni 53'-54'-- Ven 01.06.07 -- (a turni riuniti, per ricupero lezione del 28.05.07)
Lezioni 55-56 -- Lun 03.06.07 -- (a turni riuniti, per ricupero lezione del 29.05.07)
Lezioni 55'-56' -- Lun 03.06.07 -- (a turni riuniti)
Lezioni 57-58 -- Mar 04.06.07 -- Esercitazione di preparazione all'esame
Lezioni 57'-58' -- Ven 08.06.07 -- Esercitazione di preparazione all'esame
Il corso e' terminato.
Testo di riferimento
Non viene adottato alcun testo di riferimento particolare. Qualunque
testo introduttivo alla programmazione nel linguaggio Java è adeguato
ai fini del corso. Uno dei migliori testi attualmente in commercio è
il seguente:
- Giovanni Pighizzini e Mauro Ferrari
- DAI FONDAMENTI AGLI OGGETTI - Corso di programmazione Java
- Addison Wesley (2005), ISBN 88-7192-205-6 (Seconda Edizione)
al quale sono associati un CD-ROM (distribuito con il libro) che
(oltre a una copia del Java Development Kit versione 1.5 di Sun
Microsystems per i sistemi operativi Windows e Linux)
"contiene alcune librerie da affiancare a quelle standard di Java,
utilizzate principalmente per gli esempi e per gli esercizi, oltre
al codice sorgente dei principali esempi",
nonché un sito che riporta un
errata corrige
aggiornato.
Nessuno degli argomenti è stato svolto a lezione a un livello di
dettaglio paragonabile a quello del testo. Viceversa, in alcune
lezioni sono stati svolti alcuni argomenti non trattati nel testo,
oppure trattati in maniera meno approfondita. Per questi ultimi, un
utile ausilio didattico sono le slide (vedi sotto) utilizzate dal
docente nel corso di precedenti anni accademici. (Si tenga presente
che non tutto il materiale contenuto in dette slide è stato presentato
a lezione.)
Documentazione online
In alternativa o in aggiunta al testo di cui sopra, può essere utile
consultare il
Java Tutorial
pubblicato nel
sito di Sun Microsystems dedicato a Java,
nel quale si trova anche la
documentazione delle API.
Per quanto riguarda la libreria Java Sound, sono disponibili online la
Java Sound Programmer Guide, di cui ai fini del corso è
rilevante la sola Parte II.
Per una piena comprensione dello standard MIDI, può essere utile consultare la
specifica non ufficiale
contenuta nell'eccellente
sito di Jeff Glatt.
La specifica ufficiale dello standard MIDI è pubblicata (solo a stampa) dalla
MIDI Manufacturers Association.
Slide di Gianfranco Prini
Raccolta completa [versione a.a. 1999-00]
Capitoli separati [versione a.a. 1999-00]
- Copertina
- Introduzione -- Motivazioni, prerequisiti, argomenti
- Capitolo 1 -- Un tuffo nel linguaggio e nell'ambiente
- Capitolo 2 -- Introduzione al linguaggio Java e all'ambiente HotJava
- Capitolo 3 -- Elementi di programmazione object-oriented
- Capitolo 4 -- Linguaggio Java: costrutti di base
- Capitolo 5 -- "La" microapplicazione: come la si scrive in Java [link temporaneamente non disponibile]
- Capitolo 6 -- La gestione delle eccezioni in Java
- Capitolo 7 -- Java: multithreading e programmazione concorrente
- Capitolo 8 -- Le applet di Java e lo strumento appletviewer [link temporaneamente non disponibile]
- Capitolo 9 -- Java: primitive grafiche e programmazione di GUI [link temporaneamente non disponibile]
Esempi di programmazione
- Esempio [link temporaneamente non disponibile]
Gianfranco Prini
(gianfranco.prini@unimi.it)