Design Doc Guide

A design document describes an approach to a specific technical problem. In the context of software engineering, it serves as the blueprint and specification for a software program or feature. Design documents are useful in both communicating and organizing your approach, while also being dynamic drafts that encompass the abstract details of the project.

Design Documents

For this class, design documents will consist of the following components:

  1. Data
  2. Data Structures
  3. Algorithms
  4. Complexity
  5. Questions (Optional)
  6. Diagram

Data

What data will you be using? What does the data consist of and how will you parse it for your program? How will your program use the data?

Data Structures

What data structures will you be using? How will your data structures use the data? How will your program use the data structures?

Algorithms

What algorithms will you be using? How will your algorithms use the data structures and data? How will your program use the algorithms?

Complexity

What is the input? How does the time and space complexity change with the input? What are the bounds?

Questions

Open Questions

What questions have come up while brainstorming your design? Consider asking them in office hours!

Closed Questions

Move questions here once you’ve found an answer. Logging your decision-making process provides essential context for others wishing to understand/contribute to your work.

Diagram

Visualize your data structures and algorithms into a diagram, such that someone seeing your document for the first time could quickly get a general idea of your implementation. You can use any drawing tool you like, but if you are unsure and looking for one, you can use draw.io

NGrams Example

See this example design document for Project 2A: NGrams by Esha Potharaju.

Project 2A Example


This site uses Just the Docs, a documentation theme for Jekyll.