Guida degli insegnamenti

Syllabus

Partially translatedTradotto parzialmente
[W001260] - PROGRAMMAZIONE AVANZATAADVANCED PROGRAMMING
FRANCESCO SPEGNI
Lingua di erogazione: ITALIANOLessons taught in: ITALIAN
Laurea Magistrale - [IM12] INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE Master Degree (2 years) - [IM12] COMPUTER AND AUTOMATION ENGINEERING
Dipartimento: [040040] Dipartimento Ingegneria dell'InformazioneDepartment: [040040] Dipartimento Ingegneria dell'Informazione
Anno di corsoDegree programme year : 1 - Primo Semestre
Anno offertaAcademic year: 2020-2021
Anno regolamentoAnno regolamento: 2020-2021
Crediti: 9
Ore di lezioneTeaching hours: 72
TipologiaType: B - Caratterizzante
Settore disciplinareAcademic discipline: ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

LINGUA INSEGNAMENTO LANGUAGE

ITALIANO

Italian


PREREQUISITI PREREQUISITES

Lo studente dovrebbe avere familiarita` con almeno un linguaggio di programmazione, preferibilmente orientato agli oggetti ed una IDE di sviluppo

The student should be familiar with at least one programming language, preferably an object-oriented one, and an IDE for writing code


MODALITÀ DI SVOLGIMENTO DEL CORSO DEVELOPMENT OF THE COURSE

- Lezioni di teoria: 50 ore
- Esercitazioni: 22 ore

- Theory: 50 hours
- Exercises: 22 hours


RISULTATI DI APPRENDIMENTO ATTESI LEARNING OUTCOMES
Conoscenze e comprensione.

L’insegnamento vuole far conoscere allo studente tecniche avanzate per la realizzazione di progetti software complessi. Tra le problematiche affrontate vi saranno: (i) comprensione ed implementazione di design pattern avanzati (es. Model-View-Control, Publish/Subscribe, Visitor, ...); (ii) utilizzo di framework di sviluppo basati su MVC e persistenza degli oggetti (es. Spring, Hibernate, ...); (iii) applicazione di tecniche di validazione e testing automatico del software (es. unit testing, test di integrazione, system testing, ecc); (iv) progettazione e implementazione di pipeline automatizzate di continuous-integration/continuous-delivery (es. Maven, Jenkins, ...); (v) utilizzo di strumenti di sviluppo collaborativo (es. git). Il corso terminerà presentando le architetture a microservizi, un paradigma sempre più richiesto dalle aziende di sviluppo software.


Capacità di applicare conoscenze e comprensione.

Lo studente sarà in grado di lavorare in team con altri colleghi al fine di progettare e implementare un’applicazione Web caratterizzata da una complessità medio-alta. Per realizzare tale applicazione, il team
utilizzerà il framework MVC e il framework ORM introdotti durante il corso. Il team procederà con la definizione di suite di validazione dell’applicazione precedentemente realizzata, e configurerà una pipeline di continuous integration/continous-delivery che ad ogni aggiornamento del software richiamerà i passaggi di compilazione, collaudo e delivery del codice, applicando le tecniche illustrate durante il corso.


Competenze trasversali.

Il corso è fortemente basato sulla progettazione condivisa, brainstorming e suddivisione dei compiti. Questo favorisce lo sviluppo di varie competenze trasversali, quali la capacità di lavorare in gruppo, la gestione dei conflitti, la comunicazione efficace, la capacità di ascolto e di sintesi di idee differenti. A ciascun gruppo sarà richiesto di individuare autonomamente un contesto applicativo reale su cui basare la realizzazione dell’applicazione Web. Questo, assieme alla presenza delle sessioni di brainstorming, favorirà, la capacità, da parte degli studenti, di confrontarsi con scenari reali e molto stimolanti, consentendo di sperimentare in anticipo un modus operandi tipico del mondo del lavoro.


Knowledge and Understanding.

First of all, this course aims at allowing students to learn the techniques for the realization of real-world complex software projects. The course will cover the following topics: (i) understanding and implementation of advanced design patterns (e.g. Model-View-Control, Publish/Subscribe, Visitor, ...); (ii) use of frameworks based on MVC and object persistence (e.g. Spring, Hibernate, ...); (iii) application
of techniques for software development and automated software testing (e.g. unit, integration, and system testing); (iv) design and implementation of continuous-integration/continuous-delivery automated pipelines (e.g. Maven, Jenkins, ...); (v) use of tools for collaborative software development (e.g. git). The course will also present microservice architectures, an emerging paradigm more and more used by software industries.


Capacity to apply Knowledge and Understanding.

The students will experience team-working with their colleagues in order to design and implement a Web application characterized by a medium-high complexity. To realize this application, the team will use the MVC based framework and the ORM-based framework introduced along the course. The team will then proceed with the design and implementation of a test suite for the Web application previously realized. Finally, a
continuous-integration/continuous-delivery pipeline will be designed and implemented, for automatically building, testing and delivery the application at every version bump.


Transversal Skills.

This course is strongly based on group projects, brainstorming and distribution of tasks. This promotes the development of various transversal skills, such as the ability to work in a team, conflict management, effective communication, the ability to listen to and synthesize different ideas. Every group will be asked to autonomously identifying a real application context motivating the development of their Web application. This, together with the presence of brainstorming sessions, will promote the students’ ability to deal with real-world and challenging scenarios, allowing them to experience in advance a modus operandi typical of the software industry.



PROGRAMMA PROGRAM

- Sviluppo collaborativo (T)
+ GIT (E)
- Design pattern avanzati (T + E)
+ Visitor, MVC, Observer
- JEE
+ Specifiche enterprise (T)
+ Enterprise Java Beans (?), Java Persistence API (?)
+ Specifiche web (T)
+ Servlets (?), Java Server Faces (?)
+ Specifiche web service (T)
+ Java API for JSON (?) and RESTful WS (?)
+ Referencing runtimes (ex Application servers)/Glassfish (o JBoss?) (E)
+ Hibernate (E)
+ Spring (E)
- Build-automation (T)
+ Maven (E)
- Validazione
+ Unit testing (T)
+ JUnit (E)
+ Test di sistema e integrazione (T)
- CI/CD (T)
+ Jenkins (E)
- Architetture a microservizi/Spring boot (T)

- Collaborative development (T)
+ GIT (E)
- Advanced design patterns (T + E)
+ Visitor, MVC, Observer
- JEE
+ Enterprise Specification (T)
+ Enterprise Java Beans (?), Java Persistence API (?)
+ Web Specifications (T)
+ Servlets (?), Java Server Faces (?)
+ Web Service Specifications (T)
+ Java API for JSON (?) and RESTful WS (?)
+ Referencing runtimes (ex Application servers)/Glassfish (E)
+ Hibernate (E)
+ Spring (E)
- Build-automation (T)
+ Maven (E)
- Validation
+ Unit testing (T)
+ JUnit (E)
+ System and Integration Testing (T)
- CI/CD (T)
+ Jenkins (E)
- Microservice Architectures/Spring boot (T)


MODALITÀ DI SVOLGIMENTO DELL'ESAME DEVELOPMENT OF THE EXAMINATION
Modalità di valutazione dell'apprendimento.

Il livello di apprendimento degli studenti verra` valutato mediante due prove, da sostenere all'interno dello stesso anno accademico:
- un progetto da svolgere in gruppo
- una prova orale individuale


Criteri di valutazione dell'apprendimento.

Lo studente deve mostrare, attraverso la prova orale, di comprendere i principi di progettazione, implementazione e validazione di un software complesso. Attraverso il lavoro di gruppo deve invece dimostrare di (i) saper adattare tali principi al caso di studio e al gruppo di lavoro con cui collabora, e (ii) saperli mettere in pratica per realizzare un prodotto funzionante.


Criteri di misurazione dell'apprendimento.

Viene attribuito un voto in trentesimi, con eventuale lode.
Il voto minimo per il superamento dell’esame è 18/30.


Criteri di attribuzione del voto finale.

Perché l'esito complessivo della valutazione sia positivo, lo studente deve conseguire almeno 18/30 sia nel progetto sia in quella orale. Il voto complessivo è dato dalla media dei voti ottenuti nelle due prove


Learning Evaluation Methods.

The proficiency level of the students will be assessed by means of two assignments, to be completed within the same academic year:
- a group project
- an oral examination


Learning Evaluation Criteria.

The student should prove, through the oral examiation, that he/she understands the principles of designing, implementing, and validating a complex software system. Through the group work the student should prove that (i) he/she can adapt such principles to the case study and to his/her working team, and (ii) he/she can apply them in order to produce a working software.


Learning Measurement Criteria.

The grades are given in thirtieths. The minimum grade for passing the exam is 18/30.


Final Mark Allocation Criteria.

In order to pass the exam, the student must obtain at least 18/30 both in the group project and in the oral examination. The final grade will be the average of the grades obtained in the project and in the oral examination.



TESTI CONSIGLIATI RECOMMENDED READING

Materiale didattico disponibile sul sito https://learn.univpm.it/

"Java Persistence with Hibernate", C. Bauer, G. Kin, Ed. Manning

"Spring in Action", C. Walls, Ed. Manning

Slide and other supporting material at https://learn.univpm.it/

"Java Persistence with Hibernate", C. Bauer, G. Kin, Ed. Manning

"Spring in Action", C. Walls, Ed. Manning


E-LEARNING E-LEARNING

NO

NO


Scheda insegnamento erogato nell’A.A. 2020-2021
Le informazioni contenute nella presente scheda assumono carattere definitivo solo a partire dall'A.A. di effettiva erogazione dell'insegnamento.
Academic year 2020-2021

 


Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427