Confirm the Question:

  1. Repeat the question back
  2. Input values
  3. Input sizes
  4. Example input/output

Algorithm Design:

  1. Come up with a brute force solution
  2. Come up with intuitive optimal solution
  3. Clearly explain algorithm (with example if need be)
  4. Pseudocode

Complexity Analysis:

  1. Correct time complexity
  2. Explain time complexity
  3. Correct space complexity
  4. Explain space complexity
  5. (Bonus): Provide complexity analysis for brute force

Coding:

  1. Write main steps in comment before coding (placement of pseudocode)

  2. Explain each line verbally before writing

    Reminders:

    • reduce glaring errors
    • don’t go silent
    • don’t take a long time
    • demonstrate knowledge of language where possible

Testing:

  1. Test both the code and algorithm
  2. Re-use test case created or provided in algorithm design section
  3. Come up with another test case that mentions edge cases