Corso di
Programmazione I e Laboratorio - A
Laurea in Informatica
Anno accademico: 2004-2005
Docenti:
Barbara Demo, Guido Boella
Tutor: Valentina GLIOZZI indirizzo di e-mail: gliozzi@di.unito.it
Numero di ore:
45 (lezioni in aula) + 36 (esercitazioni in laboratorio)
Numero di CFU (Crediti Formativi Universitari):
5 (lezioni) + 3 (laboratorio)
Moduli:
- Lezioni in aula (B. Demo)
Cliccando su Lezioni in aula si ha un collegamento veloce con l'ambiente Moodle
dove bisogna poi scegliere Corsi Primo anno e Programmazione 1 A.
Pero' leggere almeno 1 volta quello che segue su questa pagina: importante e' l'INDICE!
Vedere in Indice: Testi degli scritti
- Esercitazioni in laboratorio: turni T2 e T3 (B. Demo)
- Esercitazioni in laboratorio: turni T1 e T4 (G. Boella)
INDICE
-
Obiettivi del corso
-
Competenze attese e propedeuticità
-
Come si svolgono le lezioni (supporti alla didattica in uso alla docenza)
-
Programma/contenuti
-
Materiale didattico di supporto (a cura del docente)
-
Bibliografia (libri, articoli, documenti on-line,...)
-
Controllo dell'apprendimento (durante il corso)
-
Verifica (modalità d'esame)
-
Testi degli scritti anno accademico corrente.
1. Obiettivi del corso
Il corso ha lo scopo di fornire i concetti di base della programmazione
imperativa e ad oggetti, attraverso l'uso del linguaggio Java.
2. Competenze attese e propedeuticità
-
Competenze attese in ingresso (richieste all'inizio del corso).
Il modulo non presuppone alcuna conoscenza di programmazione o più in generale di informatica,
al di là della semplice capacità di usare un calcolatore con sistema a finestre (gestione di files, elaborazione di testi).
Per quanto riguarda la matematica, il modulo presuppone solo conoscenze fondamentali,
quali i concetti di numero (naturale, intero, razionale, reale), di funzione, le quattro operazioni,
elevamento a potenza, radice, esponenziale, logaritmo, il piano cartesiano, il calcolo letterale elementare.
Si presuppongono invece capacità di ragionamento logico, di astrazione e di risoluzione non meccanica di problemi,
accompagnate da una buona padronanza della lingua italiana e da una sufficiente cultura generale. La conoscenza della lingua inglese,
benché non strettamente richiesta, è tuttavia utile in laboratorio
per evitare perdite di tempo dovute alla digitazione di parole errate, per capire i messaggi di errore generati dal compilatore, ecc.
-
Competenze attese in uscita (acquisite durante il corso).
Per quanto riguarda i contenuti dettagliati si veda il Programma.
In generale, al termine del corso lo studente dovrebbe essere in grado di risolvere in Java
in modo corretto, elegante ed efficiente semplici problemi di programmazione iterativa,
soprattutto su array, e problemi di programmazione ad oggetti attraverso la definizione di semplici classi.
3. Come si svolgono le lezioni (supporti alla didattica in uso alla docenza)
Le lezioni in aula sono svolte per la maggior parte delle lezioni alla lavagna.
In via sperimentale e' invece usato dal corrente aa il sistema di supporto alla didattica MOODLE sia per
la documentazione delle lezioni sia, e soprattutto, per favorire l'interazione via forum tra
studenti e docenti e degli studenti fra loro.
Per l'accesso alla home page di Moodle: tornare alla voce "Lezioni in aula" qui sopra.
Non ci fosse accesso dalle pagine qui sopra, per esempio perche' l'accesso a Moodle
e' stato variato dai gestori di Moodle medesimo,
si veda la pagina www.educ.di.unito.it dove nell'angolo in basso a sinistra,
tra i QUICK LINK, la voce Corsi su "I-learn"(supporto on-line ai corsi) e' il link di accesso.
4. Programma di massima
Numeri e sistemi di numerazione: decimale, ottale, binario, esadecimale; frazioni e rappresentazioni
con la virgola (decimale, ottale, binaria, ecc.). Algoritmi, macchine, programmi.
Struttura del calcolatore. Linguaggio-macchina e linguaggi di programmazione ad alto livello.
Codifica dei caratteri (codice ASCII, codice Unicode). Tipi di file: puro testo, testo formattato, eseguibile, ecc.
Che cosa è la programmazione imperativa: istruzioni, variabili assegnabili, assegnazione. Variabili e valori.
Che cosa è la programmazione tipata: tipi di valori e tipi di variabili.
Linguaggi interpretati, compilati, semi-interpretati.
Convenzioni di scrittura dei programmi Java: indentazione, identificatori, ecc.
Che cosa è la programmazione con procedure: nozione di procedura o metodo, parametri formali e parametri effettivi (o argomenti),
frame di una procedura, passaggio parametri, variabili locali, variabili globali, costanti.
I valori booleani, gli operatori relazionali e booleani, procedure con argomenti e/o risultati booleani.
Programmazione iterativa e invarianti di ciclo. Il problema del "ciclo e mezzo" e soluzioni possibili.
Le aree di memoria dell'esecutore java. Rappresentazione dello stato della memoria durante l'esecuzione di un programma.
Array in Java: dichiarazione, creazione, accesso agli elementi; programmazione con array, procedure con parametri o risultati di tipo array, ecc.. Nozione di complessità temporale di un algoritmo. Problemi algoritmici su array: ricerca sequenziale, inserimento ed eliminazione di elementi, inserimento ordinato, ricerca binaria, ordinamento per selezione e per inserimento, ordinamento parziale, il problema della bandiera tricolore.
Programmazione a oggetti: campi di istanza, costruttori, creazione di oggetti, riferimenti ad oggetti di una classe, variabili di tipo riferimento ad oggetto di una classe, riferimento nullo,
metodi e parametro implicito this, confronto fra campi/metodi statici e di istanza, visibilità e campi privati, array di oggetti.
Invarianti di classe. La classe String.
Semplici problemi di programmazione ad oggetti.
Array parzialmente riempiti e realizzazione di classi per rappresentare collezioni.
5. Materiale didattico di supporto.
Risorse dalla rete per il lavoro a casa:
-
Sistema Java: java.sun.com/j2se/downloads.html
(scaricare la versione J2SE 1.4.1 o 1.4.2: solo l'SDK, non il jre)
-
Editors specializzati per scrivere programmi:
-
ConText: freeware (cioè liberamente scaricabile e usabile).
Nota: apparentemente conviene scaricare dal download site "secondario" croato.
-
TextPad: shareware - acquistabile per soli $27 (+ IVA), scaricabile una copia per valutazione.
-
Sistema BlueJ: http://www.bluej.org/
(versione 1.3.0);
da tale sito sono scaricabili anche un tutorial e un
manuale, presenti in versioni in molte lingue (compreso
l'italiano)
Materiale didattico ed esercitazioni
(accesso con username e password di laboratorio)
Testi dei compiti di esame
(accesso con username e password di laboratorio).
6. Bibliografia (libri, articoli, documenti on-line,...)
7. Controllo dell'apprendimento durante il corso
Il controllo dell'apprendimento viene effettuato
durante le ore in aula per mezzo di esercitazioni al posto con autocorrezione e di rilevamenti a campione sugli studenti,
alcuni dei quali vengono chiamati alla lavagna a svolgere esercizi o a rispondere
a quesiti.
In laboratorio il controllo viene effettuato monitorando l'attività dei singoli studenti.
8. Verifica (modalità d'esame)
La verifica si articola in una prova al calcolatore della durata di meno di un’ora
nella quale viene richiesto di risolvere un semplice problema di programmazione,
seguita da una prova scritta di circa due ore in cui si richiede di svolgere
esercizi di vario genere e di risolvere problemi di programmazione di diversa difficoltà,
anche per mezzo di invarianti.
Il superamento della prova di laboratorio, la cui valutazione è espressa
su tre livelli di sufficienza ed uno di insufficienza,
è condizione necessaria per poter accedere alla prova scritta.
Infine, all’atto della registrazione può venire richiesta
una breve discussione orale del compito,
che può portare in qualche caso ad una lieve correzione del voto finale.
La verifica è orientata ad accertare la capacità dallo studente di risolvere
problemi di programmazione in modo corretto e pulito,
sostenuta dalla esatta comprensione di una semantica informale ma rigorosa delle parti del linguaggio Java utilizzate nel corso.
|