  This paper describes the design of a second-year, 20 ECTS credit course on
imperative and object-oriented programming. The key design rhetoric is
encouraging students to assume responsibility for their own learning, and, to
this end, elements from mastery learning and other teaching strategies are used
in concert to construct an achievement-based system where students are put in
charge of how and when they are examined. In addition to describing the
elements of the course design, the paper reports on experiences from teaching
in this format, and how the format has evolved over time.
