A Case for Learning Research in Computer Science Education Christina Gardner-McCune Clemson University 100 McAdams Hall Clemson, SC 29634 01.864.656.5862 gmccune@clemson.edu ABSTRACT As computer science education (CS Ed) research matures, CS Ed researchers need to take a step back and consider more foundational questions of what it means to know how to program. Along this journey we will need to use research frameworks and methodologies from learning research that help us better understand who our students are as learners and how that affect how they learn, their motivation for learning, and how best to support their learning. In particular, we need to gain a better understanding of the mental modes students build around important programming constructs and concepts and the meta- cognitive skill necessary for learning to program and consistent application of programming and computational thinking skills. Lastly, we need to develop an understanding of the differences between novice and experts to begin defining a computer science specific pedagogy that distinguishes between content knowledge we want students to know and the pedagogical content knowledge needed to support studentslearning that content. While a few researchers in the field have already begun to branch into these research directions, this research has not matured enough that everyone recognizes these works as foundational to all the other computer science education research we conduct. Keywords Learning, Meta-cognition, pedagogical content knowledge, performance and learning goals, mental models, task analysis, and misconceptions 1. INTRODUCTION For many years now computer science education research has focused on figuring out what content students need to be taught, debating about what students’ first programming environment should be, designing visual programming languages, and redesigning CS1. However, learning is more than content knowledge and tools to support programming. Learning is a complex process that requires students to actively engage in learning new content, accessing previously learned content, reflection on what they know, dont know, and do not understand yet. In the process, learners must construct and reconstruct mental models of content and problem solving strategies, and understand context of use of these models to solve problems. Learning to program is a complex task that requires students to monitor their understanding about a concept, identify the correct programming construct to develop a solution, and recognize when both their thinking and their problem solving strategies are working or not working. In this paper, I argue that by using research frameworks and methodologies from learning research there are several viable avenues of research that should be undertaken by computer science education researchers to ensure that our novel interventions: programming environments, camps, and curricular units, have their desired long-term impact. These research frameworks and methods will help us to answer the following research questions: What does it mean for someone to know how to program? How do students learn to program and what does that development look like? What is the cognitive load of students who are learning to program and programming? What are successful and unsuccessful mental models of challenging programming concepts? What are common challenges in conceptual understanding in computing courses? What meta-cognitive skills and strategies are needed to learn to program and apply programming knowledge and novel situations? What are common transfer issues across the undergraduate computing curriculum? How do we support transfer of programming skills from starter programming environments like Scratch, Alice, MIT App Inventor, Greenfoot etc, to text-based programming languages and IDEs? 2. TOWARD UNDERSTANDING HOW PEOPLE LEARN TO PROGRAM Thus far, computer science education research has focused on helping students to learn foundational computing concepts such as loops, iteration, conditionals, variables, statements, and data structures, and then turns to much higher level computing concepts such as operating systems, computing theory, software design and testing, and other specialty areas. However, what is missing is an understanding of the underlying mental models that students hold with respect to these foundational concepts, the strategies needed to apply their knowledge and design skills and underlying principles they need to organize their thoughts in predefined and open-ended problem spaces such as bringing a project from idea to implementation. In this section we will explore the need for task analyses and mental models of programming tasks and environments; greater understanding of meta-cognition needed to successfully program, understanding the