15-441 Assignments

There will be three programming projects and four written homework assignments.

Topic Assigned Due Other Info Solutions
Project 1 September 2, 2008 Checkpoint 1: September 9, 2008
Checkpoint 2: September 16, 2008
Lab Due: September 25, 2008 11:59pm
Lead TA: Nate
Note checkpoint due dates!
Starter Code
Simple IRC test
Checkpoint 1
Checkpoint 2: Description
Sample IRC Server!
NEW: Python Script Sample Tests
Homework 1 September 9, 2008 September 16, 2008 Lead TA: Vijay Panghal HW 1 Solution
Project 2 September 28, 2008 Checkpoint 1: October 9, 2008
Checkpoint 2: October 23, 2008
Lab Due: October 30, 2008 11:59pm
Lead TA: Josh
Note checkpoint due dates!
All-in-One tar File
Checkpoint 1
Checkpoint 1.1 (NOT GRADED)
Checkpoint 2
Checkpoing 2.1 (NOT GRADED)
Sample final test (NOT GRADED)
Final Test Scripts
Average grade: 64.5/100
Homework 2A 10/24 11/3, 11:59pm Lead TA: Nate Solutions
Homework 2B 11/7 11/13 start of class Lead TA: Nate Solutions
Project 3 November 08, 2008 Checkpoint 1: November 14, 2008
Checkpoint 2: November 19, 2008
Checkpoint 3: November 25, 2008
Checkpoint 4: December 02, 2008
Lab due : December 05, 2008 11:59 pm
Lead TA: Vijay
Note checkpoint due dates!
Starter Code
Checkpoint 1
Checkpoint 2
Checkpoint 3
Checkpoint 4
Concurrent download test script
Homework 3 11/19 11/25, 11:59pm Lead TA: Josh Solutions
Average grade: 35.5/50
Homework 4 12/2 On or before 8am on 12/7 under Seth's door Lead TA: All course staff Solutions

All homework and the first project is to be done individually. The second and third programming projects will be done in groups of two students.

The later projects are done in groups for two reasons. The first is the size of the class. The second and more important reason is that this is an opportunity to experience the joys and frustrations of working with others. It's a skill you only get better at with practice.

Since 15-441 fulfills the project-class requirement of the CS degree, you will be expected to learn and practice good software engineering, as well as demonstrate mastery of the networking concepts. Both partners in a project group will need to fully understand the project and your solution in order to do well on those exam questions relating to the projects. For example, a typical question might be: "When you implemented X, you came across a particular situation Y that required some care. Explain why this simple solution Z doesn't work and describe how you solved it." We'll pick questions such that it will take some effort to figure out Y. If you didn't take the time to work the problem yourself and just relied on your partner, you won't have enough time during the test to figure it out. Be careful, the insights you'll need will come only from actually solving the problem as opposed to just seeing the solution.

By their nature, the assignments aren't going to be completely comprehensive of everything you'll encounter in the real world or in class. To assist you, we've compiled a list of suggested study problems that you may want to do in addition to the normal homework. They're not graded, but they'd make great topics to discuss with the course staff during office hours.

Notes on the 15-441 Programming Projects

A key objective of 15-441 is to provide a significant experience with system programming, where you must write programs that are robust and that must integrate with a large, installed software base. Oftentimes, these programs are the ones that other people will build upon or use as tools. Systems programming is very different from the application program development you have done in earlier courses:

Finally, please note that by design, the 15-441 projects do not always specify every corner case bit of behavior or every design decision you may have to make. A major challenge in implementing real systems is in making the leap from a specification that is often somewhat incomplete (e.g., the IRC spec) to a real-world implementation. Don't get frustrated -- our grading will not dock you for making reasonable design decisions! We suggest three general guidelines to follow:

We'll go into more detail about each of these points during the recitation sections. But keep in mind: The programming assignments in 15-441 are larger and more open-ended than in other courses. Doing a good job on the project requires more than just producing code that runs: it should have a good overall organization, be well implemented and documented, and be thoroughly tested.

Last updated: Mon Jan 12 22:59:17 -0500 2009 [validate xhtml]