About me

I am trained in the field of Programming Languages and are looking for impact in other fields, especially in CS Education. My other academic background also includes Bioinformatics, in which I had a Bachelor's degree, and (Bio)statistics, in which I have been constantly taking courses. I also know a little about Cognitive Science, Linguistics, and Human-Computer Interaction by taking courses and talking to people in those areas.

Currently, I am a 3rd-year doctoral student at Brown University, advised by Shriram Krishnamurthi. Here I did some works on type system × tabular data and some works on gradual typing × Python. Now I am working on CSEd Research. More specifically, I focus on teaching the semantics of programming languages.

I was a MS CS student at Indiana University. I worked on Gradual Typing and relational programming. Jeremy Siek advised my master's thesis.

I was a Bioinformatics undergrad at Shanghai Jiao Tong University, advised by Chaochun Wei.

To see my publications, please visit my ORCID page.

On-going projects

SMoL Tutor: an intelligent tutoring system for teaching the semantics of programming languages (i.e., how programming languages "work"). This systems is being used in course CSCI1730 at Brown University. Contact me or Shriram to access the code of the system.

Stacker (available on GitHub): a notional machine (a presentation of how computer programs execute). This notional machine is designed help studensts form good mental models of scope, mutable variables, mutable data structures, and first-class functions. It is implemented as a GUI software application running on top of Racket.


The fundamental questions about education research are what to teach (which can be answered by envisioning the future society) and how to teach (which can only be answered by trying various teaching approaches, although heuristics can be drawn from several fields).

I create SVG animations for fun.

Scheme and Agda are my favorite programming languages. (But honestly, bad languages with good IDEs are generally way better than good languages with bad IDEs.)

Pyret does a great job in defining the notions of equality.

I found λ-expressions look lovely.

The background of this page looks interesting? Learn its story here.

Let us ask, Does it contain any abstract reasoning concerning quantity or number? No. Does it contain any experimental reasoning concerning matter of fact and existence? No. Commit it then to the flames: for it can contain nothing but sophistry and illusion.
— David Hume, An inquiry concerning human understanding

Recommended resources