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
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.
(Ph.D. Thesis) K. Stephens-Martinez, Serving CS Formative Feedback on Assessments Using Simple and Practical Teacher-Bootstrapped Error Models, EECS Department, University of California, Berkeley, Tech. Rep. UCB/EECS-2017-166, Nov. 2017.
(Master's Report) Kristin Stephens. 2013. Towards Sound HTTP Request Causation Inference. EECS Department, University of California, Berkeley. UCB/EECS-2013-141
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.
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.
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.
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.
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: We are looking for people!
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