The intersection of math, computers, and everything else | MIT News
Shardul Chiplunkar, a senior in Course 18C (mathematics with computer science), entered MIT interested in computers, but soon he was trying everything from spinning fire to building firewalls. He dabbled in audio engineering and glass blowing, was a tenor for the MIT/Wellesley Toons a capella group, and learned to sail.
“When I was entering MIT, I thought I was just going to be interested in math and computer science, academics and research,” he says. “Now what I appreciate the most is the diversity of people and ideas.”
Academically, his focus is on the interface between people and programming. But his extracurriculars have helped him figure out his secondary goal, to be a sort of translator between the technical world and the professional users of software.
“I want to create better conceptual frameworks for explaining and understanding complex software systems, and to develop better tools and methodologies for large-scale professional software development, through fundamental research in the theory of programming languages and human-computer interaction,” he says.
It’s a role he was practically born to play. Raised in Silicon Valley just as the dot-com bubble was at its peak, he was drawn to computers at an early age. He was 8 when his family moved to Pune, India, for his father’s job as a networking software engineer. In Pune, his mother also worked as a translator, editor, and radio newscaster. Chiplunkar eventually could speak English, Hindi, French, and his native Marathi.
At school, he was active in math and coding competitions, and a friend introduced him to linguistic puzzles, which he recalls “were kind of like math.” He went on to excel in the Linguistics Olympiad, where secondary school students solve problems based on the scientific study of languages — linguistics.
Chiplunkar came to MIT to study what he calls “the perfect major,” course 18C. But as the child of a tech dad and a translator mom, it was perhaps inevitable that Chiplunkar would figure out how to combine the two subjects into a unique career trajectory.
While he was a natural at human languages, it was a Computer Science and Artificial Intelligence Laboratory Undergraduate Research Opportunities Program that cemented his interest in researching programming languages. Under Professor Adam Chlipala, he developed a specification language for internet firewalls, and a formally verified compiler to convert such specifications into executable code, using correct-by-construction software synthesis and proof techniques.
“Suppose you want to block a certain website,” explains Chiplunkar. “You open up your firewall and enter the address of the website, how long you want to block it, and so on. You have some parameters in a made-up language that tells the firewall what code to run. But how do you know the firewall will translate that language into code without any mistakes? 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 guarantee.”
He has 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 in the Tenenbaum lab in MIT’s Department of Brain and Cognitive Sciences.
“In regular programming languages, the basic data you deal with, the atoms, are fixed numbers,” says Chiplunkar. “But in probabilistic programming languages, you deal with probability distributions. Instead of the constant five, you might have a random variable whose average value is five, but every time you run the program it’s somewhere between zero and 10. It turns out you can compute with these probabilities, too — and it’s a more powerful way to produce a computer model of some aspects of human cognition. The language lets you express concepts that you couldn’t express otherwise.”
“A lot of the reasons I like computational cognitive science are the same reasons I like programming and human language,” he explains. “Human cognition can often be expressed in a representation that is like a programming language. It’s more of an abstract representation. We have no idea what actually happens in the brain, but the hypothesis is that at some level of abstraction, it’s a good model of how cognition works.”
Chiplunkar also hopes to bring an improved understanding of modern software systems into the public sphere, to empower tech-curious communities such as lawyers, policymakers, doctors, and educators. To aid in this quest, he’s taken courses at MIT on internet policy and copyright law, and avidly follows the work of digital rights and liberties activists. He believes that programmers need 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 surgery assistant, or how a law about data storage needs to be updated for modern systems,” he says. “I think that creating better conceptual 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 computing industry — and myself — to be better able to engage with a wider audience.”