Problem Solving Plan Verify Inputs/Problem Think about problem and form a verbal solution Write down a first version Verify results (try different inputs) Derive time complexity Explore alternative approaches (step 2)