At the University of Pennsylvania, we have developed course projects for a large advanced undergraduate entry-level graduate course (CIS 553 / TCOM 512). Students work in teams to develop substantial distributed systems programming projects (>10000 lines of code) using network simulator 3 (ns-3), an emerging open-source network simulator that is aimed at replacing the popular ns-2 simulator. Projects are developed in layers, where students build upon earlier assignments, first developing a protocol for IP routing, followed by a distributed hash table (DHT) overlay network, and finally, a keyword-based search engine. One novelty of our assignments is the use of ns-3 in a large classroom setting, where students navigating through hundreds of thousands of lines of existing code before adding their extensions. In addition, selected groups develop the final project using declarative networking, a novel declarative framework that allows protocols to be rapidly synthesized using a high-level logic language into ns-3 implementations.

This website provides details of all our course assignments and initial code base based on ns-3 v0.9 (with our own modifications). If you are in an academic institution, please feel free to adapt and reuse our projects with acknowledgements by linking to this website. Instructors that wish to obtain our initial starting code for students, solutions and grading scripts should send email to Prof. Boon Thau Loo (boonloo AT

These projects are designed jointly by Qiong Fei, Boon Thau Loo, Taher Saeed, and Zhuoyao Zhang. This is a NetDB@Penn project. A high-level overview of the projects are described in the following technical report. An Open-source and Declarative Approach Towards Teaching Large-scale Networked Systems Programming. [Paper]
Taher Saeed, Harjot Gill, Qiong Fei, Zhuoyao Zhang, and Boon Thau Loo.
ACM SIGCOMM Education Workshop, Toronto, Canada, 2011.

Project 1: Routing protocol implementation

The first project extend ns-3 to support efficient routing using the link-state and distance-vector protocols.

Project handout: PDF
Code documentation: PDF

Project 2 (option a): PennSearch implementation

The second project involves the design and implementation PennSearch, a peer-to-peer search engine that is layed over PennChord, a Distributed Hash Table (DHT) implementation based on Chord. A DHT lookup algorithm is the foundation of all structured peer-to-peer systems. It provides support for one operation: given a key, it maps the key onto a node. You will first develop PennChord, layered over the routing protocol implementation in project 1, and this will be used to support scalable keyword retrieval on the speclab cluster.

Project handout: PDF

Project 2 (option b): PennDHT in RapidNet

Design and implement a full-fledged DHT of their choice (or a significantly complex distributed system approved by instructor) using RapidNet, a declarative networking engine developed at Penn. This option requires significantly more work, and only groups that did well in project 1 are eligible for this option. A good implementation potentially can result in a contribution to our RapidNet code base, as well as learning about declarative networking techniques.