Most of my work has dealt with novice programming environments and assessment of computer science learning.
Code Reuse for Non-Programmers
Current
Our goal is to identify and support the processes non-programmers engage in when trying to reuse code in an example program to fit their needs.
Novice programmers engage in many different learning activities and one of them is using example code to meet specific goals. We're exploring the strategies they use and barriers they encounter when identifying code that may be useful to them. To investigate these practices, we are conducting user studies with novices in the Looking Glass IDE, the successor to Storytelling Alice. Our end goal is to augment Looking Glass with an interface which supports novices in finding code responsible for graphical output and then guiding them through reusing that code in their own personal context.
Spring 2007 - Summer 2008
Out goal was to identify misconceptions students have about fundamental computer science concepts and construct a concept inventory (think of a non-comprehensive multiple choice test) to assess students' understanding of these concepts.
There is a significant need for instruments to assess the impact of pedagogical interventions in computer science classrooms. One type of instrument that has had success in other disciplines is the Concept Inventory (CI). A CI can be envisioned as a multiple-choice test where each question has incorrect answers which directly correspond to common misconceptions students have about ideas in the class. So with such an instrument we have some metrics by which to compare changes to the classroom.
My specific end of this is focusing on concepts and miscocneptions related to programming fundamentals. We have conducted a Delphi Process to identify the most important and difficult concepts to explore with our concept inventory. From the suggestions of our experts in the Delphi Process we will have interviews with students which delve into their understandings of these concepts. Their understandings, and misunderstandings, will drive the development of multiple-choice questions for the concept inventory.
Fall 2005 - Summer 2007
Our goal was to construct and maintain a novice programming environment which allowed students to deal with object-oriented concepts in a concrete way through drag-and-drop Java programming.
Traditional programming environments support a edit-compile-execute code cycle. We believe novices can benefit from a tighter development cycle where edits to code are immediately reflected in executing code, essentially removing the compilation step. This is the major idea behind JPie. Rather than creating traditional Java classes, users create dynamic classes whose instances are instaneously updated with changes to the source code of the dynamic class. This functionality is packaged into JPie as a drag-and-drop programming environment for the Java language.
My association with the environment began fixing smaller bugs in the interface and eventually implementing a context click system which solved saerch issues in the interface. After examining videos of student using JPie I then modified expression wrapping to eliminate commonly misunderstood errors in the interface. I also taught two semesters of CSE126 beginning the course with JPie.
Novice Programming Environments
Fall 2004 - Summer 2005
Our goal was to characterize the existing novice programming environments and to understand their impact on student learning.
A myriad of environments tailored to the needs of novice programmers have been constructed over the past few years. Although each offered different features meant to support novices in a special way, there exists overlaps in the features and intuitions of their creators. We wanted to identify these feature classes and attempt to quantify the impact they had on learning, if any. We determined that assessment of the impact of these systems was lacking and we suggested an evaluation framework to help these assessments be more effective in the future.
NSF Graduate K-12 Teaching Fellowship
Summer 2003 - Spring 2005
My goal was to create, teach, and disseminate computer science and engineering curricula materials that fit into K-12 classrooms curriculum needs.
I partnered with 2nd grade, 5th grade, 8th grade, and technology teachers at the Linden school to create computer science and engineering focused materials relevant to their classroom goals and the Massachusetts curriculum frameworks. I regularly met with teachers to assess their needs and raise their comfort with technology and computer science and engineering concepts.
I often taught the materials I developed with the teachers. As an assessment project, I taught a series of lessons about algorithms to four 2nd grade classrooms and assessed their understanding of algorithms and their ability to write and describe processes. The results of this project can be seen here.