L'insegnamento riprende e approfondisce le tecniche legate alla progettazione, realizzazione e messa in campo di applicazioni in ambiente Internet/Web con particolare attenzione ai sistemi massivi, geograficamente distribuiti, sempre disponibili, incrementalmente scalabili e riconfigurabili dinamicamente. Il corso intende formare le figure professionali di Full Stack Developer e Web Architect, con competenze nella progettazione e nello sviluppo sia del componente front-end che di quello back-end.
The course reconsiders and deepens the design, implementation, and deployment of Internet & Web applications that rely on massive, geographically distributed, always on, incrementally scalable, and dynamically reconfigurable systems. The course aims at forming the professional profiles of Full Stack Developer and Web Architect, with abilities in the design and development of both front-end and back-end components.
Frequentando questo insegnamento, lo studente acquisirà:
- la padronanza di uso di pattern di elaborazione concorrente e distribuita,
- la conoscenza e dei principali framework per lo sviluppo di applicazioni web avanzate sia lato server sia lato client,
- la capacità di progettare sistemi su larga scala basandosi su componenti esistenti,
- l'abilità nel gestire la raccolta, l’elaborazione e la distribuzione di informazioni in tempo reale.
By attending this course, the student will acquire
- the capacity to master concurrent and distributed patterns;
- the knowledge of the most relevant server-side and client-side frameworks for the design and development of rich internet applications;
- the ability to design large scale systems based on existing components;
- the skills to manage real-time information collection, processing, and provision.
Conoscenza del linguaggio Java e relative abilità di programmazione.
Conoscenza delle problematiche introdotte dalla programmazione.
Capacità di realizzare meccanismi di sincronizzazione corretti nell’ambito di un singolo processo.
Conoscenza dei principali protocolli di livello applicativo per la rete internet, con particolare riferimento a HTTP.
Conoscenze di base sulle applicazioni distribuite e delle architetture basate sul paradigma REST. Conoscenza del modello entità/relazioni e del concetto di transazione nell’ambito di una base dati.
Capacità di progettare/interrogare/aggiornare una base dati relazionale usando il linguaggio SQL.
Knowledge of the Java programming language and mastering of corresponding programming abilities.
Knowledge of the issues related to concurrent programming and of the main synchronization techniques.
Ability to design and implement correct synchronization techniques inside a single process.
Knowledge of the main application-level protocols, with particular emphasis on HTTP.
Basic knowledge of distributed applications and of architectures based on the REST paradigm.
Knowledge of the entity/relationship model and of the concept of transaction in a database.
Ability to design/query/update a relational database using the SQL language.
• Caratteristiche avanzate del linguaggio Java e pattern di programmazione concorrente (6h)
• Framework di programmazione lato server (18h)
• Persistenza dei dati, ORM e accesso a basi dati non relazionali (12h)
• Framework di programmazione lato client e architetture Single Page (18h)
• Applicazioni web in tempo reale (6h)
• Advanced features of the Java programming language and concurrent patterns (6h)
• Server-side programming framework (18h)
• Data persistence, ORM e access to non-relational databases (12h)
• Client-side programming frameworks and single-page architectures (18h)
• Real-time web applications (6h)
Oltre alle lezioni, il corso include 20 ore di laboratorio di programmazione sulla applicazione delle tecniche illustrate nel corso e la realizzazione a gruppi di un progetto di media complessità.
This course will include weekly lab sessions and the development of medium complexity project.
Materiale e dispense forniti dal docente durante il corso e disponibile sul portale della didattica.
Josh Long, Kenny Bastani, "Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry", O'Reilly, 2017
Shyam Seshadri, "Angular Up and Running: Learning Angular, Step by Step", O'Reilly, 2018
Jim R. Wilson, "Node.js 8 the Right Way: Practical, Server-Side JavaScript That Scales", The Pragmatic Programmers, 2018
Hand-outs and other material will be provided by the teacher during the course.
Josh Long, Kenny Bastani, "Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry", O'Reilly, 2017
Shyam Seshadri, "Angular Up and Running: Learning Angular, Step by Step", O'Reilly, 2018
Jim R. Wilson, "Node.js 8 the Right Way: Practical, Server-Side JavaScript That Scales", The Pragmatic Programmers, 2018
Modalità di esame: Prova scritta (in aula); Prova pratica di laboratorio; Progetto di gruppo;
Exam: Written test; Practical lab skills test; Group project;
...
L'esame prevede:
- una prova scritta, della durata di circa 1,5 ore, senza accesso al materiale didattico, la cui valutazione incide per il 55% sul voto finale e volta a comprendere la padronanza degli argomenti teorici esposti a lezione;
- la valutazione delle esercitazioni svolte in laboratorio (15% del voto) e consegnate entro le scadenze in itinere;
- la realizzazione del progetto assegnato (30% del voto), il cui scopo è acquisire le necessarie competenze operative per realizzare applicazioni estrapolate da esigenze reali.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Written test; Practical lab skills test; Group project;
The final assessment consists of:
- a written exam of 1,5 hours, consisting of open questions, that contributes to 55% of the final grade, and aims at evaluating the actual level of knowledge of the contents presented during the lectures,
- the ongoing evaluation of the labs (15%)
- the design and implementation of a course project (30%), proving the acquisition of the practical skills and know-how required to implement applications suitable for real-world use cases.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.