I am a Visiting Assistant Professor. I work in the theory of programming languages. I shall be teaching the course 'Type-Theoretic Foundations for Reliable Software Design' (CMSC 395) this semester.
If you are interested in doing your senior thesis with me, please feel free to send an e-mail. I am interested in advising projects in programming languages and CS theory. Below, I list two possible projects. However, I am always open to advising other projects that are within my areas of expertise.
1. Designing a Simple Functional Programming Language: Functional programming languages are widely appreciated for implementing mathematically-structured programming paradigms, which enable verification of properties of object programs. Two well-known functional programming languages are Standard ML and Haskell. These two and other such languages are based on typed Lambda Calculi. The aim of this project is to design and implement a functional programming language based on the simplest of all typed Lambda Calculi, the Simply-Typed Lambda Calculus. The core components of the project are: designing a parser, a type-checker and an evaluator for the proposed language. Once the core components are implemented, the project can be extended in many interesting ways.
References:
a) THE IMPLEMENTATION OF FUNCTIONAL PROGRAMMING LANGUAGES. Simon L. Peyton Jones. PRENTICE HALL. 1987.
b) TYPES AND PROGRAMMING LANGUAGES. Benjamin C. Pierce. MIT PRESS. 2002.
2. Use of Type Systems in Designing Domain-Specific Languages: Domain-specific languages are designed to cater to the needs of a specific domain. A plethora of domain-specific languages are used in practice: database query languages, languages for implementing security features, etc. Some of these languages employ type systems to achieve their ends. The aim of this project is to understand how type systems can help in the design of domain-specific languages. Based on the interests of the student, a specific domain may be selected and the role of type systems in designing languages for that domain explored.
References:
a) The Power of Pi. Nicolas Oury and Wouter Swierstra. ICFP '08.
b) Monadic and Comonadic Aspects of Dependency Analysis. Pritam Choudhury. OOPSLA '22.