About me

I am a 4-th year PhD candidate at Brown University, advised by Shriram Krishnamurthi, and doing research on Computing Education, Formal Methods, and their intersection. Please check my ORCID page for publications and my other academic backgrounds.

I am looking for an industrial job related to any combination of programming languages, education, and statistics. I will be available for work starting from mid 2025.

I was an M.S. in Computer Science 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.

On-going Research Projects

SMoL Tutor: an intelligent tutoring system for teaching the semantics of programming languages (i.e., how programming languages "work"). This system has been used at Brown and a few other institutions around the world. Please contact me or Shriram to get a copy of the system.

Stacker: a notional machine (a presentation of how computer programs execute). This notional machine is designed to help students 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.

Teaching

Services

Opinions

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

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 of defining the notions of equality.

I found λ-expressions look lovely.

Do you find the background of this page interesting? Learn its story here.

Recommended resources