Musings, Courses, & Projects by Rob Marano

ECE 465 Spring 2025 Weekly Course Notes

<- back to syllabus


Classes will be decided week-to-week.

Week(s) Week of Topic
01 1/27 Intro; centralized vs distributed systems; development environment setup
02 2/3 Multi-processing & network programming — Part 1
03 2/10 Multi-processing & network programming — Part 2
04 2/17 Multi-processing & network programming — Part 3
05 2/24 Containerization: Docker and Kubernetes
06 3/3 DevOps and CI/CD
07 3/10 Integrate application to infrastructure
08 3/17 Distributed Architectures
09 3/24 Communication and Coordination
10 3/31 Consistency & Replication
11 4/7 Fault Tolerance
12 4/21 Security
13 4/28 Deploying on k8s on cloud-based virtual bare metal nodes
14 5/5 Deploying on k8s on cloud-based k8s
15 5/12 Final individual projects due

Follow the link above to the respective week’s materials below.

Week 01 — Intro; Centralized vs distributed

Topics

Table contrasting between centralized and distributed systems.

Feature Centralized Systems Distributed Systems
Architecture Single process or machine Multiple processes or interconnected machines
Scalability Limited High
Fault tolerance Low High
Complexity Low High
Cost Can be lower initially Can be higher initially, but more cost-effective at scale
Data Management Simpler More complex
Security Single point of vulnerability Multiple points of vulnerability

Software Installation

Setup your computer for this class

  1. Install Java 21 Development Kit (JDK); I prefer Amazon’s Corretto
  2. Install Apache Maven
  3. Install the following integrated development environment (Jetbrains IntelliJ - get full version with your student email; Visual Code)
  4. Install the following systems: Docker Desktop; Minikube (Kubernetes cluster for your computer); Helm

Homework Assignment

  1. Review our independent study our course’s syllabus. This course is to learn theory and immediately put it into practice building a distributed application (cloud service).
  2. Read “Basic Concepts You Need to Know about Building Large-Scale Distributed Systems”
  3. Read “The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software”
  4. Sign up for the free electronic copy of the textbook “Distributed Systems - 4th Edition” by van Steen and Tanenbaum
  5. Read Chapter 1 of the textbook, pay close attention to the design goals.