Last fall, I assigned a programming project I had used for years. Several students turned in working code far faster than I expected, and the output was correct. So I asked one of them a question I have asked a hundred times: “Why does this algorithm work?”
The room went quiet. What happens if the input changes? What is the time complexity? Students looked back at t...