Toward understanding the cognitive processes of software design in novice programmers

Open Access
- Author:
- Yeh, Kuo-Chuan
- Graduate Program:
- Instructional Systems
- Degree:
- Doctor of Philosophy
- Document Type:
- Dissertation
- Date of Defense:
- June 03, 2009
- Committee Members:
- Dr Christopher Hoadley, Dissertation Advisor/Co-Advisor
Kyle Leonard Peck, Committee Chair/Co-Chair
Christopher Hoadley, Committee Member
John David Popp, Committee Member
Frederico T Fonseca, Committee Member - Keywords:
- software design
cognitive process
software engineering
cognitive science - Abstract:
- This study provides insights with regard to the types of cognitive processes that are involved in the formation of mental models and the way those models change over the course of a semester in novice programmers doing a design task. Eight novice programmers participated in this study for three distinct software design sessions, using the same design scenario, at different times during the semester. Verbal protocols were collected and analyzed by segmenting them into a series of episodes, which were then categorized as one of five types of cognitive processes: problem comprehension, decomposition, structuring, mental simulation, and evaluation. Episodes that did not directly relate to the design problem are categorized as a non-design type of activity. Both the types of episodes and the finished design documents were analyzed to project what type of mental models the novice programmers have, how they use their mental models in a design process, and how they restructure their mental models. Two types of mental models were used by the novice programmers in this study. One was a UI-based mental model, which is the most common mental model formed by the novice programmers. It is an easy to use, action-oriented mental model created by the owner based on his experience interacting with the system to be designed. It tends to tax designers’ mental simulation ability, but is simple and shallow. The second type of mental model, which is also used by novice programmers, although not as frequently, is a programming-based mental model in which novice programmers incorporate programming concepts and symbolic representation into their design. Because the activity of programming is detail-oriented, and procedurally-driven, designers using this model tend to focus on decomposition and structuring. This study also finds that the prototypical mental model the novices create in the beginning of a design session does not have enough detail and is not executable. They often change and reconstruct their mental models during the design process. The inability to create an iv executable mental model is probably one of the reasons that they demonstrate a more opportunistic design pattern than a systematic one (i.e., a top-down strategy). As a result, for novice programmers, the problem solving process becomes the consolidation of mental models.