WEB PROGRAMMING, DESIGN & USABILITY

Academic Year 2023/2024 - Teacher: FEDERICO FAUSTO SANTORO

Expected Learning Outcomes

The examination will focus on three compulsory tests:
Written, Oral and Laboratory.
The laboratory test can be replaced with the presentation by the student of each exercise assigned to him. Failure to submit an activity will cancel all presentations made up to that time and make the laboratory test mandatory again.
Only after passing the two/three compulsory tests will it be possible to be assigned a project to be developed according to the topics addressed during the course and delivered within 30 days of the assignment. The project may be proposed by the student and may coincide with a project on another subject. The project must then be published in a PUBLIC manner on the official repository of the course (https://github.com/UniCT-WebDevelopment).

Course Structure

Lessons will focus on the theoretical explanation and state the art of Fullstack web development. During the various lessons, there will be exercises. The exercises can also be optionally assigned to the students and then presented in the classroom, trying to better cultivate their knowledge together with those of other students.

Required Prerequisites

General Requirements:

Knowledge of the TCP/IP network stack, general knowledge of relational and non-relational databases and object programming.

Propaedeuticity (for L-31):

Computer Networks and Interaction and Multimedia.

Attendance of Lessons

Attendance is recommended, but it’s not mandatory.

Detailed Course Content

The course will focus on the basic knowledge of Full-Stack development, in particular:

Front-End:

Network Application Layer

HTTP Introduction

Client - Server

URLs and Verbs

Status Codes

HTML Introduction

Web Browsers and HTML Documents

Block and inline Elements

Text Elements

Attributes

List and Tables

Forms

CSS Introduction

Simple Selectors

Selector Combinators

Pseudo-classes and elements

Box Model

CSS Style rules

Cols System

Flexbox System

Grid System

Javascript Introduction

Variables

Data Types

Expressions

Statements

Conditionals

Arrays

Functions

Arrow Functions

Scope and Closures

Objects and Notations

Classes

DOM

Events

Asynchronous

Callbacks

Promises

Async/Await

Ajax and Fetch

JQuery Introduction

Selectors

Elements

DOM Traversing

Typescript Introduction

Differences and Story

The compiler

Workflow and Configuration

Objects and Arrays

Explicit and Dynamic Types

Functions and Aliases

DOM and Casting

Classes

Modules

Interfaces

Generics, Enums and Tuples

UI / UX For Developers

Terminology

Wireframe, Mockup and Prototype

Basics: Typography, Colors and Images

User Centered Design (UCD)

User Experience Design

Common use and Dark Patterns

Usability and Accessibility

Introduction to Figma

Figma handoff

Back-End:

Introduction to Back-End Development

HTTP & Client - Server Re-Introduction

Server and Services

SOA and Microservices

Workflow of a Server

Database Types

Back-end Languages

Back-end Technologies

Back-end Systems

SOAP Protocol

REST Architecture

XML and JSON

Security Aspects

Introduction to NodeJS

History of NodeJS

Installation

Difference between Browser and NodeJS

The V8 Engine and other engines

Hello World!

Environment Variables

Application Arguments

Exports

The NPM

The package.json

Dependencies

The NPX runner

The Event Loop

Event Emitter

NodeJS - Development Introduction

Simple HTTP Server and request

Files operations

Buffers

Streams

Error handling

NodeJS - Express Introduction

Hello Express

Route Handlers

Middlewares

Static Files

Error Handling

NodeJS - WebSockets Introduction

HTTP Polling and Streaming

Handshake

Messaging Transmission

Node JS - SocketIO Introduction

Difference between WebSockets and SocketIO

Simple Server Example

Simple Client Example

Events and Rooms

Textbook Information

The texts related to the individual thematic areas will be provided during the course by the professor in the form of handouts

Course Planning

 SubjectsText References
1Network Application Layer
2HTML Introduction
3CSS Introduction
4Javascript Introduction
5JQuery Introduction
6Typescript Introduction
7UI / UX For Developers
8Introduction to Back-End Development
9Introduction to NodeJS
10NodeJS - Development Introduction
11NodeJS - Express Introduction
12NodeJS - WebSockets Introduction
13Node JS - SocketIO Introduction

Learning Assessment

Learning Assessment Procedures

The examination will focus on three compulsory tests:
Written, Oral and Laboratory.
The laboratory test can be replaced with the presentation by the student of each exercise assigned to him. Failure to submit an activity will cancel all presentations made up to that time and make the laboratory test mandatory again.
Only after passing the two/three compulsory tests will it be possible to be assigned a project to be developed according to the topics addressed during the course and delivered within 30 days of the assignment. The project may be proposed by the student and may coincide with a project on another subject. The project must then be published in a PUBLIC manner on the official repository of the course (https://github.com/UniCT-WebDevelopment).

Examples of frequently asked questions and / or exercises

HTTP Protocol, CSS Selectors, Development of Client/Server using Javascript