This is the archived Fall 2013 version of the course. For the most recent version, see

Class 14: Web Server Scheduling

Action Items

Problem Set 3 is due Monday, 28 October. You should be making good progress on this by now. If you have not yet done so, make sure to read through to the end. No one has yet claimed the "Open Piazza" extension, but hopefully someone will claim this soon.

Server Overload

If the rate of incoming requests exceeds the server's rate of processing requests, what can you do?

Why is it hard to solve problems by just throwing more resources at them?

When is horizontal partitioning better than vertical partitioning?

How should a server respond to a distributed denial-of-service attack?

What is (or should be?) the bottleneck resource for most web servers?


What should you do if you want to reduce the latency of your web server for important clients in Charlottesville?

What should you do if you want to increase the bandwidth of your web server for important clients in Charlottesville?

Why is it useful to have different protocol layers in a network?

What are the drawbacks of having different protocol layers?

How does the Internet prevent zombie packets?

For your zhtta server, which protocol layer is most inefficient?

Challenge. Find a host on the Internet whose latency from Charlottesville is higher than the latency to reach Bussleton, Austrailia. (Post in Piazza Forum.)


History of Packets by Robbie Hott

Tim Berners-Lee's Answers for Young People:

So do you think the Web is basically been a good idea or a bad one?

Some people point out that the Web can be used for all the wrong things. For downloading pictures of horrible, gruesome, violent or obscene things, or ways of making bombs which terrorists could use.

Other people say how their lives have been saved because they found out about the disease they had on the Web, and figured out how to cure it.

I think the main thing to remember is that any really powerful thing can be used for good or evil. Dynamite can be used to build tunnels or to make missiles. Engines can be put in ambulances or tanks. Nuclear power can be used for bombs or for electrical power.

So what is made of the Web is up to us. You, me, and everyone else.

Here is my hope.

The Web is a tool for communicating.

With the Web, you can find out what other people mean. You can find out where they are coming from.

The Web can help people understand each other.

Think about most of the bad things that have happened between people in your life. Maybe most of them come down to one person not understanding another. Even wars.

Let's use the web to create neat new exciting things.

Let's use the Web to help people understand each other.

Class 12: Synchronization

Action Items

Problem Set 3 is now posted: It is due Monday, 28 October. PS3 is more challenging than PS2, and provides many opportunities for doing exciting things beyond the minimum acceptable solution. Please don't wait to get started on it.

Everyone should have made some claim on a Norvig Number by now. If you haven't, you should claim the number you want to work on by posting in the forum.

The midterm exam will be posted on Thursday, 10 October (shortly after class) and due on Monday, 14 October (11:59pm). It will be open resources (except for other humans) and untimed. You should not be surprised if questions from the notes appear on the midterm. It is fine (and encouraged!) to discuss those questions in the course forum before the midterm is posted (but not during the midterm).

First Three Files

What three files should be in every project repository you create? (and why?)


Sequential programs give us a total ordering of program events. Concurrent programs give us a partial ordering.

What is the difference between a patial ordering and a total ordering?

What is a race condition?

What causes a deadlock?

Multi-Rustic MapReduce

Alexander Lamana, Jasdev Singh, Nishant Shukla, and William Thomason solve the Multi-Threaded MapReduce challenge!

Their code will be linked here soon.

Class 11: Smarter Scheduling

Class 10: Scheduling


  • Challenges
  • Course Wrapup
  • Final Projects
  • Final Survey
  • Getting Started with Github
  • IRC
  • Problem Set 3 - Zhtta Server - Benchmarking
  • Project
  • Project Ideas
  • Problem Set 1 - zhttpto Web Server
  • Comments on PS1 Comments
  • Problem Set 1 Reference Solution
  • Problem Set 2 - The Good Auld Shell
  • Problem Set 3 - Zhtta Server
  • Page Removed
  • Schedule
  • Enrolling for Spring 2014
  • Syllabus
  • Using Materials
  • Using Rust for an Undergraduate OS Course
  • VirtualBox
  • Working on Github in cs4414