Algorithms vs Programs
Proving correctness of an algorithm is very important
- a well designed algorithm is guaranteed to work correctly and its performance can be estimated
Proving correctness of a program (an implementation) is fraught with weird bugs
- Abstract Data Types are a way to bridge the gap between mathematical algorithms and programs