| TECNICHE AVANZATE DI PROGRAMMAZIONE

TECNICHE AVANZATE DI PROGRAMMAZIONE
SCUOLA di INGEGNERIA
Laurea Magistrale
INGEGNERIA INFORMATICA E DELLE TECNOLOGIE DELL'INFORMAZIONE
6
 CFUOreCicloDocente
1TECNICHE AVANZATE DI PROGRAMMAZIONE
6 48 Annuale SUMMA GIANVITO 
 
Lingua insegnamento
 

Italiano

Obiettivi formativi e risultati di apprendimento
 

Il corso riguarda le tecniche di programmazione avanzata in linguaggio ad oggetti (Java). Lo scopo del corso è fornire allo studente competenze per la progettazione e costruzione di sistemi applicativi di complessità medio-alta.

Alla fine del corso, il discente dovrà dimostrare di aver acquisito le seguenti capacità:

  • Analisi e progettazione di sistemi applicativi complessi;
  • Applicazione delle tecniche avanzate di programmazione. 

Le tematiche principali che il discente dovrà acquisire e padroneggiare includono:

  • Design Pattern;
  • Inversione del Controllo;
  • Thread e programmazione concorrente;
  • Metodologie di sviluppo agili e AUP;
  • Strumenti di sviluppo collaborativi;

Con specifico riferimento agli obiettivi indicati dai descrittori di Dublino relativamente alla:

  • Conoscenza e capacità di comprensione:
    • lo studente deve dimostrare di analizzare un problema di complessità medio-alta scomponendolo in sotto problemi di dimensione ridotta al fine di individuare e riconoscere l’applicabilità di pattern progettuali e tecniche di programmazione;
  • Capacità di applicare conoscenza e comprensione:
    • Lo studente deve dimostrare di essere in grado di progettare e realizzare un’applicazione che risolva un problema di complessità medio-alta;
  • Autonomia di giudizio:
    • Lo studente deve essere in grado di saper valutare in maniera autonoma e critica i possibili scenari implementativi relativamente ad un problema di complessità medio-alta, riuscendo a determinare costi e benefici per ciascuno di essi ed adottando quello in grado di conferire al sistema le caratteristiche di efficienza, efficacia, facilità di manutenzione e scalabilità;
  • Abilità comunicative:
    • Lo studente deve avere la capacita` di spiegare come intende realizzare il sistema facendo uso delle capacita` di presentare un progetto utilizzando correttamente il linguaggio scientifico-tecnico;
  • Capacita` di apprendimento:
    • Lo studente deve essere in grado di aggiornarsi di continuo attraverso la consultazione di testi, riviste, siti web e pubblicazioni di livello avanzato nell’ambito della programmazione ad oggetti, allo scopo di acquisire capacità e skill da impiegare nella definizione di soluzioni sempre più efficaci ed efficienti.
Prerequisiti
 

E' necessario avere acquisito ed assimilato le seguenti conoscenze fornite dal corso di “Programmazione a Oggetti II”:

Ereditarietà e polimorfismo.

Contenuti del corso
 

Design Pattern:

Inversione del Controllo:

Processo di sviluppo:

Threading e sincronizzazione;

Strumenti di sviluppo collaborativi

Programma esteso
 

Sono di seguito elencati gli argomenti del corso con le relative unità didattiche.

Design Pattern:

  • Introduzione; Storia; Pattern e Framework; Pattern nelle API di Java; Dati e operazioni: Conclusioni.

Inversione del Controllo:

  • Introduzione; Dependency Injectio; Aspetti metodologici; AOP; Conclusioni.

Processo di sviluppo:

  • Introduzione; RUP; XP; AUP.

Threading e sincronizzazione;

Strumenti di sviluppo collaborativi.

Metodi didattici
 

Il corso prevede 48 ore di didattica frontale in aula. Non è previsto laboratorio.

Modalità di verifica dell'apprendimento
 

L’obiettivo della prova d’esame consiste nel verificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati.

L’esame è diviso in 3 parti che hanno luogo in diversi giorni, nell’ordine:

  • una prova scritta sugli argomenti trattati nell’ambito del corso (progettazione e tecniche). La prova ha lo scopo di valutare lo studio della materia e la comprensione degli argomenti di base e ha carattere di selezione (lo studente che non mostri una sufficiente conoscenza degli argomenti non è ammesso alle prove successive); per superare la prova è necessario acquisire almeno 18 punti su 30. Non è consentito consultare testi o utilizzare PC, smartphone, calcolatrici ed altri dispositivi tecnologici;
  • una prova pratica al calcolatore, con l’obiettivo di valutare se lo studente ha la capacità di analisi e progettazione necessarie allo sviluppo di un sistema a complessità medio-alta. Per superare la prova è necessario acquisire almeno 18 punti su 30; Il tempo previsto per la prova è di 5 ore; è possibile consultare la documentazione di Java ed il materiale del corso (tutto il materiale è a disposizione sui PC del laboratorio). La prova pratica è strutturata in due esercizi: il primo che richiede capacità di analisi e progettazione ed il secondo che richiede capacità applicative;
  • una prova orale nella quale sarà valutata la capacità di collegare e confrontare aspetti diversi trattati durante il corso; per superare la prova è necessario acquisire almeno 18 punti su 30.

Lo studente che sostiene e supera con almeno la sufficienza (18/30) le due prove intermedie previste ha diritto ad un bonus di 2 punti sulla prova pratica finale ed è esonerato dalla prova scritta purché sfrutti il bonus sostenendo la prova pratica e la prova orale entro il III Appello (Settembre). Le prove intermedie consistono in questionari a risposta multipla ed in esercizi di analisi, progettazione e sviluppo.

Testi di riferimento e di approfondimento, materiale didattico Online
 

Appunti forniti dal docente disponibili sul sito del Corso di Laurea, http://informatica.unibas.it/moodle/

(al link “Tecniche Avanzate di Programmazione”).

Testi di riferimento:

  • Cooper -- The Design Patterns Java Companion;
  • Eckel -- Thinking in Patterns;
  • Martin Fowler -- Refactoring -- Improving the Design of Existing Code -- 1999 – Addison-Wesley

Per ulteriori dettagli consultare la sezione dedicata ai "Riferimenti Utili" riportata per i vari Argomenti del corso, sul portale della formazione Moodle sopra indicato.

Metodi e modalità di gestione dei rapporti con gli studenti
 

All’inizio del corso, dopo aver descritto obiettivi, programma e metodi di verifica, il docente mette a disposizione degli studenti il materiale didattico mediante il portale della formazione Moodle del Corso di Laurea (cfr. Sito Web), previa iscrizione al medesimo corso.

Orario di ricevimento: lmercoledì dalle 18 alle 19 presso l’aula studio “Docenti a contratto” del DiMIE (III piano). Oltre all’orario di ricevimento settimanale, il docente e` disponibile in ogni momento per un contatto con gli studenti, attraverso la propria e-mail.



Date di esame previste
 

Prova intermedia: 21 febbraio 2022


Appelli:

I: 11 luglio 2022

II: 25 luglio 2022

III: 19  settembre 2022

IV: 19 dicembre 2022

V: 20 febbraio 2023

VI: 15 maggio 2023

Seminari di esperti esterni
 

Non sono previsti seminari di esperti esterni

 
Fonte dati UGOV