How Electrical Engineering Students Design Computer Programs

Thumbnail Image
Publication or External Link
Danielak, Brian Adam
Elby, Andrew
Gupta, Ayush
When professional programmers begin designing programs, we know they often spend time away from a computer, using tools such as pens, paper, and whiteboards as they discuss and plan their designs (Petre, van der Hoek, & Baker, 2010). But, we're only beginning to analyze and understand the complexity of what happens during such early-stage design work. And, our accounts are almost exclusively about what professionals do. For all we've begun to understand about what happens in early-stage software design, we rarely apply the same research questions and methods to students' early-stage design work. This dissertation tries to redress that imbalance. I present two case studies — derived from my 10 study participants — of electrical engineering (EE) students designing computer programs in a second-semester computer programming course. In study 1, I show how analyzing a student's code snapshot history and conducting clinical interviews tells us far more about her design trajectory than either method could alone. From that combined data I argue students' overall software designs can be consequentially shaped by factors — such as students' stances toward trusting their code or believing a current problem is a new instance of an old one — that existing code snapshot research is poorly equipped to explain. Rather, explanations that add non-conceptual constructs including affective state and epistemological stance can offer a more complete and satisfactory account of students' design activities. In study 2, I argue computer science and engineering education should move beyond conceptual-knowledge and concept deficit explanations of students' difficulties (and capabilities) in programming. I show that in doing design students do, say, write, and gesture things that: – Are outside the phenomenological scope of most (mis)conceptions accounts of programming – Would be explained differently under frameworks that emphasize manifold epistemological resources. Some student difficulties can be recast as epistemological blocks in activity rather than conceptual knowledge deficits. Similarly, some students' productive capacities can be understood as epistemologically-related stances toward an activity, rather than evidencing particular knowledge of specific computational concepts. – Would suggest different instructional interventions if teachers attended to the stabilizing aspects — such as epistemological dynamics — that help these episodes of activity cohere for students.