Table of contents: 1. Software engineering principles 1.1. The software process 1.2. Program design 1.3. Design approaches 1.4. Verification software of correctness 2. Data design and implementation 2.1. Different views of data 2.2. Abstraction and built-in types 2.3. Higher-level abstraction and the C++ class type 2.4. Constructs for program verification 2.5. Comparison of algorithms 3. ADT …