🔬 Research

Computing as the 4th "R": a general education approach to computing education

Sarah Guthals

ICER (2011)

Computing and computation are increasingly pervading our lives, careers, and societies - a change driving interest in computing education at the secondary level. But what should define a "general education" computing course at this level? That is, what would you want every person to know, assuming they never take another computing course? We identify possible outcomes for such a course through the experience of designing and implementing a general education university course utilizing best-practice pedagogies. Though we nominally taught programming, the design of the course led students to report gaining core, transferable skills and the confidence to employ them in their future. We discuss how various aspects of the course likely contributed to these gains. Finally, we encourage the community to embrace the challenge of teaching general education computing in contrast to and in conjunction with existing curricula designed primarily to interest students in the field.

Read Paper →

The abstraction transition taxonomy: developing desired learning outcomes through the lens of situated cognition

Sarah Guthals

ICER (2012)

We report on a post-hoc analysis of introductory programming lecture materials. The purpose of this analysis is to identify what knowledge and skills we are asking students to acquire, as situated in the activity, tools, and culture of what programmers do and how they think. The specific materials analyzed are the 133 Peer Instruction questions used in lecture to support cognitive apprenticeship -- honoring the situated nature of knowledge. We propose an Abstraction Transition Taxonomy for classifying the kinds of knowing and practices we engage students in as we seek to apprentice them into the programming world. We find students are asked to answer questions expressed using three levels of abstraction: English, CS Speak, and Code. Moreover, many questions involve asking students to transition between levels of abstraction within the context of a computational problem. Finally, by applying our taxonomy in classifying a range of introductory programming exams, we find that summative assessments (including our own) tend to emphasize a small range of the skills fostered in students during the formative/apprenticeship phase.

Read Paper →

On the nature of fires and how to spark them when you're not there

Sarah Guthals

SIGCSE (2013)

Traditionally, computer science education research contributes new tools, techniques, and theories to improve institutionalized learning spaces e.g. classrooms. However, we take the position that the study and improvement of computer science learning spaces outside the classroom are just as important. We take a step toward illuminating the critical qualities of non-institutional computer science learning spaces by engaging in a grounded-theoretical examination of first-hand accounts of non-institutional learning. To further study the topic, we attempted to recreate (in the lab) a learning environment with many qualities that characterize non-institutional learning. To make this possible, we employed a modified version of CodeSpells -- a video game designed to teach Java programming in a way that engenders the sense of sustained, playful, creative exploration driven entirely by the learner. This study introduced 40 girls, ages 10 to 12, to programming for the first time. We use the results of both studies to develop a theoretical framework which we use to examine existing tools such as Scratch, Alice, and educational games in a new light.

Read Paper →

From competition to metacognition: designing diverse, sustainable educational games

Sarah Guthals

CHI (2013)

We investigate the unique educational benefits of 1-on-1 competitive games, arguing that such games can be just as easy to design as single-player educational games, while yielding a more diverse and sustainable learning experience. We present a study of chess and StarCraft II in order to inform the design of similar educational games and their communities. We discuss a competitive game we designed to teach Java programming. We evaluate the game by discussing its user study. Our main contributions are 1) an argument that the use of 1-on-1 competition can solve two existing problems inherent to single-player games, 2) an analysis of the features that make competitive games effective learning environments, and 3) an early but encouraging description of the emergent learning environment one can expect from designing an educational game with these features.

Read Paper →

CodeSpells: embodying the metaphor of wizardry for programming

Sarah Guthals

ITiCSE (2013)

This paper addresses how CodeSpells uses the metaphor of wizardry, along with an embodied API to engage students in learning to program in Java. Giving novice programmers a concrete representation of code has been encouraged and shown to help students understand the concepts with more ease. There have been many attempts to improve the novice learning experience by providing: a visual programming language, a hardware component or an application that is more approachable. The benefit of this research is that students are better able to understand how abstract code effects the environment. We build on this work through CodeSpells by immersing novices in the abstraction of code through embodiment to allow them to understand complex and abstract programming problems as if they were being affected by what they wrote. In this paper we present a new approach to novice programming environments, one that embodies the user and encourages a quick grasp of introductory concepts followed by a deep understanding through exploration.

Read Paper →

Student experience in a student-centered peer instruction classroom

Sarah Guthals

ICER (2013)

Although studies have shown Peer Instruction (PI) in computing courses to be beneficial for learning and retention, study of the student experience has been limited to attitudinal survey results. This study provides a preliminary evaluation of student experiences in a PI course -- specifically asking them to reflect on their role as a student in a PI lecture compared to a standard university lecture. Student responses to this question are first analyzed using Chi's Interactive-Constructive-Active-Passive framework which categorizes student activities by their value in a constructivist learning framework. This analysis finds that the majority of students reported activity in a PI lecture as "interactive" in contrast with "active" (e.g. taking notes) in a standard lecture. Additionally, a grounded theory open-coding analysis provides an initial examination of student perceptions of the PI lecture experience. Although students positively value learning-related aspects (feedback and increased understanding) a surprising breadth of value was noted around issues of affect and increased sense of community. In particular, these experiences invite discussion about PI and issues of STEM retention in post-secondary education.

Read Paper →

Codespells: how to design quests to teach java concepts

Sarah Guthals

Journal of Computing Sciences in Colleges (2014)

Serious games are a good approach to teaching computer science [7]. But there are still complications that arise, for example, no access to an instructor. This paper presents a study conducted using CodeSpells, a 3D immersive video game that aims to teach novice programmers basic Java concepts [3]. This paper specifically addresses the design of the quests in CodeSpells that provide scaffolding to support students in learning. The study analyzed how 16 students aged 8--12 understood and modified basic Java programs to complete quests. Based on game-play from an exploratory study, quests were added to engage students earlier and in more complex code edits. Both student understanding of programming and their comfort with modifying code was studied. This paper presents findings and lessons learned in quest design, and shows that quest design should set the expectation for students to engage with the code, not just use the code.

Read Paper →

Children's perceptions of what counts as a programming language

Sarah Guthals

Journal of Computing Sciences in Colleges (2014)

An educational programming language may be more accessible, less frustrating, and more rewarding for young students. However, if a student thinks that the educational language does not constitute actual computer programming, it is hard to build interest in the subject and confidence in their programming skills. We conducted a study in a summer enrichment program for academically high-achieving students entering the sixth grade. Students were interviewed about their perception of various computer programming environments and our analysis of their reasoning helps us to better understand students' tacit assumptions about computer programming. Half of the students were selected to complete a worksheet showing the connections between the programming language Scratch, Java, C++, and Python. Using linear regression we found that there were no statistically significant differences between students who did and did not complete this worksheet in terms of confidence and perception.

Read Paper →

A discussion on adopting peer instruction in a course focused on risk management

Sarah Guthals

Journal of Computing Sciences in Colleges (2014)

Peer Instruction (PI) has been shown to promote learning in introductory CS courses as well as upper-division courses such as architecture. A common thread among PI courses is that they focus on programs, algorithms, or equations that follow clear rules. In these courses there is usually one answer, though there may be varying approaches to finding it. An open-question in the PI research is: How could PI be incorporated in a course such as Software Engineering, where the focus is risk management and is therefore situational and dependent on personal experience and resources? This paper addresses one approach to developing PI materials for such a course. The pedagogy has been slightly modified: the instructor asks clicker questions, but then asks the students to call out suggestions for the answers. This paper describes this change and presents data from a student survey about their experiences. A call to the community is made to discuss how this and other modifications may be beneficial pedagogical changes to PI.

Read Paper →

CodeSpells: bridging educational language features with industry-standard languages

Sarah Guthals

Koli Calling (2014)

K-12 Computer Science Education has been an increasingly popular topic worldwide. Additionally, with K-12 standardized testing moving online, students are being required to improve their computer skills, which, among other factors, has also motivated the discussion to add computer science to the core curriculum [6, 8, 35, 22]. Educational programming languages, such as Scratch [25] and Alice [11], have a set of features that foster their use with younger students [27] such as drag-and-drop, limited API, and visual output. Given that novices can be introduced to such educational languages with a basic understanding of computer science concepts, industry-standard programming languages like Java can now be introduced to younger students. This paper re-introduces CodeSpells [14, 13, 15], a 3D immersive video game that is unique in that it attempts to engage students in introductory computing concepts in similar ways to Scratch/Alice, but using Java, while providing them a metaphor of wizardry that attempts to mimic the culture of computer science. CodeSpells has been shown to engage students in confidently writing Java code, but it has yet been shown to result in students being able to write Java code, or begin to become computer scientists. In this paper, we show the results of an 8-week study conducted on 55 9-10 year old students across two different schools. Throughout the study, students not only played CodeSpells, but also used a guided workbook to explore Java code outside of the CodeSpells virtual environment. Through both immersive interactions and the guided workbook, students demonstrated their understanding of introductory computing concepts and their ability to program in Java, both on the computer, and on paper.

Read Paper →