Much attention has been paid in recent years to finding more flexible and less prescriptive approaches to the design of instruction than those put forward during the latter part of the twentieth century. A view of instruction as causal and largely behaviouristic has given way to one that is guided and primarily constructivist. In his current research, David Merrill outlines five fundamental principles of instruction which have broad implications for teaching computer science (CS). These five principles are: 1) solving real-world problems, 2) activating existing knowledge to build new knowledge, 3) demonstrating new knowledge to the learner, 4) allowing learners to apply new knowledge, and 5) integrating knowledge into the learner’s world. The following paper describes these principles and discusses how they related to instruction in CS.