Corsi di Laurea Corsi di Laurea Magistrale Corsi di Laurea Magistrale
a Ciclo Unico
Scuola di Scienze
INFORMATICA
Insegnamento
PROGRAMMAZIONE (Iniziali cognome M-Z)
SC02121720, A.A. 2015/16

Informazioni valide per gli studenti immatricolati nell'A.A. 2015/16

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea in
INFORMATICA
SC1167, ordinamento 2011/12, A.A. 2015/16
A1302
porta questa
pagina con te
Crediti formativi 10.0
Tipo di valutazione Voto
Denominazione inglese PROGRAMMING
Sito della struttura didattica http://informatica.scienze.unipd.it/2015/laurea
Dipartimento di riferimento Dipartimento di Matematica
Obbligo di frequenza No
Lingua di erogazione ITALIANO
Sede PADOVA
Corso singolo È possibile iscriversi all'insegnamento come corso singolo
Corso a libera scelta È possibile utilizzare l'insegnamento come corso a libera scelta

Docenti
Responsabile ROBERTO DI PIETRO

Dettaglio crediti formativi
Tipologia Ambito Disciplinare Settore Scientifico-Disciplinare Crediti
BASE Formazione informatica di base INF/01 10.0

Organizzazione dell'insegnamento
Periodo di erogazione Annuale
Anno di corso I Anno
Modalità di erogazione frontale

Tipo ore Crediti Ore di
didattica
assistita
Ore Studio
Individuale
LABORATORIO 3.0 24 51.0
LEZIONE 7.0 56 119.0

Calendario
Inizio attività didattiche 01/10/2015
Fine attività didattiche 15/06/2016
Visualizza il calendario delle lezioni Lezioni 2019/20 Ord.2011

Commissioni d'esame
Commissione Dal Al Membri
10 a.a 2018/2019 01/10/2018 28/02/2020 FILE' GILBERTO (Presidente)
TOLOMEI GABRIELE (Membro Effettivo)
AIOLLI FABIO (Supplente)
BRESOLIN DAVIDE (Supplente)
CRAFA SILVIA (Supplente)
RANZATO FRANCESCO (Supplente)
9 a.a. 2017/2018 - canale 1 01/10/2017 28/02/2019 FILE' GILBERTO (Presidente)
AIOLLI FABIO (Membro Effettivo)
BRESOLIN DAVIDE (Membro Effettivo)
CRAFA SILVIA (Membro Effettivo)
RANZATO FRANCESCO (Membro Effettivo)
TOLOMEI GABRIELE (Membro Effettivo)

Syllabus
Prerequisiti: Qualche conoscenza di architettura degli elaboratori.
Conoscenze e abilita' da acquisire: Specificare un problema attraverso la formulazione di una pre- ed una post-condizione cui il programma che vogliamo costruire per risolvere il problema deve obbedire. La capacità di costruire un programma in C++ e dimostrare che fa quanto specificato nella sua pre- e post-condizione. Capacità di trovare anche soluzioni ricorsive ai problemi e di dimostrare la loro correttezza grazie ad una prova induttiva. Conoscenza delle nozioni di base della programmazione imperativa: comandi semplici, puntatori, array, funzioni, passaggio dei parametri per valore e riferimento, tipi ad-hoc, eccezioni.
Modalita' di esame: L'esame consiste di una prova scritta con domande teoriche ed una parte di programmazione. La parte di programmazione richiede di sviluppare un programma iterativo ed uno ricorsivo. Si richiede anche qualche passaggio relativo alla correttezza dei programmi prodotti. L'esame si svolge in laboratorio informatico e gli studenti ricevono l'assegnamento e lavorano direttamente sul PC. Un esame orale può venire richiesto in casi particolari.
Criteri di valutazione: L'esame è fatto per mettere in rilievo la capacità di ragionare dello studente e di esprimere in forma chiara il proprio ragionamento. In particolare si valuta la capacità di specificare il problema da risolvere e di realizzare un programma semplice per risolvere il problema specificato. Viene valutata anche la capacità di spiegare i motivi per cui la soluzione proposta effettivamente risolve il problema considerato. Sono apprezzate semplicità e chiarezza.
Contenuti: I contenuti del corso si pongono su due piani diversi:
1) Da una parte vengono insegnati alcuni concetti della correttezza dei programmi alla Hoare, cioè basati sulle nozioni di pre-, post-condizione ed invarianti dei cicli. Ogni programma è accompagnato da una pre- e post-condizione e la sua correttezza rispetto ad esse va dimostrata in modo convincente.
2) Contemporaneamente alla parte (1), vengono insegnate le nozioni di base della programmazione imperativa con C++. In particolare, tipi predefiniti, istruzioni semplici, puntatori, array, aritmetica dei puntatori, funzioni, funzioni ricorsive, memoria dinamica, liste concatenate ed alberi binari.
Attivita' di apprendimento previste e metodologie di insegnamento: Si segue l'approccio secondo cui per imparare a programmare in modo consapevole, è necessario fare molti esercizi ricevendo feedback sulle soluzioni proposte. Quindi ogni settimana vengono assegnati esercizi che vanno risolti. Gli esercizi sono resi disponibili attraverso un servizio web basato su moodle sul quale gli studenti consegnano e testano le loro soluzioni rispetto ad alcuni input predisposti. In ogni momento ogni studente ha modo di verificare il suo progresso rispetto agli esercizi assegnati. La consegna di soluzioni corrette (rispetto ai test) per tutti gli esercizi è obbligatoria per accedere agli esami. Gli esami si svolgono nel laboratorio informatico ed usano lo stesso servizio web usato per gli esercizi.
Il corso consiste di 80 ore totali di cui 24 in laboratorio informatico. Il corso verrà diviso in due parti: la prima parte di 2 crediti nel primo semestre, mentre il resto di 8 crediti si svolgerà nel secondo semestre. La prima parte ha lo scopo di rendere tutti gli studenti capaci di usare un PC per scrivere ed eseguire programmi e anche di presentare le prime nozioni di correttezza dei programmi.
Eventuali indicazioni sui materiali di studio: Il corso usa un sito moodle di elearning che raccoglie tutto il materiale per il corso: le slide delle lezioni, esami passati con e senza soluzioni, e gli esercizi settimanali con il risultato ottenuto.
Testi di riferimento:
  • Gilberto Filè, Programmazione consapevole. Padova: Progetto, 2014. Cerca nel catalogo