View syllabus
PROGRAMMING LABORATORY
ALESSIO VECCHIO
Academic year2019/20
CourseCOMPUTER ENGINEERING
Code759II
Credits6
PeriodSemester 1
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
PROGRAMMAZIONE AVANZATAING-INF/05LEZIONI60
MARIO GIOVANNI COSIMO ANTONIO CIMINO unimap
ALESSIO VECCHIO unimap
Obiettivi di apprendimento
Conoscenze

Il corso si propone di fornire conoscenze e competenze nell’ambito della programmazione a oggetti, con particolare riferimento a sistemi concorrenti e distribuiti. I problemi fondamentali derivanti da una esecuzione parallela vengono affrontati in modo pratico usando il linguaggio Java. I principali aspetti progettuali e realizzativi legati ad applicazioni software composte da più sottosistemi vengono sperimentati attraverso la realizzazione di un progetto didattico usando il linguaggio Java.

Modalità di verifica delle conoscenze

La verifica delle conoscenze sarà condotta mediante valutazione dell'elaborato scritto, discussione del progetto e orale.

Capacità

Al termine del corso lo studente sarà in grado di progettare e realizzare applicazioni concorrenti e distribuite usando il linguaggio Java. Sarà inoltre in grado di usare un ambiente di sviluppo integrato e di realizzare semplici interfacce grafiche.

Modalità di verifica delle capacità

La capacità di realizzare algoritmi concorrenti e distribuiti verrà verificata mediante una prova scritta. La capacità di progettare e realizzare un'intera applicazione verrà verificata attraverso la realizzazione di un progetto individuale. Le altre capacità verranno verificate mediante prova orale.

Comportamenti

Lo studente sarà in grado di gestire tutte le fasi relative allo sviluppo di un'applicazione concorrente/distribuita.

Modalità di verifica dei comportamenti

La capacità di gestire tutte le fasi relative allo sviluppo di un'applicazione concorrente/distribuita verranno verificate attraverso un registro compilato dallo studente e mediante discussione del progetto.

Prerequisiti (conoscenze iniziali)

Un linguaggio di programmazione basato sul C.

Indicazioni metodologiche

Lezioni forntali e attività di laboratorio.

Progetto individuale.

Programma (contenuti dell'insegnamento)

Il linguagggio Java. Caratteristiche fondamentali del linguaggio. Classi, oggetti e riferimenti. Overloading di costruttori e metodi. Campi e metodi statici. Package. Modificatori di accesso. File sorgenti, binari e classpath. Gestione della memoria. Array e stringhe. Ereditarietà e polimorfismo. Classi astratte. Classi final. La classe Object. Le interfacce. Eccezioni. I thread. 

Programmazione concorrente. Introduzione alla programmazione concorrente in Java. Cooperazione e interferenza tra thread. Sincronizzazione e mutua esclusione in Java. Problemi classici: produttori e consumatori; gestore di risorse equivalenti.

Java e l'Input/Output. La serializzazione degli oggetti. I flussi di ingresso e uscita. L’interfacciamento con il file system. La programmazione di rete. Interfacciamento con le basi di dati. L’interfaccia grafica utente. L’input-output multimediale. L’interfacciamento tramite XML.

La realizzazione di applicazioni. Applicazioni Desktop. Introduzione alle architetture multi-livello. Strumenti e metodi per consultare le Java API, per documentare, rilevare errori e collaudare il software. Realizzazione di un progetto didattico.

Bibliografia e materiale didattico
Modalità d'esame

Prova scritta (al calcolatore, tramite Netbeans, Notepad++ o riga di comando, in ambiente Windows, con possibilità di consultare le Java API). Prova orale (comprensiva della discussione del progetto). Per poter svolgere la prova orale è necessario ottenere almeno 15 alla prova scritta. Il voto della prova scritta viene mantenuto per tre appelli (incluso quello in cui la prova scritta è stata consegnata). Il numero di consegne della prova scritta è limitato a quattro per anno. Al termine della prova scritta viene mostrata una possibile soluzione, dopo aver visto la quale lo studente può scegliere di ritirarsi senza che risulti una consegna. La correzione della prova scritta può essere illustrata allo studente nei giorni previsti per le prove orali.

 

Modalità temporanee d’esame a seguito dell’emergenza COVID-19:

  • Gli esami si svolgeranno in accordo alle linee guida del nostro ateneo, disponibili qui: https://www.unipi.it/index.php/news/item/17708-didattica-a-distanza-istruzioni-operative-per-docenti-e-studenti   Lo studente è invitato a prendere visione di tali linee guida prima di sostenere l’esame.
  • La prova d’esame è solo orale e viene tenuta in modalità telematica usando la piattaforma Microsoft Teams. Lo studente deve collegarsi al canale “Generale” del team associato all’insegnamento all’orario previsto.
  • L’esame verte sugli argomenti sia pratici che teorici visti durante il corso. In particolare, durante l’esame, saranno proposti allo studente degli esercizi simili a quelli tipicamente assegnati per la prova pratica quando l’esame si teneva nella forma convenzionale. Oltre agli esercizi l’esame includerà domande di carattere teorico e la discussione del progetto.
  • Il materiale didattico utile a prepararsi alla prova è il medesimo della modalità tradizionale.
  • La durata dell’esame può essere stimata in circa 1,5 ore.
  • È vietato l’uso di auricolari e di materiale didattico (libri, appunti, registrazioni).
  • All’inizio dell’esame lo studente è contattato singolarmente per l’identificazione visiva tramite libretto.
  • Durante il proprio esame lo studente terrà attivati sia lo schermo condiviso che la videocamera. In questo modo potrà contemporaneamente parlare al docente e scrivere al calcolatore.
  • Strumenti consigliati per lo svolgimento dell’esame: personal computer con webcam, microfono, altoparlanti, Teams, pacchetto all-in-one. Nel caso in cui lo studente fosse privo di uno di tali strumenti è pregato di contattare il docente in anticipo, in modo da trovare forme alternative.
Altri riferimenti web

http://vecchio.iet.unipi.it/programmazione/

Additional web pages

http://vecchio.iet.unipi.it/programmazione/

Updated: 05/06/2020 16:25