Caspar Popova

Photo of Caspar

 

Please provide a brief summary of your research.
My work is part of a larger research project by Prof. Christos Dimoulas and PhD student Lukas Lazarek that studies how we can evaluate the usefulness of programming language features. In this specific project, we are interested in the features of type checking and blame reporting in gradually typed languages – languages such as Typed Racket that allow programmers to add type annotations to where they think is most useful, creating interactions between typed and untyped code. We evaluate usefulness based on how often a simulated programmer manages to determine the location of a type mismatch in a buggy program using the language-provided features across a suite of debugging scenarios.

Empirical research with this method so far indicates that, despite its theoretical superiority, Typed Racket is only marginally more useful than other academic and industrial gradually typed languages. However, the results are based on debugging scenarios that do not have the complex, so-called higher-order interactions between program components that theory says give an advantage to Typed Racket.

My research aims to create a new suite of debugging scenarios to properly evaluate Typed Racket. To do so, I am designing and implementing a generator for programs that takes in a specification describing the interactions between program components. By enumerating specifications with various degrees of higher-orderness, we will construct a new suite of debugging scenarios to evaluate Typed Racket.

What made you interested in pursuing (interdisciplinary) research more broadly?
I really enjoyed learning about programming languages in CS 321 and getting a taste of more advanced PL topics. I was also curious to see what research in computer science was like.

Describe your experiences with research thus far. Was it tricky? What skills do you think you’ve gained?
Research has been a really rewarding experience. The most difficult part for me was training because I was learning really in-depth about topics that I had never been exposed to before. There are also skills in research that it takes a while to develop, like reading papers (I am still working on this!). I’ve gained skills in managing my own projects/time and communicating both the successful results of research and when something is stuck. I enjoy the aspect of problem solving necessary for research.

Any tips or advice you have for students similar to you that are interested in pursuing undergraduate research?
Many labs/groups/professors have a track of undergraduate and graduate courses that will prepare you for research in their area. At least, this is what I heard from CS research workshops, and I’m sure it’s true more broadly, so don’t hesitate to ask professors how you can prepare academically to do research.

If you had unlimited time, money, resources, support, etc. what is something you would research?
How to slow down/stop/reverse climate change.

What meme lives rent free in your head?
It’s about drive it’s about power