CS 15-122 (10 units). For students with a basic understanding of programming (variables, expressions, loops, arrays, functions). Teaches imperative programming and methods for ensuring the correctness of programs. Students will learn the process and concepts needed to go from high-level descriptions of algorithms to correct imperative implementations, with specific application to basic data structures and algorithms. Much of the course will be conducted in a subset of C amenable to verification, with a transition to full C near the end.
Co-requisite: 21-127 or placement
This course is a pre-requisite for 15-213 Computer Systems and 15-210 Parallel and Sequential Data Structures and Algorithms.