07.08.2013 Views

Programma del Corso - Dipartimento di Matematica e Informatica

Programma del Corso - Dipartimento di Matematica e Informatica

Programma del Corso - Dipartimento di Matematica e Informatica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Obiettivi <strong>del</strong> corso<br />

PROGRAMMAZIONE e LABORATORIO<br />

(docente: Clau<strong>di</strong>o Mirolo)<br />

Il corso introduce i fondamenti culturali e metodologici <strong>del</strong>la programmazione e si propone <strong>di</strong> mettere lo<br />

studente in con<strong>di</strong>zione <strong>di</strong> cogliere pienamente la natura <strong>di</strong> questa attività, stimolando inoltre un atteggiamento<br />

critico nei confronti degli strumenti utilizzati.<br />

Al termine <strong>del</strong> corso lo studente dovrebbe aver acquisito le competenze <strong>di</strong> base e le capacità operative necessarie<br />

al fine <strong>di</strong> progettare, organizzare e formalizzare programmi <strong>di</strong> piccole <strong>di</strong>mensioni, sviluppati secondo i para<strong>di</strong>gmi<br />

funzionale e object-oriented. Dovrebbe inoltre essere in grado <strong>di</strong> analizzare la struttura logica <strong>di</strong> un programma<br />

al fine <strong>di</strong> verificarne la correttezza in relazione alle specifiche.<br />

Organizzazione <strong>del</strong> corso<br />

Il percorso <strong>di</strong>dattico muove dalla <strong>di</strong>scussione <strong>di</strong> esempi e articola la propria riflessione sui principali processi <strong>di</strong><br />

astrazione che consentono <strong>di</strong> gestire la complessità dei problemi affrontati in ambito informatico: l’astrazione<br />

procedurale, l’astrazione sui dati e l’astrazione sullo stato, mettendo in rilievo il ruolo preminente <strong>del</strong>le capacità<br />

organizzative <strong>del</strong> pensiero rispetto alle caratteristiche specifiche dei linguaggi <strong>di</strong> programmazione.<br />

L’approccio seguito è <strong>di</strong> tipo functional-first (IEEE-CS/ACM Computing Curricula 2001): gli esempi relativi<br />

all’astrazione procedurale e sui dati sono affrontati applicando il para<strong>di</strong>gma <strong>di</strong> programmazione funzionale, per<br />

passare infine al para<strong>di</strong>gma imperativo e ai ru<strong>di</strong>menti <strong>di</strong> quello object-oriented nell’ultima parte <strong>del</strong> corso che<br />

tratta l’astrazione sullo stato.<br />

Prerequisiti<br />

Conoscenze matematiche <strong>di</strong> base, <strong>del</strong> livello acquisito nella scuola superiore.<br />

Contenuti <strong>del</strong> corso<br />

Parte I - Astrazione procedurale (linguaggio Scheme)<br />

Algoritmi basati sul calcolo <strong>di</strong> espressioni numeriche e non numeriche. Approccio funzionale: procedure come<br />

astrazione <strong>di</strong> espressioni. Costrutti <strong>di</strong> scelta binaria (if) e multipla (cond). Valori numerici, booleani, caratteri e<br />

stringhe. Procedure ricorsive. Definizioni ricorsive ben fondate. Mo<strong>del</strong>lo <strong>di</strong> valutazione per sostituzione e<br />

riduzione. Costrutto let. Ricorsione generale e ricorsione <strong>di</strong> coda (tail recursion). Verfica <strong>del</strong>la correttezza dei<br />

programmi ricorsivi attraverso <strong>di</strong>mostrazioni per induzione. Ricorsione ad albero e complessità computazionale.<br />

Procedure con argomenti e/o valori procedurali.<br />

Parte II - Astrazione sui dati (linguaggio Scheme)<br />

Introduzione all’astrazione sui dati attraverso semplici strutture. Strutture dati <strong>di</strong> base: coppie, liste e procedure<br />

che operano sulle liste. Liste or<strong>di</strong>nate e algoritmi <strong>di</strong> ricerca. Algoritmi <strong>di</strong> or<strong>di</strong>namento e confronto dei costi<br />

computazionali. Specifica astratta <strong>di</strong> una struttura dati e varietà <strong>del</strong>le scelte realizzative. Strutture dati dal punto<br />

<strong>di</strong> vista <strong>del</strong>l’utilizzatore (protocollo) e dal punto <strong>di</strong> vista <strong>del</strong>l’implementatore (comportamento). Strutture dati<br />

notevoli: pile, code, alberi e relative applicazioni. Alberi binari: alberi <strong>di</strong> valutazione <strong>del</strong>le espressioni, alberi<br />

binari <strong>di</strong> ricerca. Schemi <strong>di</strong> visita <strong>di</strong> alberi: visita anticipata, posticipata e simmetrica.<br />

Parte III - Astrazione sullo stato (linguaggi Scheme e Java)<br />

Concetto <strong>di</strong> stato e para<strong>di</strong>gma imperativo. Principali coman<strong>di</strong> e costrutti imperativi <strong>del</strong> linguaggio Java. Array<br />

(vettori, matrici) e operazioni sugli array. Rivisitazione <strong>di</strong> strutture <strong>di</strong> dati elementari attraverso il para<strong>di</strong>gma<br />

imperativo. Tecniche <strong>di</strong> memoization e programmazione <strong>di</strong>namica. Para<strong>di</strong>gmi funzionale e imperativo a<br />

confronto. Astrazione sullo stato: concetti <strong>di</strong> classe, oggetto, costruttore e metodo. Realizzazione <strong>di</strong> strutture<br />

<strong>di</strong>namiche in Java: pile, code e alberi. Programmi iterativi: correttezza e terminazione. Concetti <strong>di</strong> asserzione,<br />

invariante <strong>del</strong>l’iterazione e funzione <strong>di</strong> terminazione.<br />

Concetti ricorrenti: Astrazione procedurale; mo<strong>del</strong>lo computazionale; schema ricorsivo; ricorsione <strong>di</strong> coda;<br />

ricorsione ad albero; schema imperativo; iterazione; algoritmo; complessità computazionale; precon<strong>di</strong>zioni e<br />

postcon<strong>di</strong>zioni (specifiche); invariante; terminazione; astrazione sui dati; astrazione sullo stato; schema orientato<br />

agli oggetti; protocollo; istanza (oggetto); incapsulamento dei dati; organizzazione modulare.<br />

1


Materiale <strong>di</strong> stu<strong>di</strong>o consigliato<br />

PROGRAMMAZIONE e LABORATORIO<br />

(docente: Clau<strong>di</strong>o Mirolo)<br />

• Max Hailperin, Barbara Kaiser, Karl Knight<br />

Concrete Abstractions: An Introduction to Computer Science Using Scheme<br />

Brooks/Cole Publishing Company, 1999 (ISBN: 0-534-95211-9)<br />

http://gustavus.edu/+max/concrete-abstractions-pdfs/index.html<br />

• Walter Savitch, Frank M. Carrano<br />

<strong>Programma</strong>zione con Java<br />

Prentice-Hall, 2010 (E<strong>di</strong>zione italiana; ISBN: 9788871926148)<br />

• Appunti tratti dalle lezioni; esempi ed esercizi pubblicati sulle pagine web <strong>del</strong> corso.<br />

Modalità d’esame<br />

L’esame <strong>di</strong> <strong>Programma</strong>zione prevede due prove <strong>di</strong> accertamento, che si svolgono al termine dei due perio<strong>di</strong><br />

<strong>di</strong>dattici in cui è articolato il corso, una prova <strong>di</strong> Laboratorio e una prova orale. All’orale sono ammessi gli<br />

studenti che hanno conseguito una valutazione complessiva <strong>di</strong> almeno 15 punti su 30 nelle prove <strong>di</strong> accertamento<br />

e che hanno inoltre superato la prova <strong>di</strong> Laboratorio. La <strong>di</strong>scussione orale è opzionale per valutazioni <strong>del</strong>le prove<br />

<strong>di</strong> accertamento comprese fra 20 e 28 punti. La prova <strong>di</strong> Laboratorio e la prova orale, nel caso quest’ultima<br />

venga sostenuta, concorrono alla valutazione finale nei termini <strong>di</strong> una me<strong>di</strong>a pesata. Durante le prove scritte è<br />

consentito consultare libri e appunti.<br />

La valutazione <strong>di</strong> ciascuna <strong>del</strong>le prove <strong>di</strong> accertamento viene espressa nei seguenti livelli qualitativi: ottimo,<br />

buono, <strong>di</strong>screto, sufficiente, quasi sufficiente, insufficiente (la valutazione <strong>di</strong> una singola prova non pregiu<strong>di</strong>ca <strong>di</strong><br />

per se l’ammissione all’orale). La valutazione complessiva <strong>del</strong>le prove <strong>di</strong> accertamento o dei recuperi che<br />

vertono sull’intero programma viene espressa con un punteggio da 18 a 30, se sufficiente; da 15 a 17, se<br />

consente <strong>di</strong> sostenere la prova orale; insufficiente altrimenti.<br />

Il primo appello scritto <strong>di</strong> <strong>Programma</strong>zione consiste normalmente nello svolgimento <strong>del</strong>la seconda prova <strong>di</strong><br />

accertamento. A partire dal secondo appello sono invece previste unicamente prove scritte <strong>di</strong> recupero, che<br />

vertono sull’intero programma <strong>del</strong> corso, rivolte a coloro che non abbiano potuto partecipare alle prove <strong>di</strong><br />

accertamento o vi abbiano conseguito una valutazione insufficiente per l’ammissione all’orale, o che comunque<br />

desiderino migliorare il profitto. In<strong>di</strong>pendentemente dalla valutazione, le prove scritte <strong>di</strong> recupero non<br />

consentono l’esonero dalla <strong>di</strong>scussione orale. Nel caso lo studente si cimenti in più <strong>di</strong> una prova resta valida la<br />

migliore valutazione conseguita.<br />

Quando tutte le prove richieste (prove scritte, prova <strong>di</strong> laboratorio, eventuale prova orale) sono state sostenute, ai<br />

fini <strong>del</strong>la registrazione <strong>del</strong>l’esame, che avviene per via elettronica, è necessario che lo studente confermi<br />

personalmente l’accettazione <strong>del</strong>la valutazione finale conseguita presentandosi a una <strong>del</strong>le sessioni <strong>di</strong> orali<br />

previste dal calendario ufficiale pubblicato a cura <strong>del</strong>la Facoltà. In mancanza <strong>di</strong> un tale assenso esplicito, non si<br />

procederà alla verbalizzazione e quin<strong>di</strong> il superamento <strong>del</strong>l’esame non potrà essere certificato da parte <strong>del</strong>la<br />

segreteria studenti.<br />

Ulteriori informazioni<br />

Ulteriori informazioni sul corso e sulle lezioni, in particolare gli esempi <strong>di</strong>scussi in classe e i temi d’esame, sono<br />

resi <strong>di</strong>sponibili attraverso le pagine <strong>del</strong> corso all’in<strong>di</strong>rizzo:<br />

http://www.<strong>di</strong>mi.uniud.it/clau<strong>di</strong>o/teaching/programmazione/<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!