Shardul Chiplunkar, a senior in 18C (Mathematics with Computer Science), entered MIT interested in computers, but soon tried everything from starting fires to building firewalls. He dabbled in audio engineering and glassblowing, served as a tenor for the MIT/Wellesley Toons a capella group, and learned to sail.
“When I came to MIT, I thought I was just going to be into math and computer science, academics and research,” he says. “Now what I appreciate the most is the diversity of people and ideas.”
Academically, he focuses on the interface between people and programming. But his extracurriculars helped him understand his secondary purpose, to be a sort of translator between the technical world and professional software users.
“I want to create better conceptual frameworks for explaining and understanding complex software systems, and develop better tools and methodologies for large-scale professional software development, through fundamental research on programming language theory and interaction man-machine,” he says.
It’s a role he was practically born to play. Raised in Silicon Valley when the dotcom bubble was at its height, he was drawn to computers from an early age. He was 8 years old when his family moved to Pune, India for his father’s job as a network software engineer. In Pune, her mother also worked as a translator, editor and radio news presenter. Chiplunkar was eventually able to speak English, Hindi, French and his native Marathi.
At school, he actively participated in math and coding contests, and a friend presented him with language puzzles, which he recalls “were a bit like math.” He then excelled at the Linguistic Olympiad, where high school students solve problems based on the scientific study of languages - linguistics.
Chiplunkar came to MIT to study what he calls “the perfect major,” the 18C course. But as the child of a technician father and a translator mother, it was perhaps inevitable that Chiplunkar figured out how to combine the two subjects into a single career trajectory.
While he was good at human languages, it was an undergraduate research opportunity program in the Computer Science and Artificial Intelligence Laboratory that cemented his interest in programming language research. Under the direction of Professor Adam Chlipala, he developed a specification language for Internet firewalls and a formally verified compiler to convert these specifications into executable code, using software synthesis and proof-by-construction techniques.
“Suppose you want to block a certain website,” says Chiplunkar. “You open your firewall and enter the address of the website, how long you want it blocked, etc. You have settings in some made-up language that tell the firewall what code to run. But how do you know that the firewall will translate this language into code without any errors? That was the essence of the project. I was trying to create a language to mathematically specify the behavior of firewalls, and to convert it into code and prove that the code will do what you want it to do.The software would come with a mathematically proven warranty.
He also explored adjacent interests in probabilistic programming languages and program inference through cognitive science research, working under Professor Tobias Gerstenberg at Stanford University and later under Joshua Rule at the Tenenbaum Laboratory in the Department of Brain and Cognitive Sciences at MIT.
“In classic programming languages, the basic data you deal with, atoms, are fixed numbers,” says Chiplunkar. “But in probabilistic programming languages, you deal with probability distributions. Instead of the five constants, you could have a random variable whose average value is five, but every time you run the program, it’s between zero and 10. It turns out that you can also calculate with these probabilities – and it’s a more powerful way to produce a computer model of certain aspects of human cognition.Language allows you to express concepts that you don’t could not express otherwise.”
“Many of the reasons I love computational cognitive science are the same reasons I love programming and human language,” he explains. “Human cognition can often be expressed in a representation that resembles a programming language. It’s more of an abstract representation. We have no idea what’s actually going on in the brain, but the assumption is that at some level of abstraction, it’s a good model of how cognition works.
Chiplunkar also hopes to bring a better understanding of modern software systems into the public sphere, to empower technology-curious communities such as lawyers, policymakers, doctors, and educators. To help in this quest, he has taken courses at MIT on Internet policy and copyright, and avidly follows the work of digital rights and freedoms activists. He believes that programmers need a fundamentally new language and concepts to talk about the architecture of computer systems for broader societal purposes.
“I want us to be able to explain why a surgeon should trust a robotic surgical assistant, or how a data storage law needs to be updated for modern systems,” he says. “I think creating better design languages for complex software is just as important as creating better practical tools. Because complex software is now so important in the world, I want the computer industry – and myself – can better interact with a wider audience.