|S1 |S2 |S3 |S4 | S5 |S6 |S7 |S8 | S9| S10|S11|S12| S13|S14|S15| S16|
Week 1 [February 16-20]
- General presentation
- Course:
- Distributed Systems. Basic concepts (I).
- Usefull Links&Discussions:
- Brewer Theorem - CAP
- PACELC
- Register here.
- Laboratory
- Explain the difference between the illusion of parallelism (time-slicing) and true parallelism.
- Empirically demonstrate the nondeterministic nature of the OS process scheduler.
- Identify and reproduce a Race Condition in a controlled environment.
- Utilize mutual exclusion mechanisms (pthread_mutex) to protect critical sections.
- Apply dynamic analysis tools (ThreadSanitizer) to detect invisible concurrency bugs.
- Google Sanitizers: https://github.com/google/sanitizers
- pthreads: https://man7.org/linux/man-pages/man7/pthreads.7.html
- GitHub Copilot: https://github.com/copilot (create an account using your @info.uaic.ro email address)
- WSL: https://learn.microsoft.com/en-us/windows/wsl/install or a Linux distribution
- VirtualBox (optional): https://www.virtualbox.org
- Docker / Docker Desktop (optional): https://www.docker.com
- Visual Studio Code: https://code.visualstudio.com/ (or any other IDE; eg. JetBrains)
- To access the internal development server, please follow the instructions here: link (Credits: Computer Networks Course, Conf. Dr. Andrei Panu)
Concurrency, Nondeterminism, and Race Conditions
By the end of this laboratory, students will be able to:
Week 2 [February 23-27]
- Courses
- Distributed Systems. Basic concepts (II).
- Laboratory
- Implement a basic TCP client–server architecture using the Socket API.
- Differentiate between an iterative (blocking) server and a concurrent (threaded) server.
- Observe head-of-line blocking, where one slow client affects all other clients.
- Apply thread creation techniques (from Lab 1) to handle network connections dynamically.
- Analyze the fundamental trade-off between resource consumption (threads) and responsiveness (latency).
- Implement a thread-safe task queue to support concurrency and handle multiple client/worker connections.
- Design an application-layer protocol over TCP sockets.
- Compare TCP, UDP, and QUIC in terms of reliability, ordering, congestion control, and latency.
- Linux udp(7) man page: https://man7.org/linux/man-pages/man7/udp.7.html
- Linux tcp(7) man page: https://man7.org/linux/man-pages/man7/tcp.7.html
- QUIC Working Group (IETF): https://quicwg.org/
- Cloudflare "The Road to QUIC": https://blog.cloudflare.com/the-road-to-quic/
- quiche (Cloudflare, Rust/C): https://github.com/cloudflare/quiche
- ngtcp2 (C): https://github.com/ngtcp2/ngtcp2
- msquic (Microsoft, C): https://github.com/microsoft/msquic
- aioquic (Python): https://github.com/aiortc/aioquic
- RFC 9000 -- QUIC Transport Protocol: https://www.rfc-editor.org/rfc/rfc9001
- RFC 9001 -- Using TLS to Secure QUIC: https://www.rfc-editor.org/rfc/rfc9001
- RFC 9114 -- HTTP/3 (over QUIC): https://www.rfc-editor.org/rfc/rfc9114
- RFC 768 -- UDP specification (the entire spec is 3 pages): https://www.rfc-editor.org/rfc/rfc768
- RFC 9293 -- TCP specification (2022, replaces RFC 793): https://www.rfc-editor.org/rfc/rfc9293
- Beej's Guide to Network Programming (practical C examples): https://beej.us/guide/bgnet/
Network Communication & The Client-Server Model
By the end of this laboratory, students will be able to:
Week 2' [February 26, C112]
- Course
- 18:00 - 20:00 - Prerequisites before Cloud Computing
Week 3 [March, 2-6]
- Courses
- Distributed Systems. Basic concepts (III).
- Laboratory
- Offensive Security (Red Team): Exploit memory vulnerabilities (Buffer Overflow) using Python.
- Defensive Security (Blue Team): Implement secure coding practices, Input Sanitization, and Challenge-Response Authentication.
- Infrastructure: Simulate a real network (you may use VMs, Dockers).
- Extensions: Create additional extensions for your Client-Coordinator-Worker infrastructure.
- Build: Implement the functional (but naive) Coordinator-Worker system.
- Break: The "Red Team" session. Crash the system using exploits.
- Fix: The "Blue Team" session. Hardening, Authentication, and Fault Tolerance.
- Enhance Functionality: Implement extension
Mini-Distributed System – Architecture, Scalability & Security
In this laboratory, we will traverse the full lifecycle of a mini-distributed system. We will not only write code that "works" but also analyze how it fails under pressure (scalability) and under malicious attacks (security).
Technical Objectives:
Week 3' [March 5, C112]
- Course
- 18:00 - 20:00 - Distributed systems principles applied in Cloud
Week 4 [March, 09-13]
- Courses
- Google Cloud Platform
- Laboratory - Homeworks: The schedule for the first assignment presentation has been posted here: link. Please do not hesitate to contact us if you will not be able to attend your designated time slot.
Week 5 [March, 16-20]
- Course:
- Virtualization in Cloud
- Laboratory
Week 6 [March 23-27]
- Course:
- Presentation & Hands-on Lab: Containers & Kubernetes - [March 24] - [08:00-10:00 - C308] & [10:00-12:00 - C210]
- To be installed before:
- Docker Desktop – https://docs.docker.com/desktop/
- Kubernetes local, with Kind –https://kind.sigs.k8s.io/docs/user/quick-start/#installation (if there are issues, you can use Minikube:https://minikube.sigs.k8s.io/docs/start/)
- kubectl binary – https://kubernetes.io/docs/tasks/tools/#kubectl
- Supplementary resources:
- Laboratory
Week 7 [March, 30 - April, 3]
- Courses: Practical Perspectives on Cloud Application Architecture
- Laboratory
Week 8
!!! Week 9 [April 22-25, 2026] - SpringSchool - FII Library - Floor 3
- Faculty of Computer Science organize the Spring School for students on topics of Cloud/Edge Computing, Network Communication Architectures, Virtualisation Technologies, 5G Networks, Security in Distributed Systems
- Notice: The topics addressed in the SpringSchool cover multiple directions addressed in our courses, but some are required and participation in them is considered as the advanced recovery of these thematics.
- Other details regarding participation to these courses are given through your email, after your REGISTRATION
- The REQUIRED courses from this SpringSchool 2026:
- (to be updated)
- [09:00-10:45] Google Agent Space
- [13:00-14:00] Increase Development Efficiency with Continuous Integration & Testing
- [12:30-16:30] Introductory course on the principles, case studies, and basic methods of system design, with applications in the field of telecommunications
- [15:00-16:30] Edge Computing: Bringing AI Closer
- BONUS! Participarea activa la activitatile propuse in 22 Aprilie - 25 Aprilie 2026 poate conduce la un bonus de 1p la nota finala. Nu uitati sa va treceti pe foaia de prezenta care va fi in fiecare dimineata disponibila la intrare.
Week 10 [April, 27-30]
- Courses: Systems Perspectives on Modern Cloud Architectures
- Laboratory: Homework[2] - Final Presentations
Week 11 [May, 4-8]
- Course - was recovered in advance in Week 3'
- Laboratory: Discussions over Homework[3]
Week 12 [May, 11-15]
- Course - was recovered in advance in Week 3'
- Laboratory: Discussions over Final projects
Week 13 [May, 18-22]
- Courses: The Evolution of Distributed Architectures
- Laboratory: Homework[3] - Presentations
Week 14 [May, 25-29]
- Courses: Advanced Challenges and Directions in Distributed Systems
- Laboratory: Homework[3] - Presentations
Test
[Test] June, 4, 2026 - [10:00 - 12:00]
- Obs. You can receive questions from this semester's courses and laboratories.
- Obs. Please verify this page for more updates.