Corso di Metodologie di Programmazione (Canale A-L)
Anno Accademico 2019/2020
Docente:
Pietro Cenciarelli
Laboratorio:
Gioele Zacchia e
Antonio Carotenuto
Ultima modifica:15 aprile 2020
Introduzione
Il corso di Metodologie di Programmazione introduce concetti fondamentali della programmazione
orientata agli oggetti: classi e oggetti, incapsulamento, ereditarietà, polimorfismo, binding statico
e dinamico. Vengono presentati gli strumenti e le metodologie di base della progettazione software
usando il linguaggio Java.
Questo corso si avvale di uno strumento di e-learning su piattaforma Moodle, che mette a disposizione degli studenti un forum, un sistema per la consegna e la valutazione degli homework e molto altro. Trovate qui le istruzioni per registrarvi.
Programma del corso
-
Introduzione al paradigma di programmazione object oriented. Il linguaggio Java.
-
Algebra e tipi di dato astratto. Classi e oggetti. L'incapsulamento.
-
Il polimorfismo (parte prima): Estensione di una classe ed ereditarietà. Classi astratte e interfacce.
-
Package. Modificatori di accesso e regole di visibilità.
-
Classi annidate. Classi anonime. Espressioni Lambda.
-
Il polimorfismo (parte seconda): Tipi generici. Gerarchia
-
Thread e sincronizzazione di processi. Deadlock e starvation.
-
Design pattern: creational, structural, behavioral, concurrency.
(elenco dettagliato degli argomenti suddivisi per lezione --> Lezioni)
Materiale e testi di consultazione
Altri testi
Dispense del corso del Prof. Silvestri
Letture consigliate
-
Selected
Writings on Computing: a Personal Perspective
E.W. Dijkstra, 1982.
-
Can Programming Be Liberated from the von
Neumann Style? A Functional Style and Its Algebra of Programs
John Backus, 1978
Un grande classico che ha riacceso l'interesse per il lambda
calcolo come fondamento della programmazione, in alternativa
all'imperante modello imperativo.
Ravvedutosi sulla via del Turing Award, il progettista del FORTRAN, nella
dissertazione in occasione del ricevimento del più prestigioso
riconoscimento scientifico in informatica, ripropone i linguaggi
funzionali, ponendo l'accento sulla facilità di analizzare i
programmi funzionali con ragionamenti di tipo algebrico. Un
pò datato e di difficile lettura.
-
To Iterate is Human, to Recurse, Divine
James O. Coplien, 1998
Brevissimo e divertente pamphlet divulgativo che ripropone gli argomenti
delle altre letture. Contiene un'analisi, anche estetica,
dello stile di programmazione funzionale e un confronto con lo stile
imperativo/iterativo.
Orario
-
Lezioni: martedì 8:00 - 11:00 e venerdì 11:00 - 13:00;
Aula 3 Matematica (Guido Castelnuovo), Città Universitaria.
-
Laboratorio: mercoledì 8:00 - 12:00;
Aule Informatiche 15 e 16, Via Tiburtina 205.
-
Ricevimento studenti (Cenciarelli): giovedì 16.00 - 18.00, su appuntamento, Via Salaria, III piano, stanza 310.
Modalità d'esame
L'esame comprende lo sviluppo di un progetto, una prova di laboratorio e una prova orale. Il progetto viene assegnato nel mese di marzo e viene svolto in gruppo. Scoraggiati gruppi atomici (una sola persona) o con più di quattro membri. Il progetto deve essere consegnato entro la data dell'orale (del primo componente del gruppo a sostenerlo). La prova di laboratorio è individuale, si svolge, appunto, in laboratorio e consiste nella soluzione di problemi di programmazione in Java. Essa viene in due versioni: leggera e pesante; la forma leggera è riservata agli studenti che hanno sostenuto la prova intermedia ("esonero"), che si svolge tipicamente in aprile, anch'essa in laboratorio. La prova orale consiste nella discussione del progetto e in domande libere sul programma svolto a lezione.
Lezioni (dettaglio degli argomenti e codice Java)
Eventi telematici
Prove scritte, esoneri, progetti
- Testi di esoneri passati
- Progetti assegnati
- Prove scritte
Laboratorio
- Esercitazioni
- Fogli di esercizi (homework). Consegna dalla pagina di supporto e-learning del corso.
Molto altro sulla piattaforma Moodle del corso (vedi sotto).
Miscellanea
- Registrazione al supporto di e-learning del corso di Metodologie basato su piattaforma Moodle. Per creare un accout dovete impostare una password e fornire un indirizzo di posta elettronica, al quale riceverete un messaggio dal sistema di supporto e-learning Sapienza, contenete un collegamento da clickare per completare la registrazione. A questo punto dovete cercare il corso di Metodologie di Programmazione (selezionando Facoltà e corso) e iscrivervi usando la chiave di iscrizione: metodologie. Se desiderate potete procedere modificando il vostro profilo.
- Pagina web dell'edizione 2015-2016 (Prof. Silvestri)
Avvisi
Sono state specificate sul sito di Sapienza (click!) informazioni riguardo alle modalita' di erogazione dei corsi del secondo semestre della nostra Laurea triennale. Per quanto riguarda Metodologie di Programmazione le lezioni si terranno sulla piattaforma Webex, come già e' avvenuto il 5 marzo scorso. Avvisi e attivita' del corso si svolgeranno sulla piattaforma Moodle (registrati! le modalita' sono descritte nella sezione Miscellanea di questa pagina). Ecco nel dettaglio cosa avverra':
1) le lezioni si svolgeranno telematicamente, in modalita' interattiva (gli studenti possono cioe' intervenire, porre domande ecc. cosi' come avviene in classe), il martedi' dalle 9.00 (NOTA BENE: dalle 9.00, non dalle 8.00!) alle 11.00 e il venerdi' dalle 11.00 alle 13.00. Link e credenziali per accedere all'aula virtuale saranno pubblicate prima dell'inizio della lezione sulla piattaforma Moodle di e-learning del corso, alla pagina ''Eventi telematici''. Alla stessa pagina (ma anche qui) potrete trovare anche le registrazioni delle lezioni passate.
2) L'attivita' di laboratorio avverra' anch'essa in formato virtuale sulla piattaforma Moodle; ogni mercoledi' verra' pubblicato un homework alla pagina ''Homework'', da consegnare entro il mercoledi' successivo sulla piattaforma stessa. Il Prof. sara' presente sul Forum del laboratorio fra le 9.00 e le 10.00 del mercoledi' e rispondera' immediatamente alle vostre domande, mentre fra le 10.00 e le 12.00 a rispondere saranno i tutor. Naturalmente il forum e' attivo sempre, ma fuori dell'orario di laboratorio la risposta potra' non essere immediata.