I'm currently working as a developer/manager/designer (in that order) with the Oh! Lab at Carnegie Mellon University to develop a web app that helps teachers improve their teaching skills. Using key metrics known to improve classroom outcomes, the project will ultimately use class sensors to track and collect data on teacher behavior. This data is then presented back to the teacher in meaningful ways that may help teachers notice, act, and reflect on their performance. We are currently wrapping up initial designs and I am developing our first viable product using the Django framework.


AutoGantt is a fun side project that arose from my current project on ClassInSight. I was hired as a programmer for ClassInSight, but I have a broader set of skills especially from my experience in the METALS program at Carnegie Mellon University. I found myself not only programming, but acting as a manager and designer as well. I was researching Gantt charts to track our tasks and I wasn't too impressed with available tools. I also didn't want to spend forever making charts by hand. So, I created a small program that automates the process and adjusts the timeline given my assumptions and the dependencies between tasks.


This helps me manage the team with an automated up to date schedule that I don't need to remake every time something changes (and something will always change). Send me a message if you would like to know more.

Predicting Knowledge Over Time

Predictive models of student knowledge help us create adaptive educational technology that personalizes learning material based on what a student knows. Many models do not account for forgetting as a factor when predicting student knowledge. This project explored how cognitive models of memory combined with big data techniques may provide a means for more accurate predictions of knowledge over time. In turn this aids the development of automated practice schedules in educational software.


The interactive doc linked below is big so give it some time to load. Note that I prioritized testing the limits of what I could do with R Markdown more than I prioritized a beautiful document! That might help explain some pages that look like I tried to include everything and the kitchen sink. 


Together was my capstone project in the METALS program (Master of Educational Technology and Applied Learning Science) at Carnegie Mellon University. My team partnered with Virginia Tech to improve the accessibility and effectiveness of undergraduate tutoring services in science and engineering calculus courses. 

Acting as research lead, I guided the team through user-centered research methods alongside an iterative design process and prototype development. We created the mobile app "Together" to enhance peer-learning and group tutoring experiences in calculus.

Dungeon Data

I've long been a game enthusiast, and this is my first attempt at making an educational ​game for exploratory data analysis. If you are familiar with the brilliant game Papers, Please, you may notice a striking resemblance! The underlying mechanics of Papers, Please seemed perfect for my game idea. Players examine researchers documents and search for discrepancies in orc researcher's methods, graphs, or use of terminology. 

The dungeon theme comes from my memories of the game Dungeon Keeper. I always loved the idea of a dungeon that needs to be managed in mundane ways. Thus was born the "exciting" day to day life of the dungeon Institutional Review Board.

Intellgient Tutor: Picture Algebra

This project was part of as well as an extension of my forgetting study. Many of the findings of the link below can be found in the interactive document of the forgetting study. The study focused on a data set consisting of students using an intelligent tutor in a picture algebra unit.

The key take-away is that particular skills (or knowledge components) appear more prone to decay in predicted mastery over time than other skills. I redesigned the picture algebra tutor to provide targeted personalized practice on skills that may be prone to forgetting. Once a student's mastery is predicted to have dipped below some set threshold, they may receive practice targeting that specific skill as opposed to the entire problem that may consist of many mastered steps. The tutor mitigates forgetting and provides more efficient personalized learning. 

Potato Famine

Potato Famine started as a joke idea for a board game that soon began developing into a riveting game of blight survival. Currently in early stages of design. 

Can you survive the blight?

Coming soon (or eventually)!


Blueprint is a peer to peer app that encourages kids to explore their interests and provide feedback to other students. Through careful scaffolding the app strives to move beyond “Good job!” feedback, and helps students engage at a more meaningful level. Feedback is an essential component to learning and developing a skill set, by harnessing crowd knowledge our team believes we can enable students to further develop their skill sets.

Intelligent Tutor: Statistical Validity

Students often struggle when reasoning about cause-and-effect relationships and interpreting research designs. A basic understanding of this topic helps all people act and behave as informed citizens. So, I created an e-learning module using design research and established scientific findings to help students learn and recognize causal claims and common threats to their validity. This project was my first major foray out of the lab and into educational applications created through design methodologies. 

First, the module was developed by setting the scope through definitions of learning goals. The goals were then narrowed down into a reasonable project. Next, I developed assessments and tested them on novices which in turn uncovers the concepts or skills that are particularly difficult. I then conducted a cognitive task analysis with two domain experts. Finally a number of iterative prototypes were developed into a final product.

Intelligent Tutor: Probability

I have long been interested in mitigating student forgetting through educational tools, and so in this project I tried to push the limits of what I could do with Adobe Captivate. I chose introductory probability as the learning domain as it is relatively simple. The goal was to add mastery learning and decay of mastery over time in a simple module. I settled with implementing standard Bayesian Knowledge Tracing using learner variables captured in JavaScript. The variables were then used to lock or unlock paths through the modules depending on whether the student was predicted to have the prerequisite knowledge.


While the project was largely successful, the main complications came from the way Captivate handles quizzes. The quiz system is too rigid and it's nearly impossible to generate quizzes of any length from a pool of questions or randomly generated questions. 


In this project I worked with a small team challenged with finding a way for students, staff, parents, and teachers to easily and safely capture information and report school safety concerns to authorities. In response to this challenge, my team conducted user research and created an interface design for a mobile app to combat high school bullying. 

Lookout is a mobile app with an optional recording device that can be attached to the users clothes. The wearable hypothetically can recognize and react to incidents in the environment through a machine learning classifier. The wearable takes inputs but does not share information to any outside users. It's purpose is purely for detection and sending prompts to users. For example, if the user or someone nearby is using language reminiscent of bullying, the detector pushes a message to the student to inform them about their choice of language, or if necessary suggests actions to students to find help. Additionally, Lookout allows students to anonymously take and send photos or messages about school safety issues or bullying incidents to school administrators. 


In the summer of 2015 I worked as a graduate student intern at Carnegie Mellon University with Dr. Noboru Matsuda on the SimStudent project. My goal within the project was to identify ways to characterize students' sub-optimal learning behaviors by leveraging the scientific literature as well as exploratory data analysis to translate student log data and effectively operationalize behaviors of interest for detection by a search algorithm. 

Furthermore, I developed algorithms in R for detecting these sub-optimal behaviors. The end goal is to use such algorithms to detect student behavior in real-time so as to provide online suggestions that guide students towards behaviors that improve learning outcomes. 

Intelligent Tutor: Statistics

In this project I developed a example tracing tutor for a statistics module using CTAT authoring tools and Flash. The primary purpose of the tutor was to present students with a problems represented in words, graphs, or formal mathematics and they had to correctly match the given representation with the appropriate alternate representation i.e. given this equation which of these graphs best represent it. 


The details of this project have sadly been lost in the great hard drive crash of 2016 and I therefore do not have any pictures or examples of the tutor.  

Translating Problems for Far Transfer

This goal of this project is to counter difficulties students have when trying to apply mathematical concepts across many contexts. It's common that learning materials focus on a few simplified contexts early in learning. For example, in probability we tend to see problems posed as coins and cards. The problem then is that students understand how to solve coin and card problems but cannot easily transfer this knowledge to new contexts.


I've for some time played around with creating a modeling language to help ground mathematical or statistical concepts in simple and standard graphical representations. The dream is that students will learn how to translate problems into a standard language and this may provide a means for more general far transfer of learning. This is similar to saying, if you understand probability with coins, it may be useful to learn the skill of translating problems in other contexts into coin problems to capitalize on your knowledge rather than hoping for spontaneous transfer. 

Temporal Dynamics of Memory

This is my thesis work at Indiana University. We developed a dynamic process model of memory and focused on perceptual encoding processes. We found evidence that information sampling is ongoing during encoding of stimuli and may precede the onset of the accumulation process that drives recognition decisions.


I ran a number of experiments varying the diagnosticity of information. The results show patterns of behavior that fall out of the predictions of our model and cannot be readily explained by previous models. 

Pedagogical Bayes

This is my undergraduate honors thesis and the winner of the UC Berkeley Cognitive Science Department's distinguished research prize. The research explored a Bayesian model of pedagogical reasoning that predicts that students may make stronger inferences in their learning under the assumption that a teacher is selecting information with pedagogical intent. The mechanisms underlying this process may provide some explanation of how humans accumulate knowledge over generations. 

Models and Simulations for Science Education

A Literature review exploring the use of models and simulations as tools for explanation in both science and education. A major approach to science education reform has been to note the importance of modeling and simulations as key methods used by scientists to represent theories to each other. The ubiquitous role of modeling in scientific practice might suggest a similar role in classrooms. This paper examines how scientists think in practice to provide insights into how students might reason similarly in classrooms. 

Causal Reasoning

A literature review exploring causality and the ways that people perceive, infer, and reason with causal structures. I examined a number of formal models, particularly Bayesian networks for they are often held as the normative theory of causal reasoning. Ultimately I provide findings that demonstrate that human causal reasoning does indeed rely on information and representations that fall outside of the best normative models. 

Categorization and Recognition

A literature review examining relationships between the processes of episodic memory and categorization. Memory storage and perceptual categorization involve knowledge structures derived from experience, but many theories posit distinct cognitive systems to explain phenomena. This paper explores the similarities and differences in representations and processes that support memory and categorization. I attempt to uncover evidence that either supports unifying theories or keeping them as separate distinct processes. 

Cultural Transmission

This project explored a model of cumulative cultural evolution. This is a process by which humans increase knowledge over multiple generations. While the model is essentially a search to minimize error, it is achieved through a sort of swarm intelligence. The cover story is that each node is a human, and humans need spears get food. The search space is a spear with numerous discrete and continuous variables that determine the quantity of food gathered.  Humans are allowed to make small adjustments to their spears and communicate with their neighbors. In this way, optimal spears can be quickly found and spread throughout the network. 

Please reload

Tools and Languages:

Django Framework
Python, SQL, HTML, CSS, Javascript

Related Project:


Tools and Languages:



Independent Study & Applied

Machine Learning - Spring & Summer 2017


Tools and Languages:

R, RMarkdown, Shiny, Java, XML, HTML, WEKA

Capstone Project:

Spring & Summer 2017

Tools and Languages:

Axure, Invision, Figma, InDesign


Contextual interviews, surveys, affinity diagramming, journey mapping, personas, rapid prototyping, user testing


Design of Educational Games - Spring 2017

Tools and Languages:

GameMaker Studio 2


Cognitive task analysis, interviews, paper prototyping, play testing


Personalized Online Learning - Spring 2017

Tools and Languages:

Jess, CTAT Authoring Tools


Cognitive task analysis, User testing


Learning Media Design - Fall 2016

Tools and Languages:

Axure, Invision, Figma, InDesign


Contextual interviews, affinity diagramming, journey mapping, personas, rapid prototyping


E-Learning Design Principles - Fall 2016

Tools and Languages:

Adobe Captivate


Interviews, cognitive task analysis, surveys, prototyping, user testing


Tools for Online Learning - Fall 2016

Tools and Languages:

Adobe Captivate​, JavaScript


Cognitive task analysis, prototyping, user testing


Interaction Design Overview - Fall 2016

Tools and Languages:

Invision, ​Figma, InDesign, Photoshop


Contextual interviews, affinity diagramming, journey mapping, personas, storyboards, rapid prototyping

Tools and Languages:

R, Excel

Tools and Languages:

Flash, CTAT

Tools and Languages:

R, Python

Tools and Languages:


Tools and Languages: