Lesson 020

Problem Decomposition

Break Big Into Small

1:00

How to break one overwhelming problem into smaller, independently solvable sub-problems — and why that skill underlies every large software project.

By the end, you can

  • Explain what problem decomposition is and how it differs from simply listing solution steps.
  • Apply the top-down refinement process to a new problem: state the goal, find major parts, refine until leaves are solvable, then recombine.
  • Evaluate whether a sub-problem is sized too big, too small, or just right using the single-responsibility criterion.
  • Describe the four benefits of decomposing into small, independent pieces: easier testing, easier debugging, team parallelism, and reuse.
  • Explain how divide and conquer (e.g., merge sort) is decomposition applied to algorithm design.
  • Distinguish functional, object-oriented, and algorithmic decomposition and give an example of each.
Up next in Programming Foundations
Questions or feedback?