Development of a Data-Grounded Theory of Program Design in HTDP


Downloadable Content

open in viewer

Studies assessing novice programming proficiency have often found that many students coming out of introductory-level programming courses still struggle with programming. To address this, some researchers have attempted to find and develop ways to better help students succeed in learning to program. This dissertation research contributes to this area by studying the programming processes of students trained through a specific program design curriculum, How to Design Programs (HTDP). HTDP is an introductory-level curriculum for teaching program design that teaches a unique systematic process called the design recipe that leverages the structure of input data to design programs. The design recipe explicitly scaffolds learners through the program design process by asking students to produce intermediate artifacts that represent a given problem in different ways up to a program solution to the problem. Although HTDP is used in several higher-education institutions and some K-12 programs, how HTDP-trained students design programs towards problems, particularly ones with multiple task-components, has not been thoroughly studied.\n\nThe overarching goal of this dissertation is to gain an understanding and insight into how students use the techniques put forth by the design recipe towards designing solutions for programming problems. I conducted a series of exploratory user studies with HTDP-trained student cohorts from HTDP course instances across two different universities to collect and analyze students’ programming process data in situ. I synthesized findings from each study towards an overall conceptual framework, which serves as a data-grounded theory that captures several facets of HTDP-trained students’ program design process. The main contribution of this work is this theory, which describes: (1) the program design-related skills that students used and the levels of complexity at which they applied these skills, (2) how students’ use of design skills evolve during a course, (3) the interactions between program design skills and course contexts that influenced how students applied their skills, and (4) the programming process patterns by which students approached the programming problems we gave and how these approaches relate towards students’ success with the problems. Using insights from the theory, I describe recommendations toward pedagogical practices for teaching HTDP-based courses, as well as broader reflections towards teaching introductory CS.

  • etd-3991
Defense date
  • 2020
Date created
  • 2020-05-18
Resource type
Rights statement
Last modified
  • 2023-12-05


In Collection:



Permanent link to this page: