CT 301 Homework 1 Design Document
About
Along with your code, you submit a short design document describing how you approached this assignment. The document carries no points on its own. I am not grading it for grammar, style, or writing quality. I want to read, in your own words, how you worked through the problem and what you took away from it.
Write it yourself. The point is to hear your own thinking, not a generated summary of it.
AI is not allowed for this document. Do not generate it, in whole or in part, with an AI tool.
What to cover
Cover these four things. You do not need headings for each, but they should all be there.
- How you navigated the process. Where you started, the order you built things in, how you tested as you went, what you changed along the way.
- What you learned. Ideas or techniques that are clearer to you now than when you started.
- What you found difficult. List at least five things and no more than ten. For each, say briefly what made it hard and how you got past it (or that you did not).
- Your design choices. Decisions you made in your own code, why you made them, and any tradeoffs you saw.
Including code snippets
When you talk about a design choice, it helps to show a few lines of your own code and then explain them. Keep snippets short (a few lines, not whole functions). Put the code in a monospace block, then explain what it does and why you wrote it that way. For example:
std::vector<Item*> selected = inventory.selectAll();
for (Item* item : selected) {
item->printTo(std::cout);
}
Here I get a list of non-owning pointers to the items I want, then loop over them and print each one. I used Item* rather than copying the items because the inventory still owns them; I only need to look at them, not take them. That is the snippet-then-explanation pattern: show the code, then say what it does and why.
- Word: select the code lines and change the font to a monospace one such as Consolas or Courier New. Optionally shade the paragraph (Home → paragraph shading) to set it off.
- Google Docs: select the lines, set the font to Consolas or Roboto Mono, or use Format → Paragraph styles, or insert a code block from the Insert → Building blocks menu.
- LibreOffice Writer: select the lines and apply the built-in Preformatted Text paragraph style (or set the font to Liberation Mono).
Length and format
- One to two pages is recommended; keep it short. Appendices and references do not count toward the length. Include references only if you cite something.
- Font: Arial 11 point or Times New Roman 12 point. Pick one.
- Spacing: single spaced, with 1 inch margins on all sides (the usual default in Word).
- Alignment: justified (see below).
What "justified" means. Text alignment controls how lines line up at the edges of the page.
- Left aligned (the default in most editors): the left edge is straight, the right edge is ragged.
- Justified: both the left and right edges are straight. The word processor spaces the words out so every full line reaches the right margin, like the columns in a newspaper or a printed book.
In Microsoft Word, select your text and press Ctrl+J (Windows) or Cmd+J (Mac), or use the justify button in the paragraph toolbar. Google Docs and LibreOffice have the same option in the alignment controls.
Keep it organized and succinct. Short, clear paragraphs are better than long ones.
How to submit
- Submit the document as a PDF.
- Upload it to the same Canvas assignment as your code, as a separate file. Canvas accepts more than one file per submission.
- Do not put the PDF inside your code zip. A PDF inside the zip will be ignored.
Grading
The document carries no points by itself. However, a missing document or one that shows no serious effort will cost at least 10 points, and possibly more. I reserve the right to deduct beyond that, and I also reserve the right to award positive points for a document that is genuinely thoughtful.