Introductory Computing: The Design Discipline

The goal of this paper is to present in context the key didactical principles behind the ProgrambyDesign curricula, motivate the need for the supporting software, and describe in detail the HowtoDesignClasses component for teaching introductory object oriented program design using Java and Java-like languages. The key innovations are a systematic test-first program design, and the introduction of programming language concepts by designing abstractions based on existing programs.