Schedule (subject to change; check regularly)

Lecture slides and assignments are available for download from blackboard.

We will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza.

Find our class page at:

Week 1    Jan   21

-- Cancelled due to snowstorm

Week 1    Jan   28

Topic:    Introduction

-- Tanenbaum 1

-- J. Waldo, G. Wyant, A. Wollrath, and S. Kendall. "A Note on Distributed Computing."

Week 2    Feb    4

Topic:    Communication Fundamentals and Intro to Middleware Solutions

-- Tanenbaum 4.1 - 4.3

-- W. Emmerich. "Software Engineering and Middleware: A Roadmap."

Week 3    Feb    11

Topic:    Middleware Solutions

-- Tanenbaum 4.3 - 4.5

-- A. Carzaniga, D.S. Rosenblum, and A.L. Wolf. "Design and Evaluation of a Wide-Area Event Notification Service."

-- RMI Tutorial

Week 4    Feb   18

-- Topic: Continue lecture on middleware solutions

-- Homework 1 is due

Week 5    Feb    25

Topic:    Naming, Service Discovery, and Service-Oriented Computing

-- Tanenbaum 5.1 - 5.3, Tanenbaum 12

-- Debu Panda, "An Introduction to Service-Oriented Architecture from a Java Developer Perspective."

-- Robert E. McGrath, "Discovery and its Discontents: Discovery Protocols for Ubiquitous Computing."

-- Steve Vinoski, "Where is Middleware?”

-- Homework 2 is due

Week 6    Mar    4

Topic: Continue Lecture on SOA 

Week 7    Mar    11

-- Spring Break

Week 8    Mar    18

Topic:     Synchronization

-- Tanenbaum 6.1 - 6.2

-- Programming assignment 1 is due

Week 9    Mar    25

Topic:     Consistency and Coordination

-- Tanenbaum 3.1 and Tanenbaum 7

-- Homework 3 is due

Week 10    Apr   1

-- Midterm Exam

Week 11    Apr    8

Topic:     Replication and Fault Tolerance

-- Tanenbaum 8.1 - 8.3, Tanenbaum 8.5 - 8.6

Week 12    Apr    15

Topic:    Security

-- Tanenbaum 9

-- Homework 4 is due

Week 13    Apr    22

Topic:    Mobility and Adaptation

-- Tanenbaum 2.4, Tanenbaum 3.5

-- A. Carzaniga, G. P. Picco, and G. Vigna. "Designing Distributed Applications with Mobile Code Paradigms."

-- J. O. Kephart, D. Chess. “The Vision of Autonomic Computing.” IEEE Computer Vol. 36(1): 41-50 (2003)

Week 14    Apr    29

Topic:    Final Review

-- Programming assignment 2 is due

Week 15    May    6

-- Homework 5 is due

-- Reading day; no lecture

Week 16    May    13

-- Final Exam: starts at 6:45pm


Professor                    Dr. Sam Malek

                                    Electronic Mail:

                                    Office: Nguyen Engineering Building, Room 4431

                                    Office Phone: +1-703-993-1677

                                    Office Hours: Tues 10am-12pm or by appointment

Teaching Assistant     Thabet Kacem

                                    Electronic Mail:

                                    Office: Nguyen Engineering Building, Room 5321

                                    Office Hours: Wed 3:30-5:30pm or by appointment


This course conveys key concepts for designing and building distributed software systems.  The course is geared towards software engineers that work mostly at the application-level, but need to understand the features and limitations of existing middleware for distributed systems.  Additionally, the course covers some research topics related to currently open problems. Specifically, some of the topic that will be covered are as follows: definition and scope of distribution, principles of communication and computation, socket programming, remote method invocation, software architecture of distributed systems, middleware systems, service discovery, quality of service, adaptive systems, mobility, security, and fault tolerance. 



  1. SWE Foundation Courses

  2. Strong Java Programming Knowledge

Textbook and Readings

  1. Distributed Systems: Principles and Paradigms (2nd edition), Andrew S. Tanenbaum, Maarten Van Steen, 2007, ISBN 0-13-239227-5

  2. Supplemental papers (see the schedule below)


  1. Five Reading Assignments  20%

  2. Two Programming Assignments 30%

  3. Two Exams 50%