Programmazione (Informatica)
Indice
Avvisi
- Go e anni accademici precedenti il 2018/19. Gli studenti degli anni accademici precedenti al 2018/19 che non avessero ancora sostenuto l'esame saranno autorizzati a sostenere gli appelli (esercitazione, scritto e orale) in Java fino all'appello di luglio 2019 compreso: ciò significa che nella parte di laboratorio potranno usare Java (invece di Go) per risolvere gli esercizi, mentre allo scritto ci saranno due testi diversi (uno per gli studenti nuovi e uno per quelli vecchi). Da settembre 2019 l'esame sarà esclusivamente con il programma nuovo.
Orario
Le lezioni si svolgeranno con il seguente orario:
- Teoria:
- lunedì ore 8:30-10:30, aula 405 (via Celoria)
- mercoledì ore 8:30-10:30, aula 405 (via Celoria)
- venerdì ore 8:30-10:30, aula 405 (via Celoria)
- Laboratorio: TBA
- Turno A, cognome A→E (prof. Morpurgo): martedì ore 13:30-17:30, aula Sigma (via Comelico)
- Turno B, cognome F→O (prof. Trentini): lunedì ore 13:30-17:30, aula Tau (via Comelico)
- Turno C, cognome P→Z (prof. Capra): martedì ore 13:30-17:30, aula Tau (via Comelico)
Gli studenti sono divisi in tre turni di laboratorio in base alle prime lettere del cognome. È possibile cambiare turno di laboratorio mediante scambio diretto con uno studente di turno diverso. I cambi di turno vanno segnalati via mail ai relativi docenti di laboratorio di riferimento nelle prime settimane di corso. Per sostenere l'esame, coloro che hanno cambiato turno, oltre a iscriversi al SIFA, devono mandare una mail al docente per ricordargli che consegneranno con un turno non corrispondente al cognome perché hanno fatto scambio di turno.
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 sarà aperta di norma una sola iscrizione per ciascun appello (normalmente la dicitura riportata indicherà il laboratorio, perché si tratta di solito della prima prova che si terrà), e gli studenti che intendono partecipare all'appello devono iscriversi pena l'esclusione dall'esame.
Laboratorio | Scritto | Orale | Esiti | |
---|---|---|---|---|
Gennaio 2018 | 22/01 | 29/01 | 05/02 | Esiti |
Febbraio 2018 | 12/02 | 19/02 | 26/02 | Esiti |
Giugno 2018 | 15/06 | 25/06 | 28/06 | Esiti |
Luglio 2018 | 05/07 | 09/07 | 13/07 | Esiti |
Settembre 2018 | 12/09 | 18/09 | 19/09 | Esiti |
Compitino
La data del compitino è per il momento da ritenersi presunta.
Compitino Unico (20/11/2017) | Esercizi di preparazione | Testo e soluzioni | Esiti |
---|
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 tre diversi docenti in parallelo, e ciascuno ha una sua propria pagina web, cui vi preghiamo di fare riferimento per informazioni.
Libri di testo consigliati
I testo consigliati per il corso sono:
- W. Savitch: Programmazione di base e avanzata con Java, Addison-Wesley, Pearson Education Italia.
- 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.
Per la turtle graphics, procedete come segue:
- scaricate questo file .zip: http://www.aplu.ch/home/download/aplujar5.zip;
- scompattatelo in una directory a vostro piacimento; per semplicità, potete mettere il file aplu5.jar nella directory che contiene i vostri sorgenti;
- quando compilate il (o i) file che usano la libreria mettete aplu5.jar nel classpath; se ad esempio volete compilare il sorgente Prova.java date il comando
javac -cp aplu5.jar Prova.java
- quando eseguite la classe ottenuta mettete aplu5.jar nel classpath; se ad esempio volete eseguire Prova.class date il comando
java -cp .:aplu5.jar Prova
(sostituite il ":" con un ";" se il vostro sistema è Windows); - trovate su questo sito la documentazione e molti esempi d'uso.
Contenuti del corso
Il programma di massima del corso è il seguente (fra parentesi quadre sono indicati i riferimenti alle corrispondenti sezioni del Savitch):
- Introduzione al corso; Architettura del calcolatore; Che cos'è l'informatica; Linguaggi di programmazione (macchina, assembly, alto livello); Il calcolatore come macchina programmabile
- 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
- Elementi di algebra booleana; Principali operatori logici; Tabelle di verita`, 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
- Linguaggio: aspetti lessicali, sintattici, pragmatici; indentazione; commenti [2.4]
- Variabili; tipi primitivi ed espressioni [2.1]
- Variabili di tipo riferimento; invocazioni di metodi; segnature; la classe BigInteger
- La classe String [2.2]; I/O elementare in Java [2.3]
- Selezione binaria (if) [3.1]
- Tipo boolean [3.2]
- Selezione multiaria (switch) [3.3]
- Esercizi sulla programmazione di base (senza cicli)
- Cicli (while, do, for) [4.1]
- Uso dei cicli; break e continue [4.2]
- Esercizi sull'uso dei cicli
- Definizione e invocazione di metodi statici [5.1]
- La classe Math [5.2]; classi involucro [9.2.5]
- Invocazione di metodi: stack e record di attivazione [5.3]
- Scrittura di metodi [5.4]
- Array [6.1]; ArrayList e generici [12.1]
- Array e metodi [6.2]
- Esercizi su array e metodi statici
- Prova in itinere
- Ordinamento [6.3]
- Array multidimensionali [6.4]
- Ricorsione [7.1]
- Esercizi sulla ricorsione
- Definizione di classi [8.1]
- Information hiding e incapsulamento [8.2]
- Oggetti e riferimenti [8.3]; costruttori [9.1]
- Esercizi sulla scrittura di classi
- Variabili e metodi statici [9.2]; Overloading [9.3]
- Array e classi [9.6]
- Cenni all'ereditarieta` e al polimorfismo
- Package [9.8]
- Eccezioni [13.1]
Modalità d'esame
Le modalità d'esame qui indicate sono da ritenersi al momento provvisorie.
- Compitino: durante il corso si terrà un compitino (a novembre), cui possono partecipare tutti gli studenti; il compitino costituisce un bonus per ottenere un voto aumentato negli appelli di gennaio e febbraio 2018.
- Struttura degli appelli: ogni appello prevede
- una prova di programmazione individuale in laboratorio; la prova contiene un esercizio di filtro: gli studenti che non superino il filtro non saranno ulteriormente valutati;
- una prova scritta;
- a chi supera entrambe le prove viene proposto un voto (ottenuto come media dei voti delle due prove, eventualmente aumentata nel caso si usufruisca del bonus del compitino; il bonus, di al massimo due punti, è usufruibile solo negli appelli di gennaio e febbraio 2018);
- gli studenti con voto proposto compreso fra 21 e 27, possono decidere se verbalizzare il voto proposto o rifiutarlo, sostenendo di nuovo l'esame in uno degli appelli successivi; gli studenti con voto proposto inferiore a 21 devono sostenere un esame orale per verificare le loro effettive competenze; gli studenti con voto superiore a 27 possono verbalizzare il voto proposto oppure sostenere un esame orale (finalizzato a migliorare il voto). Resta inteso che sostenendo l'orale lo studente può terminare con un voto superiore, uguale o inferiore a quello inizialmente proposto, oppure può addirittura essere considerato insufficiente.
- Salto di appello: chi risulta gravemente insufficiente negli appelli di gennaio o giugno non potrà sostenere gli appelli di febbraio e luglio, rispettivamente.
Si ritiene che siano gravemente insufficienti (e quindi passibili di salto d'appello):
- Le persone iscritte all'appello che non si presentino alla prova di laboratorio; chi si fosse iscritto ma avesse deciso di non presentarsi può, per non incorrere nel salto d'appello, disiscriversi oppure (quando siano scaduti i termini per disiscriversi) mandare una e-mail al docente del turno di laboratorio almeno il giorno prima della prova.
- Le persone che partecipano alla prova di laboratorio ma non superano l'esercizio filtro.
- Le persone che pur superando l'esercizio filtro consegnino nella prova di laboratorio esercizi contenenti errori che evidenzino gravi lacune.
- Non sono viceversa soggetti al salto d'appello gli studenti che, in qualunque momento della prova (di laboratorio o scritta), decidano di ritirarsi.
- 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.
Ricevimento studenti
Il docente riceve nel suo studio di Via Comelico, 39/41, su appuntamento. Un appuntamento può essere fissato a lezione, oppure inviando una e-mail al docente e attendendo una risposta di conferma.