This content was thoughtfully created and tailored for CS137 — Programming Principles, for Software Engineering students at the University of Waterloo.

It features a collection of uniquely designed practice problems and in-depth explanations aimed at supporting students in mastering course concepts. Widely received as a valuable learning resource, it has helped students deepen their understanding, reinforce key ideas, and perform confidently in the course.

Table of Contents
  1. Ch. 01Introduction to C
  2. Ch. 02Making Decisions
  3. Ch. 03Loops
  4. Ch. 04Functions, Modules and Compiling
  5. Ch. 05Recursion
  6. Ch. 06Arrays and Intro to Pointers
  7. Ch. 07Floating Numbers, Math Library, Polynomials and Root Finding
  8. Ch. 08Structures
  9. Ch. 09Pointers, Memory Allocation, Arrays and Vectors
  10. Ch. 10Characters and Strings
  11. Ch. 11Big-Oh Notation
  12. Ch. 12Searching and Sorting Algorithms
  13. Ch. 13Linked Lists
  14. NewFinal Exam Practice problems