My research is in computer science education, both the study of learning computer science and applying computer science to education problems. My research focus is on scaling classes, such as how do we add more students to a class without sacrificing quality? I pursue this research by examining data from course tools to find interpretable data-driven insights that inform learning interventions.
I'm also the creator of The CS-Ed Podcast.
Below are highlights from my CV.
The classes I teach focus on introductory computer science within the first two semesters.
Wrong answers and Hints with Armando Fox
KnowMap with Dawn Song
BGP Parser and HTTP Request Causation with Vern Paxson
Anshul Shah, Jonathan Liu, Kristin Stephens-Martinez, and Susan H. Rodger. 2021. The CS1 Reviewer App: Choose Your Own Adventure or Choose for Me!. In Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education ACM ITiCSE '21
Kristin Stephens-Martinez. 2021. A Study of the Relationship Between a CS1 Student's Gender and Performance Versus Gauging Understanding and Study Tactics. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education. ACM SIGCSE '21. (Video)
Kristin Stephens-Martinez, Armando Fox. 2018. Giving Hints is Complicated: Understanding the challenges of an automated hint system based on frequent wrong answers. In Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education 2018. ACM ITiCSE '18.
Kristin Stephens-Martinez, An Ju, Krishna Parashar, Regina Ongowarsito, Nikunj Jain, Sreesha Venkat, Armando Fox. 2017. Taking Advantage of Scale by Analyzing Frequent Constructed-Response, Code Tracing Wrong Answers ACM International Computing Education Research 2017. ACM ICER '17.
Kristin Stephens-Martinez, Marti A. Hearst, and Armando Fox. 2014. Monitoring MOOCs: Which Information Sources Do Instructors Value? ACM Learning At Scale 2014. ACM L@S '14.
Spring 2018 (Co-taught with Owen Astrachan)
Introduction to practices and principles of computer science and programming and their impact on and potential to change the world. Algorithmic, problem-solving, and programming techniques in domains such as art, data visualization, mathematics, natural and social sciences. Programming using high-level languages and design techniques emphasizing abstraction, encapsulation, and problem decomposition. Design, implementation, testing, and analysis of algorithms and programs. No previous programming experience required.
Given data arising from some real-world phenomenon, how does one turn that data into knowledge and that knowledge into action? Students will learn critical concepts and skills in computer programming and statistical inference in the process of conducting analysis of real-world datasets. Students will write computer programs for projects using the Python programming language. In considering applications, we will discuss how data can be used responsibly to benefit society. This class assumes no prior coding experience.
Spring 2021 (Co-taught with Brandon Fain)
In this course, you will learn how to analyze, use, and design data structures and algorithms in an object-oriented language (Java) to solve computational problems. Emphasis on abstraction including interfaces and abstract data types for lists, trees, sets, tables/maps, and graphs. Implementation and evaluation of programming techniques including recursion. Intuitive and rigorous analysis of algorithms.
Spring 2021 (Co-taught with Brandon Fain)
This course serves as an introduction to various aspects of working with data–acquisition, integration, querying, analysis, and visualization–and data of different types–from unstructured text to structured databases. Through lectures and hands-on labs, the course covers both fundamental concepts and computational tools for working with data and applies them to real datasets in a capstone team project.
(Co-taught with Susan Rodger and Robert Duvall)
This is the computer science department’s undergrad TA training class. The goal of this class is to help you become an awesome TA. We believe that helping you become a good UTA will help your students learn and we believe that it is important to help you with this process. When it comes to teaching, no one is perfect. But no one can improve in a vacuum. It takes practice, acquiring new knowledge and skills, and a lot of reflection. The purpose of this class is to help you through that process and to prepare you to teach lab, run consulting hours, and support the faculty that teach in the department.
Computing education research (CER) is the study of how people learn and teach computing. This course will cover a basic understanding of what CER is, the current topics in the field, and CER methodologies. We will do this by reading an overview of CER, prominent works, and current research papers. In addition, the class will have CER projects mainly focused on data analysis.
My research is in computer science education, specifically on how to scale learning. With many classes growing in size, we cannot ignore the gap between the supply of teachers and demand in terms of the number of students. I do not believe a computer can replace a teacher, but I do think computers can help this situation. How to support the teacher, student, and class are the research questions I am most interested in. My research approach involves using mixed methods to analyze classroom data collected from class tools. I then apply the insights from this analysis to inform learning interventions.
If you are interested in working with me or collaborating, feel free to email me. For undergrad students, I am open to doing an independent study or you might be interested in Duke University's summer undergrad research program (CS+). I usually have at least one project in this program every summer.
Below are some of my research projects.
CS101 Reviewer App is a web application that provides an online quiz tool to students enrolled in CS101 at Duke University. It enables students to quiz themselves on CS101 topics with carefully designed questions that check for specific misunderstandings. These questions are computer generated from a template. A recent feature includes an auto-generated quiz that chooses what topics to focus on based on the student's past performance.
We have many different ideas for this project. Some ideas are to improve the app, such as adding different question types, improving the algorithm that generates the auto-generated quiz, or adding automated hints based on the student's wrong answers. Other ideas focus on analyzing the data we are collecting. We want to understand the difficulty of the generated questions within a question template and across templates, as well as link the generated questions' wrong answers back to the template's wrong answers to understand student misunderstandings. This work would also help us look at student behavior to understand class trends and inform future features.
Team members: Belle Xu
Former Team members: Bianca Saputra (Fall 2021 - Spring 2022), Brian Janger (Summer 2021), Manith Luthria (Summer 2021), Belle Xu (Summer 2021, Spring 2022), Anshul Shah (Spring 2020 - Spring 2021), Jonathan Liu (Fall 2020 - Spring 2021), Andrew Elcock (Spring 2021), Benjamin Stewart (Summer 2020), Frank Tang (Summer 2020), Eric Young (Summer 2020)
Using data we currently can collect from the class, this project focuses on understanding student help-seeking behavior. Which students are seeking help? Where are they seeking help? What kind of help are students seeking? What kind of help are students receiving? How do we encourage students to seek help only when they need it? How do we improve the help students are receiving?
This project is in the preliminary data collection and analysis phase. We have data from office hours, class forums, and class materials.
Team members: Shao-Heng Ko
Former Team members: Sona Suryadevara (Summer 2021 - Spring 2022)
This project is with Jun Yang and Sudeepa Roy. Our goal is to create an interactive debugger called I-Rex for SQL. I-Rex allows users to interactively "trace" through SQL queries, understand how they execute, and debug wrong queries.
My work on this project focuses on the learning and user experience of the tool. So far, we've run preliminary user studies to learn about the overall study experience. Other ideas we have for this project include: (1) Conducting cognitive walkthrough while an expert is debugging for the sake of designing a debugging process for beginners, (2) A controlled learning gains study while learners are using the tool, and (3) More user studies.
Team members: We are looking for people!
This line of work intertwines closely with what happens in the classroom. Flipping class material involves identifying class material to flip, where students consume learning materials outside the classroom and apply their learning in the classroom. After identifying the material, we would need to identify what medium to use for the flipped material (video, text, audio, etc.) and then run an experiment to understand the effect on the class. After reading Grading for Equity by Joe Feldman, I want to explore these ideas in computer science learning. How do these practices change student outcomes? Can they make the computer science classroom more equitable? Are there ways computer science is uniquely different from related work on this topic?
This project is in its infancy. I want to work on it more but currently do not have the time. If I had someone interested in it, I would happily advise them on the project.
Team members: We are looking for people!
Association for Computing Machinery (ACM)
Special Interest Group on Computer Science Education (SIGCSE)
Outstanding Graduate Student Instructor - UC Berkeley
National Science Foundation Graduate Research Fellowship
UC Berkeley Chancellor's fellowship