Between Three Worlds

There are more things in science and engineering, Horatio, than are dreamt of in your departmental curricula
Dec 2020
Elizabeth
Q.
Computational Science and Engineering

“So are you an aerospace engineer or a mathematician?” asked my interviewer.

I grinned. I was applying for a job in an applied math department, and with two degrees (bachelor’s and master’s) in aerospace engineering, I was expecting some form of this question.

“I’m a computational engineer,” I replied.

What’s a computational engineer?

You might be thinking: A what, exactly? You mean a computer engineer? Like a computer scientist? So you write software?

But no, that’s not what I mean and that’s not what I am and that’s not (quite) what I do. I’m a PhD candidate in computational engineering, which is its own discipline that seeks to develop new algorithmic tools to support engineering decision-making, as well as their mathematical foundations. Computational engineering is closely related to computational science, which seeks to develop new algorithmic tools to support scientific discovery. These two fields lie at the intersection of applied math, computer science, and engineering and scientific application, and are often lumped together as Computational Science & Engineering (CSE). Crucially, no single department can “own” CSE as a discipline — that’s why MIT offers a variety of CSE PhD degrees through the interdisciplinary Center for Computational Science & Engineering.

CSE is both a foundational and an applied field, whose methods elucidate and exploit connections across engineering and scientific disciplines. Science and engineering both increasingly rely on advanced computational tools to simulate complex systems and analyze big data sets in applications ranging from imaging black holes to designing new drug molecules to simulating conditions inside a nuclear reactor. This broad applicability is what makes CSE fun! As a researcher developing computational methods, you get to see your math and algorithms applied to problems across science, engineering, and medicine.

CSE has awareness and accessibility problems

If this is the first time you’re learning about CSE despite being a STEM fanatic of some persuasion, you’re not alone. I certainly didn’t know about its existence as a field until later in college—partly because CSE lives in the unenviable position shared by most interdisciplinary fields of never being truly accepted by any of its constituent departments. Mathematicians see us as too applied; computer scientists scoff at our high-level programming languages; old-school engineers roll their eyes at our simulations. These strict disciplinary attitudes manifest themselves in undergraduate engineering curricula that relegate CSE thinking to elective subjects for advanced undergraduates - basically the equivalent of hiding a book on a dusty top shelf. It’s there if you know it and want it, but you’re likely to miss it while you’re slogging through your core engineering classes in fluid dynamics, thermodynamics, materials & structures, and signals & systems. I would know - as an undergraduate in aerospace engineering at MIT, only about a quarter of my undergrad cohort took the upper-level elective 16.90, Computational Methods in Aerospace Engineering (OCW link).

CSE also suffers from a second interdisciplinary malady which I’ll describe as being too interdisciplinary. In addition to application field knowledge, work in CSE requires a strong math background, including at least linear algebra (which most MIT engineering departments don’t require), and comfort programming in at least a high-level language like MATLAB, Python, or Julia. These requirements make it so that even interested undergraduates often don’t have the necessary background to work in CSE until the end of their junior year. And because these prerequisites are so numerous and daunting, my sense is that many talented undergraduates simply enter other fields with lower barriers to entry in their early college years and become too invested in them to give CSE a shot later on.

Creating a new gateway to CSE

My personal transition from starry-eyed aerospace engineer to CSE enthusiast happened through the Undergraduate Research Opportunity Program (UROP) in my third year. I worked on testing an algorithm for simulating fluid dynamics using parallel computers. I didn’t fully understand my own work at the time, but I was hooked by having ownership of my own research project, the ability to work from wherever I wanted, and the badass feeling of running commands from a terminal for the first time. So when I started my grad program, I was eager to take on a UROP student of my own.

I quickly discovered that finding a UROP student was not so easy. There were multiple reasons: (1) we didn’t get too many inquiries from undergrads, due to the CSE awareness problems I’ve mentioned, (2) some interested undergrads who contacted us didn’t understand the nature of CSE work and ghosted us when they realized that the only thing we build is code, and (3) most students who contacted us were first-years who just didn’t have the math or coding background for CSE. Unfortunately, the best way to learn the math is to take the classes - but that takes several semesters. How could we make CSE more accessible?

The answer, to me and some of my grad student friends, was to create a new course. We conceived of the basic concept over lunch one day and after throwing ideas around, finally met to draft a syllabus with our desired learning outcomes. Our goal: a low-stress, low-time-commitment, low-barrier-to-entry course on the fundamentals of computational thinking that any first-year undergraduate could complete. We’d simplify the math to overarching ideas and limit the coding students had to do to filling in lines of skeleton code. We’d emphasize recurring CSE themes like accuracy vs. cost tradeoffs and iterative algorithms. We pitched the idea to our lab director, who agreed to be our faculty sponsor, and we offered the course as a “special subject” for undergrads in Spring 2018 and Spring 2019 with the course number 16.s685. It was a success! Here are some snippets of student feedback:

“16.s685 introduced me to the wide range of optimization and computational modeling techniques that I hope to learn more about in future classes. This course built the foundation for those future courses.”

“This class was just right! ... I learned a lot in the short time that we had. This class made my Friday afternoons fun!”

A fun experience that introduces undergrads to CSE as a discipline? Achievement unlocked.