Proof by cases.
In essence, by dividing a problem into sub-problems that cover all possible cases for the large problem, we are able to "chunk down" the problem, making it more feasible to tackle it. With the instance of math problems for instance, by separating the possibilities with cases like when x > 0 or x <= 0, it makes it far easier to prove an implication.
But having finally finished doing proofs, we also were introduced to run-time! Which boils down to the number of "steps" (i.e lines of code) that were run for a given function with a particular input. This enables us as computer scientists to tackle more theoretical issues without constantly having to work around physical limitations like current computer processing speed. I'm excited to see what we'll learn next week, as we're finally learning something with such an obvious and direct connection with programming.

