Web Programming

Course objectives

General goals: The aim of the course is the study of java language support to server side programming, for the realization of web based applications. The course will also provide a critical comparative analysis of several approaches to realize the same functionalities, for a series of problems common in the development of web applications. Specific goals: Server Side programming through Java Servlet and JSP. Knowledge and understanding: Through this course, students will comprehend how the java language supports the realization of web applications. In particular, students will focus on the motivation at the basis of all the implementation choices with reference to the client server –architecture and network protocols in use. Applying knowledge and understanding: Through this course, students will develop the capability to determine among potential solutions which is the most suitable in terms of performance, security, portability and efficiency. Critical and judgmental abilities: The course will provide students with sufficient tools and methodologies to perform a comparative analysis of different potential solution methodologies. Communication skills: Students will be able to motivate the solutions adopted to design a specific web application, and to provide a comparative analysis of the chosen solutions with respect to other potential approaches. Learning ability: Students will develop the capability to autonomously study and search for new solutions and to evaluate new methodologies, technologies and models for the development of Web applications.

Channel 1
MATTIA SAMORY Lecturers' profile

Program - Frequency - Exams

Course program
I. Fundamentals of Web Architecture - Architectures: Concepts of REST, Frontend/Backend, differences with SPA (Single Page Application), PWA (Progressive Web App), and standard applications. - Version Control: Git (commit, branch, merge request, resolving merge conflicts, issues). II. Backend Design and Implementation (REST API) - Protocols and Formats: HTTP, JSON/YAML. - API Design: OpenAPI (Specifications), use of Swagger Editor/Postman for testing. - RESTful API: Principles, correct use of POST/GET/PUT methods, content-type organization, path structuring. III. Backend Development with Go - Go - Basic Constructs: Code organization (packages, library imports), basic language constructs. - Go - Advanced Concepts: Go interfaces, error handling, go packages, go concurrency. IV. Frontend Development with Vue.js - Frontend Fundamentals: HTML + CSS. - JavaScript: Basic language constructs. - Vue.js: Introduction (Anatomy of a Vue.js SPA, templates). - Vue.js: In-depth analysis (Templates, reactivity, Vue.js router). - Asynchronous Communication: JS-async, CORS management, axios library. V. Containerization and Deployment - Containerization: Introduction to Containers, docker-run, image registry, docker-build (Dockerfile). - Deployment and IaaC: Overview of Deployment and Terraform (Infrastructure as a Code - IaaC). - Full Stack Design: Design and integration of the entire application (Example with Cursor).
Prerequisites
Basic computer science knowledge acquired during the first two years of the course. In particular: - at least one programming language - computer networks - databases
Books
Emanuele Panizzi and Enrico Bassetti, Introduction to full stack web development with Go and Vue.js
Frequency
Attendance at the course is not compulsory but is strongly recommended.
Exam mode
The exam consists of completing a project divided into four parts, which will be graded out of 30, and an oral exam. Each part is based on code development. It will be possible to improve the grade received in each part as I will periodically evaluate new submissions. Of course, the grade may also go down, because I cannot take the previous grade into account in a subsequent evaluation. You will only be admitted to the oral exam if you have passed all four parts, and the grade for the oral exam will be given by the average of the evaluations of the four parts. The oral exam will consist of a discussion of the entire project.
Bibliography
- Slides available on the WASA website for each lesson - example code - Documentation for all the topics is available on the web and will be pointed out during the course.
Lesson mode
Lectures and exercises.
MATTIA SAMORY Lecturers' profile

Program - Frequency - Exams

Course program
I. Fundamentals of Web Architecture - Architectures: Concepts of REST, Frontend/Backend, differences with SPA (Single Page Application), PWA (Progressive Web App), and standard applications. - Version Control: Git (commit, branch, merge request, resolving merge conflicts, issues). II. Backend Design and Implementation (REST API) - Protocols and Formats: HTTP, JSON/YAML. - API Design: OpenAPI (Specifications), use of Swagger Editor/Postman for testing. - RESTful API: Principles, correct use of POST/GET/PUT methods, content-type organization, path structuring. III. Backend Development with Go - Go - Basic Constructs: Code organization (packages, library imports), basic language constructs. - Go - Advanced Concepts: Go interfaces, error handling, go packages, go concurrency. IV. Frontend Development with Vue.js - Frontend Fundamentals: HTML + CSS. - JavaScript: Basic language constructs. - Vue.js: Introduction (Anatomy of a Vue.js SPA, templates). - Vue.js: In-depth analysis (Templates, reactivity, Vue.js router). - Asynchronous Communication: JS-async, CORS management, axios library. V. Containerization and Deployment - Containerization: Introduction to Containers, docker-run, image registry, docker-build (Dockerfile). - Deployment and IaaC: Overview of Deployment and Terraform (Infrastructure as a Code - IaaC). - Full Stack Design: Design and integration of the entire application (Example with Cursor).
Prerequisites
Basic computer science knowledge acquired during the first two years of the course. In particular: - at least one programming language - computer networks - databases
Books
Emanuele Panizzi and Enrico Bassetti, Introduction to full stack web development with Go and Vue.js
Frequency
Attendance at the course is not compulsory but is strongly recommended.
Exam mode
The exam consists of completing a project divided into four parts, which will be graded out of 30, and an oral exam. Each part is based on code development. It will be possible to improve the grade received in each part as I will periodically evaluate new submissions. Of course, the grade may also go down, because I cannot take the previous grade into account in a subsequent evaluation. You will only be admitted to the oral exam if you have passed all four parts, and the grade for the oral exam will be given by the average of the evaluations of the four parts. The oral exam will consist of a discussion of the entire project.
Bibliography
- Slides available on the WASA website for each lesson - example code - Documentation for all the topics is available on the web and will be pointed out during the course.
Lesson mode
Lectures and exercises.
  • Lesson code1022267
  • Academic year2025/2026
  • CourseComputer Science
  • CurriculumTecnologico
  • Year3rd year
  • Semester1st semester
  • SSDINF/01
  • CFU6