Pattern Based Programming Instruction
Walter Beck, S. Rebecca Thomas, Janet M. Drake, J. Philip East, Eugene Wallingford · 2020
Several years ago a group of our computer science faculty began seriously examining initial programming instruction.We discovered a shared perception that too many students don't write reasonable programs even after completing a semester course in programming.Others have noted the same may even be true after the second course (e.g., [1]).There is cause for concern as computer applications pervade our society, often in life-critical situations.Our students are producing some of those applications.Typical programming instruction tries to both cover syntax and instill skill in algorithm development.Students are quickly writing their own programs after minimal instruction and an example or two.They write programs by putting statements together in ways that, as often as not, are poor if not outright incorrect.Instructors or graders provide some feedback to the students after several days.By that time instruction has moved on and another assignment has been assigned.Understandably, students pay little attention to the feedback and too often have little chance to apply it even if they did attend to it.As this happens repeatedly during the term, the end result is that too large a fraction of the students never actually produce a good program.Many introductory texts address top-down-design by admonishing students to break larger problems into smaller problems and by giving static examples that illustrate a very dynamic process.Students seem to ignore the examples and get no insight into how problems can be broken down.The texts illustrate an overwhelming concern with the "what" of instruction but almost no knowledge or insight into the "how".An additional concern about programming instruction relates to the improvement of pedagogy.There seem to be few espoused principles for designing instruction.Astrachan and Reed [1] indicate most