Web Programming

Professors Vassiliki Koufi
Course category CSM/IS
Course ID DS-535
Credits 5
Lecture hours 3 hours
Lab hours 2 hours
Digital resources View on Aristarchus (Open e-Class)

Learning Outcomes

This course aims to familiarize students with web programming technologies and provide a clear understanding of the design and management challenges inherent in modern web systems and applications. The curriculum covers the design and implementation of RESTful APIs, as well as critical issues such as security, performance, scalability, and extensibility.

Upon successful completion of this course, students will be able to:

  • Design and implement RESTful APIs from the ground up.
  • Apply best practices for API design, versioning, security, and documentation.
  • Develop applications using Java EE and the Spring Framework.
  • Leverage methodologies and best practices for developing multi-threaded applications and managing concurrency (threads, locks, synchronization).
  • Integrate authentication and authorization techniques (including IAM) to secure web services.

General Competences

  • Search for, analysis and synthesis of data and information by the use of appropriate technologies
  • Development of free, creative and inductive thinking
  • Decision-making
  • Individual/Independent work
  • Group/ Team work

Course Contents

  • Introduction to RESTful APIs (RESTful architecture, REST constraints, HTTP methods, and status codes)
  • Design of RESTful APIs (best practices in API design, resource identification and URIs, HATEOAS (Hypermedia as the Engine of Application State), pagination, filtering, and sorting)
  • Implementation of RESTful services, use of frameworks (e.g., Spring Boot – Java, Flask – Python, Ktor – Kotlin), data serialization formats (JSON, XML)
  • Error handling and validation (error handling strategies, effective use of HTTP status codes, custom error responses, input data validation techniques)
  • Security in RESTful APIs (API security best practices, authentication and authorization (OAuth2, JWT), HTTPS and data encryption)
  • API documentation and testing (Using Swagger/OpenAPI for documentation, unit and integration testing with tools like Postman, JUnit)
  • Implementation of architectural patterns and design patterns like MVC and MVVM.
  • Design and implementation of GraphQL schemas and services.
  • Communication between applications and systems via Sockets.
  • Optimization of server application performance through caching, load balancing, and other techniques.

Suggested Bibliography

  • ARMANDO FOX, DAVID PATTERSON (2017), ΤΕΧΝΟΛΟΓΙΑ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ ΩΣ ΥΠΗΡΕΣΙΑΣ: ΜΙΑ ΕΥΕΛΙΚΤΗ ΠΡΟΣΕΓΓΙΣΗ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΙΚΗΣ ΝΕΦΟΥΣ
  • Χρήστος Δουληγέρης, Ρόζα Μαυροπόδη, Εύη Κοπανάκη, Απόστολος Καραλής (2021): Τεχνολογίες και Προγραμματισμός στον Παγκόσμιο Ιστό
  • Ι. Κ. ΚΑΒΟΥΡΑΣ, Ι. Ζ. ΜΗΛΗΣ, Α. Α. ΡΟΥΚΟΥΝΑΚΗ, Γ. Β. ΞΥΛΩΜΕΝΟΣ (2011): ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΜΕ JAVA, ΙSBN: 9789609732376
  • Sanjay Patni (2017): Pro RESTful APIs, Design, Build and Integrate with REST, JSON, XML and JAX-RS, ISBN: 9781484226650
  • Fernando Doglio (2018): REST API Development with Node.js, ISBN: 9781484237151