Fondamenti di Architettura e Programmazione (Ed. 2 / CCD Comun. digitale)
Indice
- Avvisi
- Compitini
- Iscrizioni agli appelli
- Programma del corso
- Libri di testo consigliati
- Modalità d'esame
- Ricevimento studenti
- Link utili
Avvisi
- Discussioni e verbalizzazioni (appello di settembre). Le discussioni si svolgeranno il 1/10, alle ore 10.30, nell'ufficio del prof. Walter Cazzola (via Comelico 39, II piano). Gli studenti che avranno svolto con esito sufficiente le discussioni potranno verbalizzare il voto il 3/10, alle ore 10.30, in auletta 4 (via Comelico 39).
- Scritto di settembre. Lo scritto per l'appello di settembre si svolgerà il 21/9, alle ore 10:30, in aula Alfa (via Comelico 39/41).
- Progetto per l'appello di settembre. È disponibile il testo del progetto per l'appello di settembre 2007.
Compitini
I compitino (24/10/2006) | Esercizi di preparazione | Testo e soluzioni | Esiti |
---|---|---|---|
II compitino (11/12/2006) | Esercizi di preparazione | Testo e soluzioni | Esiti |
III compitino (19/1/2007) | Esercizi di preparazione | Testo e soluzioni | Esiti |
Tabella riassuntiva |
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 sono da considerarsi solo presunte, e potranno subire variazioni. Non è pubblicata la data di discussione dei progetti, che viene fissata dal docente di laboratorio; tale data potrà precedere o seguire la data fissata per gli orali (e in questo secondo caso la verbalizzazione verrà effettuata dal docente di laboratorio al termine della discussione).
Appello | Pubblicazione testo progetto | Consegna progetti | Scritto | Orali/Verbalizzazioni | Iscritti |
---|---|---|---|---|---|
Febbraio 2007 | 18/1 (testo) | 12/2 | 8/2 | 26/2 | Iscritti |
Giugno 2007 | 17/5 | 11/6 | 11/6 | 15/6 | Iscritti |
Luglio 2007 | 9/7 | 10/7 | Iscritti | ||
Settembre 2007 | 31/8 | 21/9 | 21/9 | 28/9 | Iscritti |
Gennaio 2008 | 14/1 | 16/1 |
Programma di massima del corso di Fondamenti di architetture e programmazione (A.A. 2006/2007)
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).
A - ARCHITETTURE
- Introduzione al corso, scopo
- Orari
- Struttura del corso
- Lezioni frontali
- Esercitazioni
- Laboratorio
- Testi di riferimento
- Sito del turno
- Modalità d'esame
- Cos'è l'informatica [1.1]
- Il calcolatore come macchina programmabile [1.4]
- Hardware
- Software (principali categorie)
- Architettura del calcolatore: la macchina di von Neumann [1.5]
- CPU
- RAM
- BUS
- Periferiche (memorie di massa)
- Dagli algoritmi ai programmi [1.2]
- Linguaggi di programmazione (macchina, assembly, alto livello)
- Rappresentazione dell'informazione [Dispense]
- 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 [Dispense]
- Costanti: 0, 1, VERO, FALSO
- Principali operatori logici:AND, OR, NOT, XOR, IMPLICA, SSE, NAND, NOR
- Tabelle di verità, equivalenza logica
- Principali proprietà dei connettivi, equivalenze notevoli (De Morgan)
- Tautologie e contraddizioni
- Parallelo col calcolo proposizionale (esempi di condizioni)
- dai connettivi alle porte logiche
- Circuiti logici, semplici esempi
- Informazione (bit, byte,-) [1.3]
- Funzionamento della macchina di von Neumann
- Caricamento in RAM del programma, fetch-decode-execute
- Architettura della CPU: ALU e CU
- Un esempio di CPU con relativo linguaggio assembly
- Struttura di un linguaggio assembly, tipi di istruzioni
- Esempi di semplici programmi assembly
B - PROGRAMMAZIONE
- 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 (decidere se n è pari o dispari) [1.11]
- Iterazione (somma primi n numeri; cosa succede se n=0?; calcolo somma di seq.; calcolo media; calcolo media pari/dispari; calcolo MCD) [1.11]
- Altri esempi (x*y mediante somme iterate, x/y mediante sottrazioni iterate) [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 ([7.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.8]
- Metodi statici [4.9]
- Classi involucro [4.10]
- Boxing e unboxing [4.10]
- Tipi enumerativi (cenni) e loro uso negli switch [4.7]
- Array con esempi [5.1]
- Cicli foreach per array [5.2]
- Cenni ad array a più dimensioni [5.6]
- Parametri del main [5.3]
- Esempi
- Sequenza e uso delle classi generiche [5.7]
- Classe Rettangolo [6.1]
- Classe Quadrato [6.3]
- Relazioni fra Quadrato e Rettangolo [6.4]
- Ereditarietà
- Rappresentazione UML
- Overriding
- Uso dei riferimenti
- Polimorfismo
- instanceof
- Esempio FigureAreaMax
- Classe Cerchio
- Introduzione alle classi astratte [6.5]
- Riepilogo: gerarchia delle classi, gerarchia dei tipi [6.6]
- Classe Object [6.6]
- Uso dei tipi riferimento (promozioni, cast) [6.7]
- Dynamic binding [6.8]
- Un esempio [6.9]
- Cenni ai package
- Gestione di file [6.10]
- Esempi [6.11]
- Interfacce [6.12]
- Interfacce e tipi [6.12]
- Implementazione di classi: la classe Frazione [7.1, 7.2]
- La classe Orario [7.4]
- Metodi e campi statici [7.5]
- Modificatore final (per gli attributi)
- Riepilogo sui membri delle classi [7.6]
- Garbage collection [7.6]
- Implementazione di un'interfaccia [7.7]
- Ereditarietà (la classe Quadrato) [8.1]
- Costruttori e ereditarietà [8.2]
- Estensioni di classi astratte
- Adombramento di variabili: uso di this
- Uso di super [8.3]
- Overloading di metodi e costruttori [8.4, 8.5]
- Modificatori di accesso [7.10, 8.13]
- Modificatore final per i metodi e le classi
- Il metodo equals [8.7]
- Esempi di classi e ereditarietà [8.9, 8.10, 8.11]
- Invocazione di costruttori e metodi [8.2]
- Passaggio di parametri [10.1]
- Per valore
- Cenni ad altri metodi
- Passaggio per riferimento
- Varargs
- Organizzazione della memoria [10.2]
- Stack e record di attivazione [10.2]
- Metodi ricorsivi [10.3]
- Notazione postfissa
- Introduzione alle eccezioni [11.1]
- Eccezioni [11.2]
- Notazione postfissa con eccezioni [11.4]
- Sollevare eccezioni [11.6]
- Eccezioni controllate e non controllate [11.8]
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:
- le dispense
- per approfondimenti: S. Ceri, D. Mandrioli, L.Sbattella: Informatica arte e mestiere, McGraw-Hill, 1999.
Modalità d'esame
Questo documento descrive le modalità d'esame per il corso di Fondamenti di architetture e programmazione, A.A. 2006/2007, 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 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 l'appello di febbraio. 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:
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. I docenti di laboratorio, a seguito della discussione, possono modificare il voto attribuito allo studente per la parte di progetto (e quindi modificare il voto di base di conseguenza), e possono, in determinate circostanze, chiedere che lo studente sostenga obbligatoriamente la prova orale, che è altrimenti solo facoltativa.
- 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. La prova orale è obbligatoria per gli studenti per i quali il docente di laboratorio abbia stabilito che un orale è necessario.
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 a luglio, deve necessariamente consegnare il progetto a giugno, ma può scegliere se discuterlo a giugno o luglio.
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.