This article proposes a conceptual framework for analyzing students’ knowledge of programming. The framework integrates three distinct types of programming knowledge identified in the educational computing literature (syntactic, conceptual, and strategic) with three distinct forms of knowledge proposed in the cognitive psychology literature (declarative, procedural and conditional). Analysis of empirical data from a previous experimental study (Volet, 1991) provided support for the usefulness of the model and its educational potential for diagnosing deficiencies in the programming knowledge of novice programmers during a course of instruction and for designing appropriate instruction in introductory programming