To help students learning computer programing better cope with the high level of complexity involved, this project investigates a novel education technology, CSEdPad (CS Education Pad), to ease students' introduction to programming during their early encounters with CS concepts and tasks. The CSEdPad system design brings to bear proven educational technologies and techniques to improve students' mental model construction, learning, engagement, and retention in CS education. In particular, the system targets source code comprehension, a critical skill for both learners and professionals. It monitors and scaffolds source code comprehension processes while students engage in a variety of code comprehension tasks. Key approaches being explored include Animated Pedagogical Agents, self-explanation, and the Open Social Learner Model.
A key problem in teaching introductory programming that has been poorly addressed to date is teaching students how read and comprehend program code. In particular, current CS curricula tend to emphasize the writing of program code, and give little instruction on how to read code. To address this problem, we have created Coding Companion, a supplemental learning and quizzing tool for introductory Computer Science courses that use the Java programming language. This application focuses on helping students develop program comprehension skills by reviewing key programming concepts learned in class and walking the user through the step-by-step execution of code examples demonstrating those concepts.
Numerous studies have pointed to the considerable potential of pair programming, for example, for improving software quality. Using the technique, two programmers work together on a single computer, and take turns playing the role of driver, actively typing and controlling the mouse, and the role of navigator, attentively monitoring the driver's work and offering suggestions. However, being a complex human activity, there are still many questions about pair programming and its moderating factors. Key findings included (1) that all pairs exhibited episodes of teaching, often covering practical development knowledge, such as how to use programming-tool features, (2) that navigators contributed numerous ideas to the task and the pairs acted upon the vast majority of those ideas without discussion, and (3) that pairs exhibited almost no indications that partner interruptions disrupted their flow.