Milestone 2

This and subsequent milestones will have to be completed and submitted as a team. Please read this document carefully without assuming instructions for Milestone 1 still apply.


The objectives of this milestone are to implement a simple storage server and to document and communicate the software design and implementation. These tasks demonstrates important aspects of software development and professional communication.

This assignment explores concepts such as client/server programming, network input/output, and communication about design and design decisions through the development of a storage server for data management.

You will also evaluate your implementation using a sample dataset provided. However, the dataset must be scraped and converted into the appropriate format to be fed into your system.

Learning objectives

With this milestone we pursue the following learning objectives. From the software development perspective, in this milestone you will learn to:

  • Develop socket-based client/server programs,
  • understand the basics of data management,
  • understand and use simple parsing techniques.
  • learn about performance evaluation
  • apply parsing techniques of your choice for data cleaning and transformations

We will build on these concepts in subsequent milestones.

From the communications perspective, in this milestone you will learn to:

  • Document your software project,
  • document your software architecture,
  • illustrate your project in software development diagrams,
  • describe and persuasively justify design decisions.

You will convey these points in a design document that you will refine throughout the duration of the course. Note, the design document is due before the other software artifacts are due. We hope you will use this incentive to think about your design before starting to code.

Overall, through this milestone, you should learn ways to use communication both within your design team and with outside observers in order to successfully complete a software development project.

Relevant tech talks

Optional Tech talks will be given by TAs during lab hours each week. Here are the Tech talks relevant to Milestone 2 (cf. TAs and Labs):

Detailed assignment specifications

Follow the link for the detailed milestone specification.

Submission instructions

Follow the link for the detailed milestone specification.

Document revisions

Any notable changes to the handout will be listed in the table below:

Date Revisions
Feb 13th
Better wording for "format" section.
Feb 3rd
Mirror link for census CSV.
Jan 28th
Milestone is officially released.