I am a Ph.D. student in the Code & Cognition Lab at the University of Washington Information School, advised by Prof. Andy Ko.

Prior to attending UW, I spent three years as a student at MIT researching how developing apps with MIT App Inventor translates to learning computational thinking skills.

My research interests involve applying machine learning and HCI techniques to understand how people learn computing in informal and online environments.

My objective is to understand how we learn computing outside of classrooms to make this learning process more connected, relevant, and enjoyable.

Research Interests

  • Computing Education
  • Human-Computer Interaction
  • Learning Analytics
  • Educational Data Mining

News & Updates


  • Ph.D. 2016-2021 (expected)

    Information Science

    University of Washington

  • M.Eng. 2015-2016

    Electrical Engineering & Computer Science

    Massachusetts Institute of Technology

  • S.B. 2011-2015

    Computer Science & Engineering

    Massachusetts Institute of Technology

Active Projects

  • PL Tutor (9/2016-)

    PL Tutor (9/2016-)

    Teaching code comprehension by visualizing the execution process

    This work holds the promise to lowering the barrier of entry to learning programming by learning to read code separately/before learning to write code.

    Think back to when you learned your first natural language (e.g. English). You learned to read and comprehends letters, then words, then sentences. Only after you had some understanding of how to read did you learn how to write.

    Now think about how we teach programming. We try to teach people to read and write code simultaneously, which is a huge cognitive load.

    PL Tutor teaches people just how to read/comprehend code by visualizing and explaining the execution of pre-defined code that covers basic CS1 concepts.

    Working with Greg Nelson (UW CSE PhD Student).

  • Role of Identifier Names in Code Comprehension

    Role of Identifier Names in Code Comprehension

    Investigating how novices use names of identifiers to develop program understanding

    This work contributes to the long-term vision of understanding  the process in which novices comprehend code.

    If we replaced all variable names with a random single letter, how would the process of comprehending the code change? I am investigating how novices use identifier names to contextualize code and develop an understanding of what the code does.

    Working with Harrison Kwik (UW CSE Undergrad)