I am a senior pursuing mathematics and computing at the Indian Institute of Science in Bengaluru. I am interested in software engineering research, specifically in techniques for testing and improving the quality of software. Large language models (LLMs) have shown great promise in automating such tasks with high precision, and I am excited about exploring their applications in this domain. Before coming to Bengaluru, I lived in Noida for over 18 years.
I am currently seeking PhD opportunities in software engineering for Fall 2026.
I began my research in software engineering by working on code translation (between programming languages) validation with Salman Abid, Darko Marinov, Saikat Dutta, and other collaborators. We developed GlueTest, a framework for incrementally testing code translations using language-interoperability. (ICSME NIER '24. Blog post.)
I also contributed to the AlphaTrans project during a summer internship at UIUC where I worked with Ali Reza Ibrahimzada, Reyhaneh Jabbarvand, Darko Marinov, and other collaborators on automated code translation of entire repositories using LLMs. I was particularly involved in adapting GlueTest to validate LLM-generated code translations of individual functions in isolation. This enabled precise detection and localization of bugs to provide feedback to the LLM for repair. (FSE '25. Blog post.)
I am currently working as a Research Intern with Aseem Rastogi, Nikita Yadav, and other collaborators in the Future of Scalable Software Engineering (FoSSE) team of Microsoft on automatically triaging and fixing static analysis alerts reported by CodeQL, Roslyn Analyzers, and other static analyzers. Our work has reduced developer toil in improving software security and reliability across hundreds of codebases. (Related blog post.)
I have been collaborating with Lize Shao, Wenxi Wang, and others from the University of Virginia on automated detection of ambiguities in Internet Protocol specifications (RFCs) using LLMs. Our work has found several previously unreported ambiguities in recent RFCs, many of which have been verified as official errata. (Draft, Poster, Slides, Video, Blog post.)
I have also briefly worked with Utah PLT through UCSC OSPO on benchmarking the performance of Static Python with different levels of gradual typing. (Blog posts 1, 2, 3.)
I started my undergraduate research journey with Viraj Kumar with whom I have had the pleasure to discuss and explore several interesting topics related to software engineering education. One line of my work with him involved creating GuardRails, a tool to help students write better specifications by automatically discovering ambiguities in their function specifications. We also developed Probeable Problems which challenge students to ask clarifying questions about the problem statement presented to them. (ICER '24. COMPUTE '23. Blog post.)
The explanation for this is that Mrigank means "deer-marked," coming from the combination, i.e., the samaas, of the Sanskrit words mriga (meaning "deer") and anka (meaning "mark" or "spot"). Though it has been used poetically to describe the moon in many Indian texts, it is not clear to me why the moon would be thought of as deer-marked. I have come across the following two theories.
While this may not in itself be very convincing, there is evidence from Indian literature that points toward this meaning. Some examples are listed below.
I am committing 1 hour every week to help high school and undergraduate students with guidance related to academics, career, research, or anything else they would like to discuss. You can book a 30-minute slot with me using this Calendly link.