Corso di Studi inInformatica e Tecnologie per la Produzione del Software
Dipartimento di InformaticaUniversità degli Studi di Bari

Programmazione + laboratorio



Orario  A.A. 2005/06
lun 11-13 lez. aula IV -palazzo aule
mar 11-13 ric. stanza 522, 5° piano
mer 11-13 lez. aula IV -palazzo aule
mer 15-18 lab. 3° piano (Shannon+Turing)
ven 11-13 lez. aula IV -palazzo aule

Ultime Notizie

[05/04] Orali appello fuori-corso di aprile: 13/4, hh. 12.00.
[15/02] Disponibili i risultati. Calendario prossimi esami orali: 22/02 (ore 10) solo appello. Per per il preappello, si deve far riferimento al sito 06/07 del Dr. Di Mauro)
[05/02] Disponibili i risultati dell'ultima prova scritta. Data prossimi esami orali: 7/2, ore 10
[22/01] Disponibili i risultati. Calendario prossimi esami orali [A-K] 25/01 (ore 10-13) - [L-Z] 26/1 (ore 10-13). NB: Per frequentanti anni precedenti (fino al 2005/06). Le matricole invece devono far riferimento al calandario per il Preappello (cfr sito Dr. Di Mauro)
[15/12] Chiarimento: A partire da gennaio'07 gli appelli per i frequntanti (2005/06) si sovrapporrano ai pre-appelli riservati alle matricole (2006/07). Si prega di tenerne conto nelle prenotazioni. La commissione d'esame sarà comunque unica comprendendo i titolari del corso nei due a.a.
[26/10] Chiarimento: la traccia del caso di studio per novembre06 resta invariata. Vale comunque solo per gli studenti fuori corso.
[02/10] Leggere chiarimento sulla commissione d'esame dei prossimi appelli nella sezione ESAMI.
[21/09] Prossimi orali 22/9, hh. 10 (per chi ha superato scritti precedenti), 25/9 hh.10 (per chi ha superato lo scritto del 20/9). Disponibili i risultati dell'ultima prova scritta (20/9).
[10/09] AVVISO: A causa della conferenza ISMIS, gli orali per la II prova di settembre'06 dovranno concludersi prima del 27/9.
[07/09] Disponibili i risultati dell'ultima prova scritta (5/9). Prossimi orali 14/9, I turno hh. 10-11.30 (Causa consiglio di Dipartimento) II turno, ore 15.30.
[16/08] La traccia per gli appelli di settembre 2006 sarà disponibile 15gg. prima della data dell'appello.
[14/07] Disponibili i risultati dell'ultima prova scritta (11/7).
[11/07] Prossimi orali 25/7, hh.10 (ordine alfabetico, precedenza a chi ha superato la prova con la sufficienza)
[29/06] Disponibili i risultati dell'ultima prova scritta (27/6). Si sconsiglia l'iscrizione alla prossima prova (11/7) coloro i quali non avessero superato le precedenti prove della sessione.
[27/06] Prossimi orali 5/7, hh.10 (ordine alfabetico)
[16/06] Disponibili i risultati dell'ultima prova scritta (13/6). Si sconsiglia l'iscrizione alla prossima prova (27/6) coloro i quali non avessero superato la presente. L'elaborato del caso di studio può comunque essere mantenuto (previo ritiro).
[13/06] Prossimi orali: 20/6, (ore 10) e 22/6 (ore 10)
[13/04] Disponibili i risultati della prova scritta del 12/04. Orali 26/4 ore 10,00.
[21/02] Gli orali di giovedì 23, potrebbero subire una interruzione nella mattinata, causa convocazione urgente collegio docenti. Nel caso, si riprenderà alle ore 15.
[20/02] In via eccezionale, viene concesso a coloro che non avessero superato lo scritto di Febbraio di ripresentare la doc. dello stesso caso di studio, purchè si ritiri la stessa durante l'orario di ricevimento.
[16/02] Prova scritta 25/1: primi risultati disponibili.
[15/02] Orali appello di febbraio: 17/2 - 23/2 - 24/2 (ore 10) aula da destinarsi (vedere prenotazione aule in portineria e/o far riferimento all'ufficio del docente).
[30/01] Prova scritta 25/1: tutti i risultati sono disponibili.

Strumenti

Testi di Riferimento

Teoria

per specifiche parti del programma indicate durante il corso:
  • Maiocchi:Teoria ed Applicazioni delle Macchine Calcolatrici, Ambrosiana, Milano (cap. 1-2-3)
  • Batini et al.:Fondamenti di Programmazione dei Calcolatori Elettronici, Franco Angeli (cap. 4-5)
  • R.G. Dromey:Algoritmi Fondamentali, Jackson (Alg. in programma)
  • N. Wirth:Algoritmi + Strutture Dati = Programmi, Tecniche Nuove (cap. (1-)2-3 con alg. in programma)

Java

Introduttivi(non ancora aggiornati a Java 5)

Esami

NB Gli esami dei frequentanti 04/05 e 05/06 potranno essere sostenuti con l'attuale commissione fino all'appello di Aprile 07. Per le matricole 06/07, vi sarà sovrapposizione con i pre-appelli 06/07 che andranno concordati (e prenotati) con il nuovo docente Dott. Di Mauro.

Modalità

Come prerequisito, sarà richiesta la presentazione della documentazione in formato digitale e cartaceo del caso di studio proposto.
E' prevista una prova scritta seguita da una orale dove viene anche discusso l'elaborato sul caso di studio proposto.
Si precisa che accedono all'orale coloro che abbiano riportato un voto sufficiente (>=18). In tal caso, può essere concesso il posticipo dell'orale all'appello successivo.

Tracce di prove di appelli precedenti sono disponibili nella sezione relativa al materiale di studio. Sono anche disponibili altre tracce di anni precedenti (che richiedono la conoscenza del Pascal)

Prenotazioni

Per le prove scritte, occorre prenotarsi usando il form presso l'area studenti del sito dei corsi di studio. In caso di impossibilità e comunque prima della scadenza
Attenzione la prenotazione viene chiusa 3 gg. prima della prova
Si prega di astenersi dall'invio di email di prenotazione non essendoci garanzia di arrivo in tempo utile (soprattutto dopo la scadenza suddetta)
Per la prenotazione dell'orale vale la presentazione, entro la data dello scritto, della documentazione del caso di studio dell'appello. NB: onde evitare di dover tener traccia dei casi sottoposti nei diversi appelli, non sarà più concesso di presentare documentazione relativa a casi antecedenti al penultimo (valgono quello corrente ed il precedente)
Per la consegna, si prega di utilizzare una busta plastificata contenente il disco e l'elaborato anche in fogli sciolti (numerati). Apporre i nomi sia sui fogli sia sul disco.

Date

Calendario Ufficiale Appelli presso il sito del Corso di Laurea
Le date effettive per la prova orale vengono concordate con gli studenti interessati a fine prova scritta e pubblicate su questo sito.


Sono previste prove in itinere esoneranti da parte del programma.

Programma A.A. 2004/05

si veda sul sito dei corsi di studio

Diario

[25/01] II Prova in itinere
[18/01] Collaudo: Test di Unità con test harness. Logging e Debugging.
[16/01] File e Stream. Lettura e scrittura. File binari e di caratteri. Accesso Causale. File di oggetti e serializzazione
[13/01] Eccezioni
[11/01] Ereditarietà. Livelli di accesso. Sovrascrittura e Polimorfismo. La classeObject
[09/01] Interfacce e Polimorfismo. Callback. Classi interne
[21/12] Progettazione di programmi (in piccolo): Codifica: qualità del codice. Test a scatoala nera: progetto delle Classi di equivalenza.
[19/12] Progettazione di programmi (in piccolo): Schema della metodologia. Analisi: chiarifica. Progetto di Algoritmi e Str. dati.
[16/12] Algoritmi Fondamentali: Quicksort e Tecnica Hash (dal Dromey). Naturalmerge sort per file (dal Wirth)
[14/12] Esercitazione (ordinamneto e ricerca): es. 17.14 e ricerca binaria ricorsiva
[14/12] Algoritmi Fondamentali: alg. semplcii, alg. su array, ordinamento Shell (dal Dromey)
[12/12] Algoritmi Fondamentali: Ordinamento e ricerca (Dromey e Horstmann cap 17)
[09/12] Progettare le classi: coesione e accoppiamento. Pre e postcondizioni Metodi e campi static. Visibilità. Package
[07/12] Esercitazione (array e matrici): 8.10 e 8.18, pp. 289 e segg.
[07/12]  Sottoprogrammi. Record di attivazione. Ricorsione
[05/12] Array in Java. Teoria: Sottoprogrammi, visibilità, parametri e loro passaggio
[02/12] Vettori/Array (cap. 8)
[30/11] Esercitazione: es. 6.1 e 6.7 Horstmann (Cap sulle Decisioni)
[30/11] Iterazione: cicliwhile,do/while efor (cap. 7)
[29/11] I prova in itinere
[28/11] Decisioni: Istruzioni if/else annidate e in cascata, condizioni semplciie complesse e tipi boolean (cap. 6)
[23/11] Esercizio 3.7, p. 87 (Horstmann), creazione e collaudo classe Studente (nome, punteggio)
[23/11] Tipi Fondamentali (argomenti dal cap 3 dell'Horstmann). Istruzione if/else (cap. 6)
[21/11] Tipi Fondamentali: interi e reali (argomenti dal cap 4 dell'Horstmann)
[18/11] Lavorare con gli oggetti e le classi (argomenti dal cap 3 dell'Horstmann)
[16/11] Esercitazione: es dai cap 1 e 2 (stampe, scacchiere, perimetro e area di oggetti Rectangle)
[16/11] Introduzione a Java (argomenti dai cap 1 e 2 dell'Horstmann)
[14/11] Introduzione a Java (argomenti dai cap 1 e 2 dell'Horstmann)
[28/10] Vettori e Record. Introduzione ai Sottoprogrammi
[26/10] Strutture di controllo. Tassonomie dei tipi. Tipi Predefiniti e tipi Semplici: enumerativi, sequenze, ... Introduzione a Java
[24/10] Tipi fondamentali: interi, reali, caratteri, logici, espressioni, assegnazione
[21/10] Programmi: astrazione di azioni e strutture dati; istruzioni e algebre dei dati. istruzioni di I/O, tipi predefiniti.
[19/10] Linguaggi di programmazione: Notazioni per la specifica della sintassi
[17/10]Specifica di Algoritmi: Linguaggio lineare, Alberi di decomposizione. Grafi di Nassi-Schneidermann, Diagrammi di attività UML
[14/10] Ricorsione. Processi sequenziali. Specifica di Algoritmi: Diagrammi di flusso
[12/10] Problem Solving: Problemi e soluzioni. Algoritmi. Schemi di decomposizione: sequenza, selezione, iterazione
[10/10] Introduzione al corso di Programmazione

Studio d'un Caso (Case Study)

NB:. Il materiale, da presentarsi entro la data della prova scritta dell'appello, (in formato cartaceo E digitale), deve documentare sinteticamenteognuna delle fasi di sviluppo del caso proposto, secondo la metodologia presentata (si vedano materiale e testi consigliati)
[17gen-15feb, 2007] [DocGest] Si richiede il progetto realizzazione e test di un programma (in Java) per l'organizzazione di documenti in formato digitale (es. PDF).
  • Aggiungere uno o più documenti all'elenco, ciascuno descritto tramite:
    • Numero progressivo
    • Titolo
    • Autore/i
    • Argomento
    • Data pubblicazione
    • nome del file
  • Elencare, su richiesta, i documenti (ciascuno con le relative informazioni) relativi ad un certo argomento o ad un certo autore;
  • Cercare le informazioni relative ad un documento in base al suo titolo, al numero progressivo, o ad uno dei suoi autori, consentendo di
    • Eliminarlo dall'elenco
    • Modifcare le relative informazioni
[set-nov, 2006] Realizzare attraverso opportune classi (>1) le seguenti funzionalità di un micro motore di ricerca personale VIRGINIO Desktop
  1. indicizzazione delle parole presenti nei file contenuti in una cartella indicata dall'utente (txt o testo di pagine html)
    per ogni parola dovrà essere associata la lista delle posizioni (path) dei file
    tali info risiederanno in un opportuno file indice del motore
    a scelta è possibile trascurare le parole troppo comuni (stopword) di cui esistono liste
  2. ricerca OR: su input di una o più stringhe, vanno restituite le posizioni di tutti i file in cui compaia almeno una delle stringhe
  3. ricerca AND: su input di una o più stringhe, vanno restituite le posizioni di tutti i file in cui compaiano tutte le stringhe
[2°giu-lug, 2006] Si richiede il progetto realizzazione e test di un programma che mantenga un agenda di appuntamenti.
Ogni appuntamento deve essere definito (almeno) con: descrizione, data, ora d'inizio, ora di di fine.
Devono essere previste (almeno) le operazioni di
  • aggiunta di appuntamenti
  • ricerca efficiente (in base a data/ora)
  • ricerca efficiente (in base lla descrizione)
  • stampa (intervallo)
La cancellazione può essere prevista come automatica.
[apr-1°giu, 2006]

Si richiede di progettare un programma per la simulazione di estrazioni del lotto,
in grado di gestire anche le puntate ed il calcolo delle vincite, secondo l'attuale disciplina.
Si richiede, altresì, che le informazioni vengano registrate in maniera permanente su file.
(suggerimento: occorre qualche nozione di calcolo combinatorio, cfr. wikipedia)

[gen-feb, 2006] Si richiede il progetto realizzazione e test di un programma che, avendo in ingresso un testo organizzato per linee, calcoli e visualizzi le seguenti statistiche sul testo:
  • il numero di caratteri
  • il numero di linee
  • il numero totale di parole
  • il numero di parole palindrome
Inoltre, data una parola chiave, il programma deve verificare la presenza della stessa, indicandone eventualmente la posizione.
[set-nov 2005]

Si richiede di progettare un programma per l'organizzazione e il ritrovamento delle informazioni relative ai propri mp3.
Si suppone che le informazioni siano rappresentate in (un sottoinsieme del) formatoID3.
Le funzionalità minime richieste sono le seguenti.

  • inserimento
  • stampa (simulata su file e/o video) della collezione ordinata per autore
  • stampa (simulata su file e/o video) della collezione ordinata per anno
  • ricerca mp3 in base all'autore
  • ricerca mp3 in base all'anno

Opzionale:

  • inserimento automatico nella collezione, cercando i file nelle dir. del proprio disco
[giu-lug, 2005] Si richiede un programma capace di lavorare su file di testo scelti dall'utente.
Le funzionalità richieste sono le seguenti:
  • conteggio del numero di parole
  • produzione di file con le stesse parole ordinate
  • controllo ortografia della parole del file in base ad un altro file che contenga una lista delle parole consentite;
    • stampa della lista delle parole errate
    • correzione degli errori e produzione di un nuovo file
[gen-feb, 2005] La biblioteca LIBER vuole automatizzare la gestione dei prestiti.
A tale scopo, progettare un programma Java in grado di:
  • Aggiungere uno o più libri alla raccolta, ciascuno descritto tramite:
    • Numero progressivo,
    • Titolo,
    • Autore,
    • Argomento (codice di 5 cifre),
    • Indicatore di prestito,
    • Data di scadenza del prestito;
  • Elencare, su richiesta, i libri (ciascuno con le relative informazioni) relativi ad un certo argomento;
  • Cercare le informazioni relative ad un libro in base al suo titolo o numero progressivo, consentendo di
    • Eliminarlo dall'elenco
    • Memorizzarne il prestito, impostandone la scadenza a un numero di giorni inserito da tastiera
    • Memorizzarne il rientro da un prestito;
  • Elencare, al termine di ogni sessione, i libri il cui prestito scade quel giorno, consentendo di memorizzarne il rientro o di prorogarne il prestito.
[inizio pagina]