This engineering education research project will develop the software and high school curricula to teach programming using mobile devices that will allow students to walk around and interact with each other as they develop programs for virtual robotics competitions. The project is driven by the hypothesis that a mobile, collaborative programming platform will improve learning outcomes in designing, generating, and evaluating algorithmic knowledge. The hypothesis has been subdivided into four measurable outcomes focusing on learning, transfer of programming knowledge, engagement, and procedures. Both learning and system development are addressed in the proposed research.

The broader significance and importance of this project, if successful, are to fundamentally change how students learn computer literacy. Rather than sitting at a computer to develop programs, students actively move around and interact in the task of preparing for robot competitions. This work may engage a more diverse group of students in learning the basics of programming, a key skill for the 21st century workforce.

Project Report

Computer programming is frequently taught (and learned) in a traditional single-user, single-computer, assignment-based way, but we know that this is rarely the best way to learn complex content. In this project, we explored how making beginner computer programming both mobile (on phones) and social (with friends) can make it easier to learn. In short, we found that it was easier to learn beginner computer programming in a mobile, social setting for a few reasons: primarily, if you explain your computer program to somebody else, you understand it better yourself; if you use your hands and feet to try out a program, it is fundamentally easier to understand; embedding programming in a multiplayer game makes it easier for students to try out things that do not work; and tinkering can be an effective way to learn computer programming. In the process of finding out how a mobile, social game might help people learn to program, we pioneered a couple of new ways to understand how people learn. Specifically, we adapted and refined "educational data mining" and "learning analytics" techniques to better understand how students' behaviors and how their programs changed over time. Understanding how, when, and why students get better at programming can help us teach programming more effectively in many different situations. That said, other research has suggested that students do not learn effectively without teachers, but teachers rarely have the kind of resources and information that would be most helpful to have when teaching programming. We built a system by which teachers could see (in real time) how their students' programs were evolving so they could better match students together. Teachers that used our system reported that it was very helpful for making matches and for helping their students learn. However, there is a lot more work that needs to be done on how best to help teachers help their students and how to support collaboration live in a computer science or engineering classroom. In sum, our findings highlight the important role of both collaboration and tinkering in learning to program. This project opened up several new and promising avenues on how best to teach programming, how to understand where students have problems learning to program, and how to support all students in learning to program.

Project Start
Project End
Budget Start
2013-01-11
Budget End
2014-08-31
Support Year
Fiscal Year
2013
Total Cost
$152,848
Indirect Cost
Name
University of Wisconsin Madison
Department
Type
DUNS #
City
Madison
State
WI
Country
United States
Zip Code
53715