CMSC 111 is a deep dive into the fundamentals of programming concepts and teaches text-based programming using Python. Each unit provides detailed examples, engaging exercises to develop problem-solving skills, end-of-unit exercises that require students to synthesize the topics in that unit, and creative tasks, where students use their creativity and apply these topics in inventive ways that interest them. The course is predicated on the notion that learning about programming and computer science should be fun and engaging. Therefore, students are exposed to graphics-based problems that are visually engaging, allow for multiple correct solutions, and provide visual cues when a solution goes awry.