DIPARTIMENTO   DI   INFORMATICA
Università di Torino

Sperimentazioni

del corso di: Algoritmi & Sperimentazioni (anno Accademico 2002-2003)


INDICE


Obiettivi delle sperimentazioni

Le sperimentazioni hanno il duplice scopo di

  1. approfondire la conoscenza degli algoritmi e delle srutture dati presentate nel corso, attraverso l'implementazione di alcuni di essi utilizzando il linguaggio di programmazione Java,
  2. illustrare alcuni aspetti della programmazione Object Oriented.


Modalità di esecuzione delle sperimentazioni

Le sperimentazioni si effettuano in "Aula Unix", con il seguente orario (ATTENZIONE: NUOVO ORARIO PER LE LEZIONI IN LABORATORIO, IN VIGORE DAL 18/11/2002):

  • TURNO 1: Martedi' 14:00-16:00 [NON e' cambiato] e Mercoledi' 11:00-13:00 [NUOVO]
  • TURNO 2: Lunedi' 11:00-13:00 [NUOVO] e Mercoledi' 14:00-16:00 [NUOVO]
Il docente assegna periodicamente un certo numero di esercizi. Tali esercizi possono essere svolti in gruppi (di non più di 3 persone).

Tutti i gruppi (anche quelli costituiti da una singola persona) si devono registrare inviando (a cura di un corrispondente scelto tra i membri del gruppo) una mail con il seguente formato:

  • To: damiani@di.unito.it
  • Subject: Sper - REGISTRAZIONE GRUPPO
  • Testo della mail:
    MEMBRI DEL GRUPPO:
    
    COGNOME1 Nome1 (corrispondente)
    COGNOME2 Nome2
    COGNOME3 Nome3
    
La registrazione è confermata dal docente, che rispondera' alla mail, comunicando il "numero del gruppo" (un numero naturale N): i gruppi di numero DISPARI faranno parte del TURNO 1 mentre i gruppi di numero PARI faranno parte del TURNO 2.

Le soluzioni di tali esercizi, costituite da codice Java, devono essere consegnate al docente (a cura del corrispondete del gruppo) in forma elettronica, entro le date di consegna comunicate dal docente.

La consegna dell'esercizio "NomeEsercizio" avviene inviando una mail nel seguente formato:

  • To: damiani@di.unito.it
  • Subject: Sper - Gruppo N - Consegna NomeEsercizio
  • Testo della mail: Il testo della mail deve riportare l'elenco dei files sorgente Java che rappresentano la soluzione dell'esercizio. Per ogni file deve esserci una breve descrizione (poche righe). I files sorgente Java sono trasmessi in attachment alla mail.

A consegne avvenute gli elaborati sono discussi con il docente esclusivamente alle date fissate per i singoli appelli. La discussione avviene in laboratorio, e comprende compilazione ed esecuzione del codice (su input forniti dal docente).

OGNI VARIAZIONE CHE SI DESIDERA APPORTARE AL TESTO DEGLI ELABORATI CONSEGNATI DEVE ESSERE COMUNICATA AL DOCENTE PRIMA DELL'INIZIO DELLA DISCUSSIONE.

Il voto riportato alla discussione ha validita' di un anno dalla data della discussione, fa media con il voto riportato allo scritto, ed è verbalizzato con esso.

Chi non rispetterà le scadenze fissate dovrà svolgere (individualmente) degli esercizi integrativi.

I compiti assegnati durante l'aa 2002/2003 si intendono validi fino al 30 Novembre 2003.


Programma delle sperimentazioni ed esercizi assegnati

NOTA: il carico di lavoro associato alle sperimentazioni è di 3 CFU e le sperimentazioni si svolgono in laboratorio. Quindi, siccome
  1. "1 CFU = 12 ore in laboratorio + 13 ore di studio/lavoro individuale", e
  2. ogni settimana ci sono 4 ore di sperimentazioni
ogni studente dovrà dedicare (indicativamente) circa 4 ore di studio individuale a settimana agli argomenti introdotti durante le 4 ore settimanali di sperimentazioni.


ATTENZIONE: e' disponibile on-line (quasi) tutto il codice Java degli esempi ed esercizi presentati nel libro di testo .


ATTENZIONE: nel seguito oltre al libro di testo, faremo riferimento ai seguenti libri:

  • [Horstmann1]
    Concetti di Informatica e fondamenti di JAVA 2.
    Apogeo.
    (È il libro di testo utilizzato lo scorso anno per "Programmazione I e Laboratorio" e "Programmazione II e Laboratorio").
  • [Horstmann2]
    Concetti di Informatica e fondamenti di JAVA 2 - SECONDA EDIZIONE.
    Apogeo.
    (Prima o poi alcune copie di questo libro saranno disponibili in biblioteca - al momento alcuni capitoli (purtroppo non quelli che ci interessano di più) sono disponibili on-line GRATUITAMENTE al sito Web del libro.)


SUGGERIMENTO: imparate ad usare l'editor vim (iniziate con questo semplice tutorial in Italiano (disponibile anche in Inglese )).

  1. Lezione del 7/10/02 per entrambi i turni: presentazione del "laboratorio Unix".
  2. Lezione del 9/10/02 per il TURNO 2 (e del 14/10/02 per il TURNO 1)
  3. Lezione del 10/10/02 per il TURNO 2 (e del 15/10/02 per il TURNO 1): svolgimento degli esercizi assegnati durante la lezione precedente.
  4. Lezione del 15/10/02 (1 ora in Aula D) per entrambi i turni:
    • richiamo delle nozioni introdotte nelle lezioni precedenti: ereditarietà, polimorfismo, conversione di tipo;
    • presentazione della nozione di classe astratta.
    COSA SI DEVE LEGGERE:
    • Capitolo 1 del libro, incluse le DOMANDE DI RIEPILOGO: illustra nozioni già viste nei corsi del primo anno.
    • Capitolo 2 del libro, incluse le DOMANDE DI RIEPILOGO: illustra nozioni già viste nei corsi del primo anno e un nuovo argomento visto a lezione (la classe Vector).
    • Capitolo 3 del libro (fino al paragrafo 3.5 incluso): illustra gli argomenti presentati in questa lezione.
  5. Lezione del 16/10/02 per il TURNO 2 (e del 21/10/02 per il TURNO 1)
    COSA SI DEVE LEGGERE:
    • Capitolo 3 del libro (dal paragrafo 3.6 incluso in avanti), incluse le DOMANDE DI RIEPILOGO: illustra gli argomenti presentati in questa lezione.
  6. Lezione del 17/10/02 per il TURNO 2 (e del 22/10/02 per il TURNO 1):
    • competamento e CONSEGNA degli esercizi STACK-1 e STACK-2,
    • inizio svolgimento dell'esercizio MYSET (assegnato durante la lezione precedente).
      COSA SI DEVE LEGGERE (prima di iniziare lo svolgimento dell'esercizio MYSET):
      • Capitolo 5 del libro, incluse le DOMANDE DI RIEPILOGO: contiene informazioni essenziali per lo svolgimento dell'esercizio.
  7. Lezione del 23/10/02 per il TURNO 2 (e del 28/10/02 per il TURNO 1):
    • svolgimento dell'esercizio MYSET.
    • ATTENZIONE:
      • per ulteriori spiegazioni su metodi della classe "Object", "ereditarietà", "polimorfismo", e costrutti "abstract class", "interface", "try...catch", consultare [Horstmann1] (o, meglio, [Horstmann2];
      • durante questa lezione è stato illustrato il costrutto "classe interna anonima", utilizzato nel paragrafo 5.5 del libro.
  8. Lezione del 24/10/02 per il TURNO 2 (e del 29/10/02 per il TURNO 1):
    • completamento e CONSEGNA dell'esercizio MYSET.
  9. Lezione del 29/10/02 (2 ora in Aula D) per entrambi i turni.
    ATTENZIONE:
    tutto il codice relativo agli esercizi (assegnati successivamente all'esercizio MYSET) dovrà:
    • rispettare le "linee guida per la codifica" presentate nell'Appendice 1 di [Horstmann1] o di [Horstmann2] (NOTA: attualmente questa appendice è discponibile on-line GRATUITAMENTE al sito Web di [Horstmann2]),
    • essere corredato di documentazione generata usando la utili javadoc (presentata a pagina 303 di [Horstmann1]).
    COSA SI DEVE LEGGERE:
    • Capitolo 8 del libro
      • dall'inizio fino all'Esempio 8.4 (ESCLUSO),
      • dal paragrafo 8.7 (INCLUSO) fino alle DOMANDE DI RIEPILOGO (INCLUSE)
    • Capitolo 15 del libro, incluse le DOMANDE DI RIEPILOGO:
    LETTURE CONSIGLIATE (possono essere di aiuto, perchè le spiegazioni sono particolarmente chiare):
    • Capitolo 17 di [Horstmann2].
  10. Lezione del 31/10/02 per il TURNO 2 (e del 5/11/02 per il TURNO 1):
    COSA SI DEVE LEGGERE:
    • Capitolo 6 del libro
      • dall'inizio fino allla Sezione 6.3 (ESCLUSA),
      • LE DOMANDE DI RIEPILOGO.
    • Capitolo 7 del libro
      • dall'inizio fino allla Sezione 7.4 (ESCLUSA),
      • LE DOMANDE DI RIEPILOGO.
    LETTURE CONSIGLIATE (possono essere di aiuto, perchè le spiegazioni sono particolarmente chiare):
    • Capitolo 18 di [Horstmann2].
  11. Lezione del 6/11/02 per il TURNO 2 (e dell'11/11/02 per il TURNO 1): svolgimento dell'esercizio QUEUE.
  12. Lezione del 7/11/02 per il TURNO 2 (e del 12/11/02 per il TURNO 1): svolgimento dell'esercizio QUEUE.
    La CONSEGNA DELL'ESERCIZIO QUEUE e' dovuta:
    • entro Domenica 17 per il TURNO 2
    • entro Venerdi' 22 per il TURNO 1.

    ATTENZIONE: IL 18/11/2002 ENTRA IN VIGORE IL NUOVO ORARIO PER LE LEZIONI IN LABORATORIO !!!
    ATTENZIONE: LA SETTIMANA DEL 18/11/2002 IL TURNO 2 NON FA LEZIONE (IN QUESTO MODO RECUPERA LE DUE LEZIONI IN PIU' CHE HA FATTO AD INIZIO CORSO)
  13. Lezione del 13/11/02 [Mercoledi', ancora VECCHIO ORARIO] per il TURNO 2
    (e del 19/11/02 [Martedi', gia' NUOVO ORARIO] per il TURNO 1)
    :
    COSA SI DEVE LEGGERE:
    • Paragrafo 3.4 libro di testo.
    • Paragrafi 12.5 e 12.6 del libro di testo.
  14. Lezione del 14/11/02 [Giovedi', ancora VECCHIO ORARIO] per il TURNO 2
    (e del 20/11/02 [Mercoledi' mattina, gia' NUOVO ORARIO] per il TURNO 1):
  15. Lezione del 25/11/02 [Lunedi', NUOVO ORARIO] per il TURNO 2
    (e del 26/11/02 [Martedi', NUOVO ORARIO] per il TURNO 1):

    COSA SI DEVE LEGGERE:
    • Capitoli 8 e 9 di [Horstmann1].
    • Capitolo 12 del libro di testo.
  16. Lezione del 27/11/02 [Mercoledi' pomeriggio , NUOVO ORARIO] per il TURNO 2
    (e del 27/11/02 [Mercoledi' mattina, NUOVO ORARIO] per il TURNO 1):
    ATTENZIONE: all'inizio della prossima lezione OGNI GRUPPO DI LABORATORIO dovra' consegnare una stampa degli esercizi GIA' CONSEGNATI PER E-MAIL fino a questo momento (cioe' fino a CCCQueue incluso). Su ogni stampa di file .java dovranno essere chiaramente indicati: il nome dell'esercizio, il numero del gruppo, e i componenti del gruppo.
  17. Lezione del 2/12/02 [Lunedi'] per il TURNO 2
    (e del 3/12/02 [Martedi'] per il TURNO 1):
  18. Lezione del 4/12/02 [Mercoledi' pomeriggio] per il TURNO 2
    (e del 4/12/02 [Mercoledi' mattina] per il TURNO 1):


[Corso di Studi di Informatica]

Last update: Nov 20, 2002