Programmazione 2 (canale P-Z)

Corsi di Laurea in Informatica/Tecnologie Informatiche

Anno Accademico 2006/07


Stefano Guerrini & Daniele Gewurz

guerrini at di.uniroma1.it





[ Lezioni ] [ Sorgenti ] [ Esercitazioni ] [ Corso 2006-07 ] [ Pagina principale ]






Periodo di Preparazione degli esami

Durante il periodo di preparazione agli esami si svolgeranno due esercitazioni

  1. venerdì 8 giugno
  2. venerdì 15 giugno

Nelle esercitazioni si svolgeranno in dettaglio esercizi simili di quelli che verranno proposti all'esame. gli esercizi saranno pubblicati sul sito alcuni giorni prima dell'esercitazione. Gli studenti potranno così provare a svolgerli da soli prima della discussione in aula.

In particolare si segnalano i testi dei compiti di esame dell'anno accademico 2006-07:


Dettaglio Voti Esonero

Allo scritto, gli studenti esonerati potranno svolgere solo gli esercizi solo sulla seconda parte.

Maggiori dettagli sulle modalità di esame saranno pubblicati al più presto.




Orario delle Lezioni

Le lezioni si tengono in Aula 5 di Matematica

  • Martedì 14.00-16.00

  • Venerdì 14.00-16.00

Ricevimento

Durante il periodo delle lezioni, Mercoledì dalle 11.00 alle 12.00, nell'ufficio del docente in via Salaria.

Al termine del corso, su appuntamento, se non verrà comunicato un altro orario di ricevimento.

Passaggi di canale

Possono sostenere l'esame con le modalità e negli appelli di questo canale:

  1. gli studenti del primo anno regolarmente afferenti al canale P-Z, ovvero
    • gli studenti del primo anno con iniziale del cognome nell'intervallo P-Z che all'inizio dell'anno non hanno richiesto e ottenuto il passaggio ad un altro canale,
    • gli studenti del primo anno che all'inizio dell'anno hanno richiesto e ottenuto il passaggio al canale P-Z;
  2. gli studenti iscritti ad anno successivo al primo o fuori corso con iniziale del cognome nell'intervallo P-Z;
  3. gli studenti che non rientrano nella categorie precedenti che entro il 30 marzo segnalano al docente (via e-mail) di voler sostenere l'esame negli appelli e con il programma di questo canale.

NOTA! Come da regolamento del corso di laurea, la suddivisione per canali vale solo per gli studenti del primo anno, gli altri studenti possono decidere di frequentare e sostenere gli esami negli appelli e con il programma di questo canale indipendentemente dall'iniziale del cognome. Si fa però notare che, questa scelta deve corrispondere all'effettiva intenzione di frequentare le lezioni o quantomeno di studiare il programma di questo canale e che, una volta scelto il canale a cui si intende afferire non è possibile sostenere gli esami con gli altri canali. Per questo motivo, gli studenti che in base all'iniziale del cognome non afferirebbero a questo canale devono segnalare al docente che intendono passare al suo canale entro un mese dall'inizio delle lezioni.

Programma

Richiami di programmazione ricorsiva: i fondamenti della ricorsione; lo stack delle chiamate ricorsive; esempi di programmi ricorsivi su vettori e matrici. Richiami su strutture dinamiche ricorsive: le liste.

Efficienza degli algoritmi: spazio e tempo. Lo spazio: stack e heap. Il tempo: costo delle operazioni elementari, costo di un ciclo, operazione dominante, caso peggiore, analisi asintotica. Analisi di un esempio: ricerca lineare e ricerca dicotomica. Caso peggiore e caso medio: le tavole hash.

Commentare i programmi: descrizione dell'algoritmo, asserzioni sui dati, condizioni di ingresso e uscita delle funzioni. Generazione automatica della documentazione.

Strutturazione dei programmi: sottoprogrammi e moduli. Tipi di dato astratti.

Pile e code: definizione e implementazione mediante liste e vettori. Pile e programmi ricorsivi. Implementazione dello stack delle chiamate di funzione. Dalla ricorsione all'iterazione. Ricorsione in coda.

Ricorsione e backtracking. Uso di pile e code per il backtracking. Esempi: visita di un labirinto.

Invarianti e verifica della correttezza di un ciclo. Invarianti come strumenti di progettazione di cicli. Applicazione del metodo al problema dell'ordinamento.

Alberi binari: definizione e implementazione. Semplici proprietà degli alberi binari. Visite ricorsive di alberi binari. Generalizzazione ad alberi n-ari. Esempi di alberi binari: gli alberi binari di ricerca.

Alberi e foreste: definizione e implementazione. Rappresentazione di alberi e foreste mediante alberi binari.

Grafi: definizione e implementazione. Visite in ampiezza e in profondità. Visita in ampiezza di un albero: visita per livelli.

Testing: scelta dei dati di test. Black-box testing: analisi e suddivisione in classi dei dati di input; analisi dei casi di confine. Glass-box testing: copertura delle istruzioni e dei cammini; casi limite o rilevanti.

Materiale didattico

Il principale materiale didattico sono i lucidi e gli esempi mostrati a lezione e pubblicati sulla pagina delle lezioni.

Libri consigliati

Per una introduzione graduale al linguaggio C, si segnalano:

  • Al Kelley, Ira Phol. C - Didattica e Programmazione. Pearson Education Italia, 2004.
  • Deitel. C - Corso completo di programmazione. Apogeo, 2004.

Il miglior riferimento per lo studio del linguaggio C rimane comunque:

  • Brian W. Kernighan, Dennis M. Ritchie. Il linguaggio C - Principi di programmazione e manuale di riferimento. Pearson Education Italia, 2004.

Si segnalano inoltre:

  • Brian W. Kernighan, Rob Pike. Programmazione nella pratica. Pearson Education Italia, 1999.
  • Jon Bentley. Programming Pearls, Second Edition. Addison-Wesley, Inc., 2000. (parzialmente disponibile online)

Modalità di Esame

...

Esoneri

La prima prova intermedia si terrà mercoledì 18/04 in aula 1 NEC.

Date degli Appelli

...

Argomenti delle Lezioni

Il calendario delle lezioni, gli argomenti svolti e materiale didattico di supporto sono disponibili sulla pagina delle lezioni svolte e degli argomenti trattati.

Esercitazioni

Gli argomenti delle esercitazioni, il codice dei programmi svolti durante le esercitazioni, esercizi integrativi ed altro materiale di supporto sono disponibili sulla pagina delle esercitazioni del corso.

Anni precedenti


-- StefanoGuerrini - 26 Mar 2007

Topic attachments
I Attachment History Action Size Date Who Comment
PDFpdf Appello-060615.pdf r1 manage 66.7 K 2007-06-01 - 22:06 StefanoGuerrini Appello 15/06/2006
PDFpdf Appello-060718.pdf r1 manage 89.9 K 2007-06-01 - 22:06 StefanoGuerrini Appello 18/07/2006
PDFpdf Appello-060919.pdf r1 manage 75.6 K 2007-06-01 - 22:07 StefanoGuerrini Appello 19/09/2006
PDFpdf Appello-070123.pdf r1 manage 77.9 K 2007-06-01 - 22:08 StefanoGuerrini Appello 23/01/2007
PDFpdf Appello-070222.pdf r1 manage 66.2 K 2007-06-01 - 22:08 StefanoGuerrini Appello 22/02/2007
HTMLhtm Voti-070919.htm r1 manage 6.0 K 2007-10-01 - 12:57 StefanoGuerrini Voti scritto del 19/09/2007
Edit | Attach | Watch | Print version | History: r21 < r20 < r19 < r18 < r17 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r21 - 2008-02-29 - StefanoGuerrini






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback