Welcome to the Spring 2026 session of CSC 161: Imperative Problem Solving. This website is for the morning section of the class. If you are in the afternoon section, please use the afternoon section’s site. The two sections will stay in sync as much as possible, but make sure you are using your section’s website when checking policies, assigned work, and deadlines.
This class uses the C programming language, a classic and influential example of an imperative language still in widespread use today. Imperative programming languages, and C in particular, sit quite close to the hardware that runs the programs we write; as a result, solving problems in C requires us to think carefully about the structure of our programs and the resources we use. The reward for this extra effort is that C programs can be extremely fast, and can run on practically any computing device. Building your imperative problem solving skills in C will prepare you for CSC 207: Object-Oriented Problem Solving, Data Structures, and Algorithms. You’ll also be prepared to pick up many of the C-inspired languages on your own, and of course you’ll be better at mixing approaches from both functional and imperative styles in any programming language.