Prof. Kathi Fisler, Advisor, WPI - Computer Science
Prof. Daniel Dougherty, WPI - Computer Science
Prof.Jake Whitehill, WPI - Computer Science
Prof. Brian Dorn, University of Nebraska at Omaha - External member
How to Design Programs (HtDP) is an introductory-level curriculum for teaching program-design. It uses a unique pedagogy that systematizes program-design through a step-by-step process called the design recipe, that leverages the structure of input data to design programs. It scaffolds learners through the program-design process by capturing more information about the current problem domain as learners perform each step, and this information can inform the development of immediate artifacts that builds into a final program. While HtDP is used in several higher-education institutions, as well as in some K-12 programs, how students learn with HtDP and how this learning evolves remains poorly understood. In this dissertation, I look at two aspects around students’ learning and use of HtDP to design programs within introductory-level CS courses.
First, I explore how students’ use of HtDP design practices, both as standalone practices and as an integrated process, evolve during a course. My primary goals here are to (1) identify program-design skills that students appear to be using, and (2) formalize a progression of how these skills develop. Second, I focus on a major component of the design recipe, the use of program templates, and explore how students adapt their use of HtDP templates to problems with multiple task components. A template is basically a skeleton code that reflects the shape of the input, as well as a traversal of the input. A straightforward use of HtDP is particularly suited for single-task programming problems, but current CSEd research show that novices constantly struggle with multi-task problems.
To this end, I have developed an initial multi-dimensional framework of skills and their progressions using the SOLO taxonomy. I have also synthesized initial narratives of the impact of students’ syntactic-level understanding of HtDP templates on their structuring of solutions for multi-task programming problems. A synthesis of my observations and findings will contribute to the development of a theory of learning around program design from an HtDP perspective. Such a theory will provide insights, grounded particularly on students’ process-type data, on how the HtDP process promotes the learning of program-design.