Programmazione degli Elaboratori

Corso disattivato dall'anno accademico 2009-2010. Dall'anno accademico 2009-2010 è entrato in vigore il nuovo ordinamento, in cui il corso di programmazione del primo anno si chiama semplicemente "Programmazione", con un programma che riunisce più o meno metà dei contenuti del precedente corso di "Programmazione degli Elaboratori" con quelli del precedente corso di "Laboratorio di Programmazione".


Anno Accademico 2008-2009

II semestre
Docente: Prof. Andrea G. B. Tettamanzi

Orario delle lezioni

Martedì mattina, dalle ore 11 alle ore 13.
Martedì pomeriggio, dalle ore 14 alle ore 16.
Giovedì mattina, dalle ore 11 alle ore 13.
Giovedì pomeriggio, dalle ore 14 alle ore 16.

N.B.: seguendo l'antica e consolidata consuetudine universitaria, le lezioni iniziano sempre con 15 minuti di ritardo rispetto all'orario riportato (il cosiddetto quarto d'ora accademico).

Orario di ricevimento studenti

Per il II semestre dell'A.A. 2008-2009: giovedì pomeriggio, dalle 16 alle 17:30.

Scopo dell'insegnamento

Questo è un corso introduttivo alla programmazione, ai suoi principi ed alle sue tecniche. Il suo scopo è quello di familiarizzare lo studente, che potrebbe non essere mai stato esposto alla programmazione, con questa disciplina e fornirgli quella comprensione e gli strumenti necessari ad affrontare tutti i corsi che ne presuppongono la conoscenza. L’approccio alla materia è di tipo storico-critico, ripercorrendo nell’esposizione gli sviluppi storici che hanno determinato la situazione attuale della teoria e della pratica della programmazione.

Calendario delle lezioni per l'A.A. 2008-2009

Presentazione del corso e Introduzione

Data Argomento
Martedì 3 marzo 2009 Presentazione del corso e Introduzione

Parte I: Concetti di base

Data Argomento
Martedì 3 marzo 2009
Elementi di Matematica e Logica per la programmazione (1)
Giovedì 5 marzo 2009
Elementi di Matematica e Logica per la programmazione (2)

La nozione di algoritmo
Martedì 10 marzo 2009 Cenni sulla complessità degli algoritmi

Cenni di teoria dei linguaggi formali
Giovedì 12 marzo 2009
Fasi della programmazione

Strumenti di modellazione della programmazione
Martedì 17 marzo 2009 Documentazione

Breve storia della programmazione

Parte II: Programmazione elementare

Data Argomento
Giovedì 19 marzo 2009 Informazione e rappresentazione (1)

Informazione e rappresentazione (2)
Martedì 24 marzo 2009 La macchina MIX e il suo linguaggio assembly MIXAL

La macchina MIX e il suo ambiente di sviluppo MixIDE
Giovedì 26 marzo 2009 Organizzazione dei dati (1)

Organizzazione dei dati (2)
Martedì 31 marzo 2009 Realizzazione del metodo di eliminazione di Gauss in MIXAL

Realizzazione del metodo di eliminazione di Gauss in MIXAL
Giovedì 2 aprile 2009 Strutture dati dinamiche; sottoprogrammi

Gestione di strutture dati dinamiche in MIXAL
Martedì 7 aprile 2009 Ricorsione

Interpreti
Martedì 21 aprile 2009 Automi

Esercitazione di fine Modulo 2

Parte III: Programmazione strutturata

Data Argomento
Giovedì 23 aprile 2009 Principi della programmazione strutturata

I linguaggi di alto livello
Martedì 28 aprile 2009
Elementi di sintassi C/Java

Costrutti di controllo
Giovedì 30 aprile 2009
Eliminazione dei salti

Strutture dati
Martedì 5 maggio 2009 Elementi di validazione del codice

Elementi di verifica della correttezza del codice

Parte IV: Programmazione orientata agli oggetti

Data Argomento
Giovedì 7 maggio 2009 Modularità e tipi di dati astratti

Incapsulamento
Martedì 19 maggio 2009
Classi, e oggetti

Riuso del software
Giovedì 21 maggio 2009 Classi, interfacce e oggetti in Java

Ereditarietà e Polimorfismo
Martedì 26 maggio 2009 Gestione degli errori e delle eccezioni

Input/Output e Interfacce utente

Parte V: Concetti avanzati

Data
Argomento
Giovedì  28 maggio 2009 La programmazione come processo evolutivo

Lo spazio delle versioni e sistemi di controllo delle versioni

Materiale didattico

Dispense del corso

Le dispense del corso (disponibili in formato PDF - richiedono Adobe Acrobat Reader per essere visualizzate) sono organizzate in capitoli che coincidono con le parti del corso. L'ultima versione delle dispense può essere scaricata qui (dimensione: 1047 kbyte).

Lucidi

Alcune delle lezioni del corso sono state esposte in aula con l'ausilio della proiezione di lucidi, che possono essere scaricati, in formato PDF, cliccando sul titolo della lezione nel calendario.

Simulatore e ambiente di sviluppo MIX

La seconda parte del corso fa riferimento, per illustrare le più importanti tecniche di programmazione elementare, al processore immaginario MIX, inventato da Donald E. Knuth. Gli studenti possono scaricare l'ultima release del software MixIDE, un simulatore completo della macchina MIX appositamente sviluppato per questo corso secondo la filosofia open source, dalla pagina dell'omonimo progetto su SourceForge. MixIDE comprende anche l'assembler per il linguaggio MIXAL e uno help in linea con la spiegazione dettagliata di tutte le istruzioni del linguaggio MIXAL.
Il software, il cui utilizzo verrà spiegato a lezione, funziona su qualsiasi computer dotato di Java. Per eseguirlo, dovrebbe essere sufficiente scompattare il file .zip e fare doppio click sul file MixIDE.jar.
Alcune vecchie versioni di MixIDE, ormai obsolete ma, per un motivo o per l'altro, di interesse "storico", sono:
Per scrivere programmi in MIXAL è possibile utilizzare un qualsiasi editor di testo. Per chi usa Crimson Editor, un editor eccellente (e gratuito) che gira sotto Windows, sono disponibili i file di specifica (mixal.spc) e delle parole chiave (mixal.key) per l'evidenziazione della sintassi dei programmi MIXAL. Fare riferimento alla documentazione dell'editor per ulteriori dettagli sulla configurazione.

Alcuni esempi di programmi in MIXAL possono essere trovati qui.

Informazioni sull'esame

Prossimi appelli

Gli appelli di questo corso disattivato si tengono in contemporanea con gli appelli del nuovo corso di Programmazione, naturalmente mantenendo invariate le modalità d'esame.

Risultati dello scritto del 21 febbraio 2012

Modalità d'esame

L'esame consiste in una prova scritta (in realtà si tratta di un test somministrato con l'ausilio di strumenti informatici) e in un'interrogazione orale a cui si può accedere solo con la sufficienza nella prova scritta, ed è obbligatoria per voti nello scritto compresi tra il 18 e il 22 inclusi, mentre è facoltativa per voti nello scritto superiori al 22. Il voto dell'orale annulla e sostituisce il voto della prova scritta. Di conseguenza, in caso di insufficienza o ritiro, la prova scritta dovrà essere ripetuta.

Il voto dello scritto rimane valido, senza limiti di tempo, finché non è annullato e sostituito dal voto dell'orale o dal voto di un altro scritto sostenuto in data posteriore.

Colloquio integrativo da 2 CFU

Per gli studenti trasferiti da altri corsi di laurea a cui sia stato riconosciuto un esame di Programmazione da 10 CFU, è previsto un colloquio integrativo per l'attribuzione dei 2 CFU mancanti a convalidare l'esame da 12 CFU. Il colloquio verte sui seguenti argomenti (tra parentesi il paragrafo corrispondente nelle dispense del corso):


Ultimo aggiornamento: 22 febbraio 2012