Corsi di Laurea Corsi di Laurea Magistrale Corsi di Laurea Magistrale
a Ciclo Unico
Scuola di Scienze
INFORMATICA
Insegnamento
PROGRAMMAZIONE
SC02121720, A.A. 2018/19

Informazioni valide per gli studenti immatricolati nell'A.A. 2018/19

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea in
INFORMATICA
SC1167, ordinamento 2011/12, A.A. 2018/19
N0
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/2018/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 GILBERTO FILE' INF/01
Altri docenti GABRIELE TOLOMEI INF/01

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/2018
Fine attività didattiche 28/06/2019
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 definiti dall'utente, memoria dinamica, programmi su più file, ed eccezioni.
Modalita' di esame: L'esame consiste di una prova scritta con alcune domande teoriche ed un esercizio di programmazione. La parte di programmazione richiede di sviluppare un programma iterativo ed uno ricorsivo. Si richiede anche di specificare la correttezza delle funzioni prodotte. L'esame si svolge in laboratorio informatico e gli studenti ricevono l'assegnamento e lavorano direttamente sul PC.
L'ammissione agli esami è condizionata dalla consegna di alcuni esercizi assegnati durante il corso.
Criteri di valutazione: L'esame è fatto per mettere in rilievo la capacità di ragionare e di esprimere in forma chiara il proprio ragionamento, da parte dello studente. In particolare, si valuta la capacità di specificare il problema da risolvere e 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 gli studenti sono invitati a risolvere. Gli esercizi sono resi disponibili attraverso unsito 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 fatti. La consegna di soluzioni corrette (rispetto ai test) per alcuni degli esercizi assegnati, è obbligatoria per accedere agli esami. Gli esami si svolgono nel laboratorio informatico e seguono le stesse modalità degli esercizi settimanali.
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 che raccoglie tutto il materiale del corso: le regole del corso, le slide delle lezioni, gli esercizi settimanali che gli studenti possono risolvere e testare interattivamente, e finalmente l'accesso alle registrazioni di tutte le lezioni del corso.
Testi di riferimento:
  • Gilberto Filè, Programmazione consapevole. Padova: Progetto, 2014. Cerca nel catalogo

Didattica innovativa: Strategie di insegnamento e apprendimento previste
  • Lecturing
  • Laboratory
  • Problem based learning
  • Interactive lecturing
  • Working in group
  • Questioning
  • Action learning
  • Problem solving
  • Quiz o test a correzione automatica per feedback periodico o per esami
  • Active quiz per verifiche concettuali e discussioni in classe
  • Videoriprese realizzate dal docente o dagli studenti

Didattica innovativa: Software o applicazioni utilizzati
  • Moodle (files, quiz, workshop, ...)
  • Camtasia (montaggio video)

Obiettivi Agenda 2030 per lo sviluppo sostenibile
Industria, innovazione e infrastrutture