[Example course materials: Download here.] Students learn about algorithm complexity, recursion, sorting algorithms, and data structures (e.g., linked lists) and abstract data types (e.g., stacks and queues). In Spring 2018 term, I designed the course from scratch. In Spring 2019 term, I redesigned this course introducing three more course components besides lectures so that this instance consisted of the following course components: (1) Lectures, (2) hands–on programming sessions, (3) problem sessions and (4) supervision sessions. I prepared all course material of each component from scratch.