I'm always exploring

I am a third-year undergraduate student at UC Berkeley, where I am a member of the Software Productivity Lab advised by Koushik Sen. I've worked on research exploring new approaches to metaprogramming, systems for seamless language interoperability, automatic parallelization of dynamically-typed programs, and more. I will be graduating in Spring 2021 and plan to start a PhD program in Fall 2021.
My research is driven by the shortcomings in modern programming systems: programming languages that offer a confusing mix of tradeoffs, complex systems that make integrations brittle and inefficient, and tooling that has limited insight into the intent of the developer. In my research, I explore the boundaries of type systems, functional programming, metaprogramming, and program synthesis along with attendant innovations that apply these features in systems to make software development more efficient, scalable, and enjoyable.


Fluid Quotes

A new approach to metaprogramming that enables quoted code to flow alongside runtime code while expanding at compile time. By tracking captured code through dependent types, fluid quotes can be passed across abstraction boundaries, making them ideal for libraries that want to apply metaprogramming but not limit the modularity of user code.


An interop layer for using Python libraries in Scala applications. Allows developers to maintain type safety by creating type definitions for Python libraries and supports compilation to native code for efficient interop. ScalaPy also integrates tightly with the underlying Python interpreter to synchronize the Scala and Python heaps and enable bidirectional memory access.


Shadaj Laddad and Koushik Sen, "Fluid Quotes: Metaprogramming across Abstraction Boundaries with Dependent Types," in 19th International Conference on Generative Programming: Concepts & Experiences (GPCE'20). (pdf)
Shadaj Laddad and Koushik Sen, "ScalaPy: Seamless Python Interoperability for Cross-Platform Scala Programs," in 11th ACM SIGPLAN Scala Symposium (Scala'20). (pdf)