Programmazione (Informatica musicale)
Indice
- Avvisi
- Orario
- Appelli
- Compitini
- Programma del corso
- Modalità d'esame
- FAQ
- Ricevimento studenti
- Link utili
Avvisi
- Orali di settembre. Sono disponibili gli esiti della prova di laboratorio di settembre; nella stessa pagina compare l'elenco degli studenti ammessi all'orale e le modalità di svolgimento degli orali stessi.
- Turtlegraphics. L'esercitazione di matematica in cui fornisco la classe per la turtlegraphics è questa. Scaricate il .jar, leggete la documentazione, e provate a giocare con la tartaruga (alcuni esempi di programmi semplici li trovate nell'esercitazione stessa). Per compilare ed esecuire dovete ricordarvi di avere sul classpath il file tarta.jar. Alla fine, provate a scrivere ed eseguire il programma per disegnare il fiocco di Koch. (Potete trovare qui una soluzione, ma siete fortemente scoraggiati dallo scaricarla se non avete prima provato a scriverne una voi)
Orario
Le lezioni si svolgeranno con il seguente orario:
- martedì ore 8:30-10:30, aula 100 (via Celoria): teoria;
- mercoledì ore 8:30-10:30, aula beta (via Comelico): teoria;
- giovedì ore 8:30-10:30, aula alfa (via Comelico): teoria;
- venerdì ore 8:30-12:30, aula sigma (via Comelico): laboratorio.
Appelli
Il seguente elenco contiene le date presunte degli appelli. Le date saranno da ritenersi provvisorie, e verranno confermate con l'approssimarsi degli appelli stessi. Si noti che presso il SIFA saranno aperte iscrizioni distinte per ciascuna delle due parti di cui l'appello è composto, e gli studenti che intendono partecipare all'appello devono iscriversi a tutte e due.
Laboratorio | Orale | Esiti | |
---|---|---|---|
Gennaio 2015 | 26/1 | 29/1 | Esiti |
Febbraio 2015 | 16/2 | 24/2 | Esiti |
Giugno 2015 | 8/6 | 11/6 | Esiti |
Luglio 2015 | 6/7 | 8/7 | Esiti |
Settembre 2015 | 14/9 | 17/9 | Esiti |
Compitini
Le date dei compitini sono per il momento da ritenersi presunte.
I Compitino (2/12/2014) | Esercizi di preparazione | Testo e soluzioni | Esiti |
---|---|---|---|
II Compitino (15/01/2015) | Esercizi di preparazione | Testo e soluzioni | Esiti |
Tabella riassuntiva dell'esito dei compitini |
Programma di massima del corso di Programmazione
Il corso di Programmazione è un corso di 12 crediti finalizzato all'insegnamento della programmazione. Trattandosi di un corso di base, non richiede alcuna conoscenza specifica pregressa; obiettivo del corso ` formare gli studenti alla programmazione in senso tradizionale, mediante l'uso di un linguaggio a oggetti; il linguaggio insegnato nel corso sarà Java.
Il corso si compone di due moduli, svolti in parallelo: questa pagina descrive solo il modulo di Programmazione (teoria), mentre il Laboratorio di programmazione, tenuto da Massimo Santini, ha una sua propria pagina web.
Libri di testo consigliati
Il testo consigliato per il corso è:
G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA, Addison-Wesley, Pearson Education Italia.
Per la prima parte si farà riferimento a
- [FAP] "Dispense per la prima parte del corso di Fondamenti di Architetture e Programmazione" di Paolo Boldi.
Contenuti del corso
- Introduzione al corso; Architettura del calcolatore; Che cos'è l'informatica; Linguaggi di programmazione (macchina, assembly, alto livello); Il calcolatore come macchina programmabile [PF1.1-1.4]
- La macchina di von Neumann; Informazione (bit, byte,...); Caricamento in RAM del programma, fetch-decode-execute; Architettura della CPU: ALU e CU; Un esempio di CPU con relativo linguaggio assembly [PF1.5]
- Elementi di algebra booleana; Principali operatori logici; Tabelle di verità, equivalenza logica [Dispense]
- Rappresentazione dell'informazione; Notazione posizionale; Rappresentazione degli interi negativi; Range di rappresentazione, overflow; Cenni alla rappresentazione dei reali: virgola fissa e mobile (standard IEEE 754); I caratteri (ASCII e Unicode) [Dispense]
- Ciclo di vita del software; Strumenti per la programmazione; La JVM [PF1.8]
- Programmazione strutturata; Concetti di variabile, tipo, assegnamento; Selezione; Iterazione; Introduzione alla programmazione a oggetti [PF1.9-1.12]
- Aspetti lessicali e sintattici; Primi esempi di programmi in Java [PFA1.13-1.15]
- I/O (System.out e Scanner; ConsoleInputManager/ConsoleOutputManager)
- Invocazioni di metodi; Invocazione di costruttori; Prototipi, segnature, overloading [PF2.1-2.2]
- Tipi di variabili: primitivi, riferimenti; Esempi (la classe Frazione) [PF2.3-2.4]
- Principi di buona programmazione: commenti, indentazione, cenno a javadoc [PF7.8]
- if; Il tipo boolean e operatori logici [PF3.1-3.4]
- Cicli: while, do, for [PF3.5-3.6]
- Istruzioni break e continue; Cicli infiniti [PF3.7]
- Espressioni: tipo, valore; Effetti collaterali; Lazy evaluation [PF4.1-4.2]
- Classe String: costruttori e oggetti [PF2.3]
- Tipi numerici interi e operatori; Tipi numerici floating point e operatori; Conversioni di tipo e cast; Tipo char; Relazione con i tipi interi; Costanti [PF4.3-4.6]
- Istruzione switch; Metodi statici [PF4.8-4.9]
- Classi involucro; Boxing e unboxing automatico; Importazioni di metodi statici [PF4.10]
- Array con esempi; Parametri del main [PF5.1-5.6]
- Classe Rettangolo; Classe Quadrato; Ereditarietà; Rappresentazione UML; Overriding; Polimorfismo; instanceof [PF6.1-6.5]
- Esempio FigureAreaMax; Esempio Cerchio; Introduzione alle classi astratte [PF6.6]
- Riepilogo: gerarchia delle classi, gerarchia dei tipi; Classe Object; Uso dei tipi riferimento (promozioni, cast); Dynamic binding; Interfacce [PF6.7,6.14,6.12]
- Package; Gestione di file; Interfacce [PF7.9,13.1-13.2,13.4]
- Implementazione di classi: la classe Frazione [PF7.1-7.3]
- La classe Orario; Metodi e campi statici; Modificatore final (per gli attributi); Garbage collection; Implementazione di un'interfaccia [PF7.4-7.7]
- Ereditarietà (la classe Quadrato); Costruttori e ereditarietà [PF8.1-8.2]
- Estensioni di classi astratte; Uso di super; Overloading di metodi e costruttori [PF8.3-8.4]
- Modificatori di accesso; Modificatore final per i metodi e le classi; I metodi equals e hashCode [PF7.10,8.14,8.7]
- Invocazione di costruttori e metodi; Passaggio di parametri; Organizzazione della memoria; Stack e record di attivazione; Metodi ricorsivi [PF10.1-10.3]
- Introduzione alle eccezioni; Eccezioni; Eccezioni controllate e non controllate [PF11.1-11.3,11.6-11.9]
- Cenni all'uso dei generici e degli enum [PF6.15-6.18,4.7]
Modalità d'esame
- Compitini: durante il corso si terranno due compitini (a novembre e a gennaio), cui possono partecipare tutti gli studenti; il compitino costituisce un esonero parziale dalla prova di laboratorio di gennaio e febbraio: gli studenti che vogliano sostenere l'esame a gennaio o febbraio e che abbiano ottenuto la sufficienza in entrambi i compitini svolgeranno una prova di laboratorio ridotta;
- Appelli di gennaio e febbraio 2015: gli appelli di gennaio e febbraio sono costituiti da:
- una prova di programmazione individuale, ridotta per gli studenti che abbiano conseguito la sufficienza nei compitini; la prova si considera superata se gli studenti ottengono un punteggio almeno pari al 50% (se non hanno la sufficienza nei compitini) o al 25% (se hanno la sufficienza nei compitini);
- un orale, obbligatorio per tutti, che determina il voto finale.
- Appelli successivi: gli appelli successivi a quello di febbraio sono costituiti da:
- una prova individuale di programmazione;
- un orale seguito da verbalizzazione.
- Salto di appello: chi risulta gravemente insufficiente negli appelli di gennaio o giugno non potrà sostenere gli appelli di febbraio e luglio, rispettivamente.
- Iscrizione agli appelli: gli studenti che vogliano sostenere l'esame a un dato appello devono iscriversi al SIFA (tramite il @SIFA on-line, o recandosi presso gli appositi chioschi). Questo vale per tutti gli appelli, compresi quelli di gennaio e febbraio, anche per gli studenti che abbiano sostenuto con successo il compitino.
FAQ
A partire dall'anno accademico 2014/2015, il corso di programmazione usa il linguaggio Java. Tuttavia gli studenti degli anni accademici precedenti possono continuare a sostenere l'esame in C: durante la prova di laboratorio, tutti gli esercizi saranno svolti a scelta in C o Java. L'orale riguarderà lo stesso linguaggio.
Ricevimento studenti
Il docente riceve nel suo studio di Via Comelico, 39/41 (II piano), su appuntamento. Un appuntamento può essere fissato a lezione, oppure inviando una e-mail al docente e attendendo una risposta di conferma.