CS436 logo: Distributed Computer Systems

CS436 is a non-major course that provides an introduction to computer networks, protocols, and distributed system architecture for students who are not computer science majors offered by the David R. Cheriton School of Computer Science at the University of Waterloo.

A nominal outline of the course material is provided here. The actual material taught in the class will be adjusted according to class interest and experience.

Lectures are held Tuesday and Thursday from 08:30 to 09:50 in MC 4064. My office hours are by appointment and will be held in DC 3351. Ali Abedi will be the TA for this course and will be your main point of contact for the assignments. His office is DC 3549; his office hours will be by appointment, although this may change to scheduled hours later in the term. You can reach me via rth.cs436@gmail; Ali can be reached via a2ebedi@cs.uwaterloo. Official administrative entry.

The official outline for the course is also available online.

The class will heavily use two textbooks:


The best way to get help is via email. You can reach me at rth.cs436(at)gmail. Please try not to leave your questions until the last minute. I will also post updates to a twitter feed whenever it makes sense.

Course Scheduletop

It is important to note that this schedule is very susceptible to change based on your interests and how the class is progressing. In particular, the last half of the course will be modified to include some more recent applications of distributed systems (e.g., BigTable, MemCache, BitTorrent, and cloud computing).

KR == Kurose & Ross; TS == Tanenbaum & Van Steen

Jan 4 - Introduction[Slides]

Entrance survey
General introduction; a day in the life of a page request.

Jan 6 - Intro, physical media[Slides]

KR 1.1.3, 1.2.3, 1.5.1; TS 1.1, 1.2

Jan 11 - Link layer[Slides]

KR 5.1, 5.2.1, 5.3.1, 5.7

Jan 13 - Addressing, ethernet[Slides]

KR 5.3, 5.4, 5.5

Jan 18 - Switches, wireless, circuit switching[Slides]

KR 5.6, 6.3.1, 6.3.2, 1.3, 1.4

Jan 20 - Packet switching, Dijkstra's algorithm, loss, throughput[Slides]

KR 1.3, 1.4

Jan 25 - Network layer intro, datagrams, routing[Slides]

KR 4.1, 4.2, 4.4.1, 4.4.3, 4.5

Jan 27 - IPv4, IPv6, NAT, tunnelling[Slides]

First assignment due @ 0800
KR 4.4.2, 4.4.4

Feb 1 - IPSec, OSPF, BGP, broadcast routing[Slides]

KR 4.4.5, 4.6.2, 4.6.3, 4.7

Feb 3 - Transport Layer, multiplexing, UDP, Assignment #2[Slides]

KR 3.1, 3.2, 3.3

Feb 8 - Reliable data transfer[Slides]

KR 3.4

Feb 10 - TCP[Slides]

KR 3.5, 3.6.1, 3.6.2

Feb 15 - TCP Fast retransmit, congestion, flow control[Slides]

KR 3.5, 3.6

Feb 17 - Prof Away

Class cancelled.

Feb 23 - No Class (Reading Week)

Feb 25 - No Class (Reading Week)


Mar 1 - Review: Physical, Link, Network, Transport layers. (no slides will be posted)

Second assignment due @ 0830

Mar 3 - Midterm


Mar 8 - Midterm postmortem, HTTP[Slides]

KR 2.1, 2.2

Mar 10 - HTTP, SMTP et. al., DNS[Slides]

KR 2.2, 2.4, 2.5

Mar 15 - Mobile issues[Slides]

KR 6.5, 6.6, 6.7

Mar 17 - Distributed architectures, cloud computing[Slides]

TS 2, 3.2

Mar 22 - Consistency, replication[Slides]

TS 7

Mar 24 - Fault tolerance[Slides]

TS 8

Mar 29 - Case studies[Slides]


Mar 31 - Security[Slides]

Assignment 3 due @ 0830
Exit survey - in class


Winter 2011 Assignments:

There will be three in total; these will be very similar to those offered in the past (last year's a1, a2, and a3). Please take a few minutes at the start of the course to check the amount of development you will have to perform for this course. While you can choose whatever programming language you wish, note that these assignments (especially 2 and 3) require a fair amount of development. You may complete the assignments individually or as groups of 2.

While the assignments are fairly large, you will have almost one month to complete each. Try not to leave these until the last minute. If you have any problems, Ali (our TA) will be the main point of contact for the assignments.


Entrance survey (Jan 4 in class): Pass/Fail

Exit survey (Mar 31 in class): Pass/Fail

Assignment #1 (Jan 27 @ 0800): 10%

Assignment #2 (Mar 1 @ 0830): 10%

Assignment #3 (Mar 31 @ 0800): 10%

Mid-Term (Mar 3 in class): 20%

Final (April 8 - 21; date TBD): 50%

You must pass the final exam and all pass/fail assignments to pass the course. Late assignments cannot be accepted without proper (medical) documentation.


Academic Integrity

  • In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [See the academic integrity site for more information.]


  • A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4.
  • When in doubt please be certain to contact the department’s administrative assistant who will provide further assistance.


  • A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for his/her actions.
  • A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about “rules” for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean.
  • For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline.
  • For typical penalties check Guidelines for the Assessment of Penalties.


  • A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground.
  • A student who believes he/she has a ground for an appeal should refer to Policy 72 (Student Appeals).