What does recent research in the learning sciences have to offer computing education researchers and course designers? Over the past 50 years, course designers have learned a great deal about how to teach computer programming. Programming courses have motivated imaginative instructional innovations including microworlds, case studies, programming patterns, peer critiques, and lab-based courses. Early courses often employed collaborative learning by default--due to limited access to personal computers--and invented solutions to common dilemmas such as imbalances in the contributions to a group product. In addition, many of the innovators in computer programming instruction were themselves self-taught, bringing intriguing insights to the design of new courses.
Recent work in the learning sciences offers some fresh ideas while also drawing on this promising tradition of innovation. In this talk I will integrate the research of the Technology-Enhanced Learning in Science (TELS) center with my experiences in design of computer programming courses to identify some fruitful directions for the field.