Welcome to, academic home of Gregor Richards.

I teach at the University of Waterloo School of Computer Science. My office is DC2508. When applicable, my office hours are listed on the course web page of the course I am currently teaching. Students are advised to look there.

Feel free to email me at .


In the winter of 2019 I am teaching CS842: Virtual Machines for Dynamic Languages.

Past teaching at Waterloo


My research is in programming language and virtual machine design, in particular dynamic and gradually-typed languages. I am interested in designing a gradually-typed superset of JavaScript which

My current projects are

I am a member of the Programming Languages Group at Waterloo.



At my heart I'm a coder. When I learn something new from research, the itch to actually code it up is almost unbearable. Here are a few things I've written that could potentially be useful or interesting to others:


Everybody needs a life outside of research, right? I write music in a neoromantic style influenced by Borodín, Chopin, and various other composers who I'm not particularly worthy of comparing myself to. More information is available on my music page.


At the moment, (slightly) more useful information on me can be found at my personal homepage, Interested in my hat collection? You can decide which one I'll wear!