Fondamenti di Architettura e Programmazione (Ed. 2 / CCD Comun. digitale)
Indice
- Avvisi
- Compitini
- Iscrizioni agli appelli
- Programma del corso
- Libri di testo consigliati
- Materiale didattico addizionale
- Modalità d'esame
- Ricevimento studenti
- Link utili
Avvisi
- Appello di gennaio 2007 e successivi. Per tutti gli appelli da quello di gennaio 2007 in poi, consultate la pagina di FAP dell'anno in corso.
- Discussioni, orali e verbalizzazioni. Diversamente da quanto precedentemente indicato, le discussioni e le verbalizzazioni di settembre si svolgeranno il 26 settembre, alle ore 11.00, in aula 6 (via Comelico 39). Chi intendesse sostenere l'orale è pregato di contattarmi prima del 26.
- Scritto di settembre. Lo scritto di settembre si svolgerà (per entrambi i turni) lunedì 18/9, alle ore 10.30, in aula Sigma (via Comelico 39).
- Progetto di settembre/gennaio. È disponibile il testo del progetto valido per gli appelli di settembre e gennaio.
- Iscrizione SIFA. Ricordo agli studenti che chiunque intenda sostenere l'esame (anche solo verbalizzare il voto)
in un certo appello, deve iscriversi a quell'appello presso i terminali SIFA. Questa procedura va
seguita anche dagli studenti che non devono sostenere la prova scritta, anche nel caso che non intendano nemmeno
fare l'orale. (Ignorate il fatto che il terminale indicherà che si tratta di un appello scritto)
Compitini
I compitino (27/10/2005) Esercizi di preparazione Testo e soluzioni Esiti II compitino (16/12/2005) Esercizi di preparazione Testo e soluzioni Esiti III compitino (27/01/2006) Esercizi di preparazione Testo e soluzioni Esiti Tabella riassuntiva Tabella dei bonus Iscrizioni agli appelli
Ricordiamo agli studenti che chiunque intenda sostenere l'esame (anche solo verbalizzare il voto) in un certo appello, deve iscriversi a quell'appello presso i terminali SIFA. Questa procedura va seguita anche dagli studenti che non devono sostenere la prova scritta, anche nel caso che non intendano nemmeno fare l'orale.
Si noti che le date degli appelli successivi a quello corrente sono da considerarsi solo presunte, e potranno subire variazioni.
Appello Pubblicazione testo progetto Consegna progetti Scritto Orali/Verbalizzazioni Iscritti Febbraio 2006 23/1 (testo) 13/2 13/2
testo: PS, PDF
soluzioni: PS, PDF20/2 Iscritti Aprile 2006 3/4
testo: PS, PDF
soluzioni: PS, PDF10/4 Iscritti Giugno 2006 15/5 (testo) 5/6 5/6 12/6 Iscritti Luglio 2006 3/7 12/7 Iscritti Settembre 2006 28/8 (testo; classi da scaricare: InvalidExpressionException, ExpressionReader) 18/9 18/9 25/9 Iscritti Gennaio 2007 15/1 22/1 Programma di massima del corso di Fondamenti di architetture e programmazione (A.A. 2005/2006)
Nel seguente programma i numeri indicati fra parentesi quadre si riferiscono ai corrispondenti capitoli nel libro adottato per il corso (Dai fondamenti agli oggetti, II edizione).
I PARTE: Architettura degli elaboratori
- Cos'è l'informatica [1.1]
- Dagli algoritmi ai programmi [1.2]
- Linguaggi di programmazione (macchina, assembly, alto livello)
- Informazione (bit, byte, ...) [1.3]
- Il calcolatore come macchina programmabile [1.4]
- Architettura del calcolatore: la macchina di von Neumann [1.5]
- Funzionamento della macchina di von Neumann
- Architettura della CPU: ALU e CU
- Un esempio di CPU con relativo linguaggio assembly
- Rappresentazione dell'informazione
- Gli interi
- Notazione posizionale
- Decimale, ottale, esadecimale, binaria
- Algoritmi di traduzione da/verso decimale
- Scorciatoie: da ottale ed esadecimale a binaria e viceversa
- Rappresentazione degli interi negativi: modulo e segno e complemento a due
- Range di rappresentazione, overflow
- esempi di somme e sottrazione tra interi
- Richiamo ai circuiti: circuito per la somma di interi
- Cenni alla rappresentazione dei reali: virgola fissa e mobile (standard IEEE 754)
- I caratteri
- ASCII e UNICODE
- Gli interi
- Elementi di algebra booleana
II PARTE: Programmazione in Java
- Ciclo di vita del software
- Linguaggi ad alto livello [1.6]
- Strumenti per la programmazione [1.7]
- Traduttori, editor [1.7]
- La JVM [1.8]
- Perché Java
- Programmazione strutturata [1.9]
- Concetti di variabile, tipo, assegnamento [1.10]
- Selezione e iterazione [1.11]
- Introduzione alla programmazione a oggetti [1.12]
- Aspetti sintattici [1.13]
BNF e carte sintattiche [1.13] Cenni della grammatica di Java [1.14] Primi esempi di programmi in Java [1.15] - Invocazioni di metodi [2.1.1]
- Invocazione di costruttori [2.1.1]
- Classi per I/O [2.1.1, 2.1.2]
- Esempi [2.1.2]
- Prototipi, segnature, overloading [2.2]
- Classe String: costruttori e oggetti [2.3]
- Tipi di variabili: primitivi, riferimenti [2.4]
- Esempi (la classe Frazione) [3.1]
- Uso della classe Frazione [3.1]
- Principi di buona programmazione: commenti, indentazione, cenno a javadoc ([6.8])
- if [3.2]
- Il tipo boolean e operatori logici [3.3, 3.4]
- Cicli: while, do, for [3.5, 3.6]
- Esempi (fra cui: palindrome) [3.5, 3.6]
- Istruzioni break e continue [3.7]
- Cicli infiniti
- Espressioni: tipo, valore [4.1]
- Effetti collaterali [4.1]
- Lazy evaluation [4.1]
- Tipi numerici interi e operatori [4.3, 4.2]
- Tipi numerici floating point e operatori [4.4, 4.2]
- Conversioni di tipo e cast [4.5]
- Operatore +; il metodo toString [4.5]
- Tipo char; relazione con i tipi interi [4.6]
- Regole di precedenza
- Costanti
- Istruzione switch [4.7]
- Metodi statici [4.8]
- Classi involucro [4.9]
- Array con esempi [4.10, 4.12]
- Cenni ad array a più dimensioni
- Parametri del main [4.11]
- Esempi
- Classe Rettangolo [5.1]
- Classe Quadrato [5.3]
- Relazioni fra Quadrato e Rettangolo [5.4]
- Ereditarietà
- Rappresentazione UML
- Overriding
- Uso dei riferimenti
- Polimorfismo
- instanceof
- Esempio FigureAreaMax [5.4]
- Classe Cerchio [5.5]
- Introduzione alle classi astratte [5.5]
- Riepilogo: gerarchia delle classi, gerarchia dei tipi [5.6]
- Classe Object [5.6]
- Uso dei tipi riferimento (promozioni, cast) [5.7]
- Dynamic binding [5.8]
- Un esempio [5.9]
- Cenni ai package
- Gestione di file [5.10]
- Esempi [5.11]
- Interfacce [5.12]
- Interfacce e tipi [5.12]
- Implementazione di classi: la classe Frazione [6.1, 6.2]
- La classe Orario [6.4]
- Metodi e campi statici [6.5]
- Modificatore final (per gli attributi)
- Riepilogo sui membri delle classi [6.6]
- Garbage collection [6.6]
- Implementazione di un'interfaccia [6.7]
- Ereditarietà (la classe Quadrato) [7.1]
- Costruttori e ereditarietà [7.2]
- Estensioni di classi astratte
- Adombramento di variabili: uso di this
- Uso di super [7.3]
- Overloading di metodi e costruttori [7.4, 7.5]
- Modificatori di accesso [6.10, 7.12]
- Modificatore final per i metodi e le classi
- Il metodo equals [7.6]
- Esempi di classi e ereditarietà [7.9, 7.10, 7.11]
- Invocazione di costruttori e metodi [9.1]
- Passaggio di parametri [9.1]
- Organizzazione della memoria [9.2]
- Stack e record di attivazione [9.2]
- Metodi ricorsivi [9.3]
- Notazione postfissa [10.1]
- Introduzione alle eccezioni [10.2]
- Eccezioni [10.2]
- Notazione postfissa con eccezioni [10.3]
- Sollevare eccezioni [10.5]
- Eccezioni controllate e non controllate [10.7]
Libri consigliati
Il testo consigliato per il corso è:
G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA, Addison-Wesley, Pearson Education Italia, II edizione.
Per la prima parte del corso, segnaliamo:
S. Ceri, D. Mandrioli, L.Sbattella: Informatica arte e mestiere, McGraw-Hill, 1999.
Materiale didattico addizionale
È disponibile il materiale didattico addizionale usato per la lezione su Java 1.5.
Modalità d'esame
Questo documento descrive le modalità d'esame per il corso di Fondamenti di architetture e programmazione, A.A. 2005/2006, presso il corso di laurea in Comunicazione Digitale.Compitini
Durante l'anno verranno organizzati tre compitini, costituiti da quiz a risposta chiusa o guidata. I compitini si svolgeranno intorno a fine ottobre, metà novembre, e metà gennaio, rispettivamente, in date che verranno rese pubbliche nelle modalità consuete.
Gli studenti che abbiano sostenuto tutti e tre i compitini e li abbiano superati con voti non inferiori a 12 e con una media finale non inferiore a 18 sono esentati dal sostenere la prova scritta. Tale esenzione è permanente, e vale per tutti gli appelli.
Progetti, prova scritta e calcolo del voto di base
- Progetto di laboratorio. Per ogni anno accademico vengono proposti tre testi per il progetto di laboratorio. Il primo testo sarà proposto a febbraio e sarà valido per gli appelli di febbraio e aprile. Il secondo testo sarà proposto a giugno e sarà valido per giugno e luglio. Il terzo testo sarà proposto ad agosto e sarà valido per settembre e gennaio. Indicativamente il tempo previsto per lo svolgimento dei progetti è di tre settimane. Il progetto di laboratorio va svolto a gruppi di non più di tre persone ed è necessario per poter sostenere l'esame negli appelli indicati.
- Una settimana circa prima dell'orale si svolge una prova scritta. Sono tenuti a partecipare alla prova tutti gli studenti iscritti all'appello che non ne siano esentati (cioè, che non abbiano sostenuto i compitini con media sufficiente).
- Il giorno prima dell'orale vengono rese pubbliche le valutazioni dei progetti e degli scritti.
Per ogni studente viene calcolato un voto di base, secondo la seguente formula arrotondata all'intero più vicino:
< voto di base > = 2/3 * < voto scritto (o media compitini) > + 1/3 * < voto progetto > + bonus Il bonus viene calcolato sulla base della partecipazione alle esercitazioni in laboratorio (Silab). Durante tali esercitazioni, verranno proposti alcuni esercizi di programmazione da svolgersi in una settimana (indicativamente). Il bonus è:
- di 0 punti per gli studenti che abbiano consegnato meno del 50% delle esercitazioni proposte durante l'anno;
- di 1 punto per gli studenti che abbiano consegnato fra il 50% e il 75% delle esercitazioni;
- di 2 punti per gli studenti che abbiano consegnato più del 75% delle esercitazioni.
Prova orale
Sono ammessi alla prova orale solo gli studenti che abbiano ottenuto una valutazione maggiore o uguale a 18 per il progetto e per lo scritto (o i compitini). Gli studenti ammessi devono sostenere due prove orali:
- Discussione del progetto: in questa prova viene discusso brevemente il progetto realizzato dagli studenti. L'obiettivo della discussione è verificare che lo studente abbia partecipato attivamente alla realizzazione del progetto; in caso contrario, lo studente verrà rimandato ad un appello successivo;
- Orale o verbalizzazione: gli studenti che abbiano superato la discussione del progetto possono chiedere che venga verbalizzato il loro voto di base senza sostenere l'orale, oppure possono decidere di sostenere la prova orale: in questo caso, però, il voto finale potrebbe essere minore o maggiore del voto di base, ed è anche perfettamente possibile che lo studente venga rimandato.
Validità degli scritti e discussione dei progetti
Uno studente che abbia già consegnato il progetto con valutazione positiva e abbia sostenuto con valutazione positiva lo scritto in un certo appello può decidere di sostenere la prova orale (o di verbalizzare il voto) in un appello successivo, purché entro i termini di validità del progetto. Ad esempio, se lo studente ha consegnato il progetto a giugno e ha sostenuto con esito positivo lo scritto di giugno, potrà decidere se sostenere l'orale (o verbalizzare il voto) negli orali di giugno, luglio o settembre.
La discussione del progetto avviene di norma contestualmente agli orali (e alle verbalizzazioni). È però data la possibilità, agli studenti che lo desiderino, di discutere il progetto in uno degli appelli precedenti quello in cui lo studente intende sostenere l'esame. Ad esempio, se uno studente intende sostenere l'esame ad aprile, deve necessariamente consegnare il progetto a febbraio, ma può scegliere se discuterlo a febbraio o ad aprile.
Modifica alle modalità d'esame
Queste modalità d'esame possono essere soggette a revisioni nel corso dell'anno. Ogni modifica verrà comunicata per tempo agli studenti, e comunque prima del primo appello disponibile.
Modalità di iscrizione agli appelli
- dovete consegnare il progetto entro la data indicata nel testo e con le modalità previste; eventuali domande sul progetto vanno rivolte al dott. Cazzola;
- il voto assegnato al progetto è da considerarsi provvisorio fino all'avvenuta discussione; per la discussione non è necessaria alcuna iscrizione, basta presentarsi il giorno fissato per le discussioni; la discussione può avvenire nella sessione per cui si è consegnato il progetto, o in una delle sessioni successive coperte dal progetto, ed in ogni caso prima dell'orale e/o della verbalizzazione;
- l'iscrizione al SIFA va fatta relativamente all'appello in cui si intende verbalizzare, ed è obbligatoria; anche se il terminale SIFA indica che l'appello è uno scritto, l'iscrizione va fatta sia che voi dobbiate sostenere lo scritto, sia che non lo dobbiate sostenere perché avete l'esonero;
- se dovete sostenere lo scritto, dovrete presentarvi alla data dello scritto; in caso contrario, potete presentarvi alla data indicata per gli orali;
- alla data degli orali si devono presentare tutti gli studenti iscritti che abbiano una valutazione sufficiente del progetto e che abbiano sostenuto con successo lo scritto (oppure che ne siano esonerati, avendo sostenuto i compitini); in quella sede, potranno scegliere se fare l'orale o se verbalizzare il voto.
Ricevimento studenti
Il docente riceve il giovedì, dalle ore 13.30 alle ore 14.30, nel suo studio di Via Comelico, 39/41 (II piano), su appuntamento. Un appuntamento può essere fissato a lezione, oppure inviando una mail al docente e attendendo una risposta di conferma.
Link utili