Making computation come alive

Youssef Marzouk, professor of aeronautics and astronautics and co-instructor for the 16.0002/18.0002 course this term.
Photo: Gretchen Ertl
Youssef Marzouk, professor of aeronautics and astronautics and co-instructor for the 16.0002/18.0002 course this term
Youssef Marzouk, professor of aeronautics and astronautics and co-instructor for the 16.0002/18.0002 course this term.
Photo: Gretchen Ertl

A new course teaches students how to use computational techniques to solve real-world problems, from landing a spacecraft to placing cell phone towers.

Adam Zewe|MIT News Office
January 6, 2022
Categories: Academics, College News

As a Martian lander descends toward the Red Planet’s surface, when can its parachute be safely deployed? Open it too early, while the lander is hurtling through the atmosphere, and it might tear off — but open it too late and the lander might not slow down enough to prevent a catastrophic crash landing.

There are seemingly endless possibilities in this complex conundrum.

One way to solve this puzzle is to use a computer to simulate the Mars landing, which is exactly how students in 16.0002/18.0002 (Introduction to Computational Science and Engineering) answered this question, which was part of their very first problem set.

“It was interesting because there are a few ways you can model the problem,” says Andres Arroyo, a first-year student who took the course during the fall term. “You can model it in terms of how the speed of the lander changes over time or how the speed changes as it changes position. Depending on what your goal is from the simulation, you might try different approaches. I thought that was one of the most interesting things we did.”

The course, launched last fall, is designed to teach students how computation collides with the physical world. It was developed through the MIT Schwarzman College for Computing’s Common Ground for Computing Education, a multidepartment initiative that aims to blend the teaching of computing and other disciplines.

The half-semester course places programming in the context of computational science and engineering, a field that focuses on innovative applications of computation.

Students learn to use computer programs for simulation, optimization, and uncertainty quantification. These foundational principles are framed with tangible examples designed to be relatable to students who aren’t necessarily computer science majors. Most students in the course this fall were either studying aeronautics and astronautics or math.

Modeling real-life problems

“Simulations like our Martian lander simulation are what people actually use computers for. Did NASA solve our little differential equation? No, I’m sure they have many more bells and whistles in their model. But conceptually, this is what people actually do,” says Youssef Marzouk, professor of aeronautics and astronautics and co-instructor for the course this term. “This is how I work, even in my own research. There is the modeling, there is the code, there are the outputs of the code, and you iterate between these things.”

Building the course around such concrete examples gives students a sense of how many problems can be approached using computational models. Most students take the course in their first or second year, and many have yet to pick a major, so it is especially valuable to give them a taste of how computation is applied in many fields, he says.

In developing the course, the faculty wanted to cover the basic aspects of computational science and engineering in a way that would make the concepts come alive to students, says co-instructor Laurent Demanet, professor of applied mathematics, who designed the course with David Darmofal, the Jerome C. Hunsaker Professor of Aeronautics and Astronautics.

Lectures cover the fundamental equations at work in a certain problem, such as Newton’s law of motion for the Mars lander example, and then students learn to express those basic equations in an algorithm.

“It is the combination of math with science and computer science. It sings when you put it all together,” Demanet says. “For the students, it is really a skills-based class. We want to provide students with skills that can be used almost everywhere in their studies later on, and then in so many other domains as well.”

From equations to simulations

During one lecture, Demanet described Newton’s law of cooling (the rate at which an object cools is proportional to the temperature difference between the object and its surroundings). Then he ran a simulation using Python code that showed how long it would take a cup of coffee to cool from 85 to 50 degrees.

One of the biggest challenges of developing the course has been introducing these mathematical concepts while giving students enough context that they make sense for some contemporary applications — but without overwhelming them with too many details, he says.

Beyond imparting concrete skills, the examples are also designed to inspire students. For instance, one lecture that focused on climate science used mathematical equations for heat transfer to debunk a false claim that water vapor is a more potent greenhouse gas than carbon dioxide.

But Demanet told the students not to take his word for it — he demonstrated a computer simulation that showed how greenhouse gases have affected the overall rise in global temperature over many decades.

Outside the classroom, students applied their computational chops to a wide range of real-world problem sets, from optimizing the placement of cell phone towers around MIT, to charting how Covid-19 vaccine effectiveness wanes over time, to evaluating the impact a geothermal heating system could have on the temperature inside a home.

For Penelope Herrero-Marques, the geothermal example piqued her interest because she’d like to install a system in her own home someday to reduce her carbon footprint. Herrero-Marques, a sophomore majoring in mechanical engineering who took the course last spring, was drawn to its relevant problem sets even though she had little background using computational approaches.

“Some of the problems were a bit scary at first just because they were so big. For our first p-set in the class we are supposed to model the Mars landing. But the professors did a good job breaking it down into smaller problems. Don’t get overwhelmed. Each big problem can be broken down into smaller problems that you are actually able to tackle,” she says.

She is now sharing that wisdom as a teaching assistant for the course.

Fellow teaching assistant Mark Chiriac, a sophomore, took the course in its first iteration. The math major wanted to learn more about algorithms but also focus on applications he found interesting, like planetary motion.

While one of the trickiest problems involved locating cell phone towers around MIT, it was also among Chiriac’s favorites because the example was so realistic. Successfully solving that optimization problem gave him the confidence to apply those skills in other courses, he says.

“This course puts together parts of coding, math, and physics in this beautiful blend to give everyone the tools to tackle very relevant problems that are necessary in our world right now. It showed me how these different areas of science tie together in ways that I knew existed, but had not yet experienced for myself,” he says.

Ultimately, the skills students build in this course will help them tackle scientific prediction problems in whichever discipline they choose, Demanet says.

“I hope the students walk away with an appreciation of how computation can be used to really simulate complicated things in the world around them,” Marzouk adds. “I hope they see the power that it has and have some appreciation that it is not just a black box. There are really interesting ideas and algorithms that go into how that happens. Whether they spend the rest of their career learning about those ideas and algorithms or whether they stop right here, I think that is a valuable takeaway.”