CS146: Elementary Algorithm Design and Data Abstraction (Advanced Level) | Winter 2026 | Sessional Lecturer, 1 section

Course Description

CS 146: Elementary Algorithm Design and Data Abstraction (Advanced Level)

CS146 is an advanced-level version of CS136.

While CS136 introduces imperative programming solely through C, CS146 begins its exploration of imperative programming using both Racket and C. The course also covers various methods to understand and execute programming semantics, including stepping rules, compilers, and interpreters. CS146 presents interpreters in Haskell and invents toy languages SIMPL (a simple imperative language) and PRIMPL (an assembly-like language) to understand imperative semantics at a lower level. We briefly discuss what compilation and assembly looks like for these languages. Finally, students are exposed to MMIX as a method to briefly introduce binary encoding of instructions and data, and to understand how CPU architectures may practically impact instructions and timings.

Student Course Perceptions

Explanations of course concepts: 94%

Creating a supportive learning environment: 100%

Stimulating student interest: 94%

Overall instructor effectiveness: 96%

Click here for full data

My Thoughts

TODO: Write reflection

profQUOTES

As quoted in mathNEWS.

Volume 160, Issue 1, January 16th, 2026

Volume 160, Issue 2, January 30th, 2026