Abstract-Undergraduate education typically is characterized by a large number of students. Therefore, courses must be conducted efficiently and should not only focus on conveying the course material, but must also be oriented towards a maximum transfer of knowledge with a minimum amount of invested time on the instructor's part. At the same time, courses should be flexible to accommodate different student needs.In this paper 1 , we identify the needs of a practical course in microcontroller programming with respect to course structure and grading, present our solutions, and discuss our experiences.