By Julia Schwarz
Mae Milano, an expert in programming languages, joined the computer science faculty as an assistant professor in January 2024.
Milano’s interest in programming languages began while she was an undergraduate at Brown, where she took coursework in music, physics and computer science. During that time, she also interned at the Princeton Plasma Physics Laboratory, where she worked with researchers to create and run complex physics visualizations, interacting with data from experiments and simulations on the laboratory’s supercomputer.
Sometimes, she said, the researchers would write a program and run it over the course of three days, only to return and find their program had crashed due a minor programming error.
“It became really clear to me,” Milano said, “that building better programming languages would save a huge amount of time, money and stress.”
Milano’s interest in languages extends beyond computers — she has also spent many years studying the language of music. She majored in music composition as an undergrad before going on to complete her doctoral degree in computer science at Cornell.
There are opportunities and constraints in both computer languages and musical languages, she said. “There are some things we want to do in music, like improvisation, that are very hard to communicate using the language we have.” Similarly, there are some things programmers want to do in computing that are hard to communicate using current languages.
“Ever since 1960 or so,” Milano said, “we've had more or less the same ability to tell a computer to do things.” But during that same time, both computing power and our use of computers has grown exponentially. Languages aren’t always able to reflect those changes.
For example, when Python was created in the 1990’s, basic applications were all written in the same style: executing only a single task at a time, on a computer that has only a single processor core. Now, even our phones have multiple processor cores, allowing them to efficiently run many tasks simultaneously. While programmers can write applications that carry out many tasks at the same time, in traditional programming languages this can cause a very difficult-to-fix bug called a "race condition."
While a postdoc at the University of California-Berkeley, Milano helped to create a new language for building programs that run multiple tasks at once, without race conditions. This technology was later adopted by Apple and is now part of the Swift programming language, running on millions of iOS devices around the world.
Her lab’s current research focuses on key challenges in building programs that run on multiple computers. Current languages are built to run on only a single computer at a time; running programs written in these languages on multiple computers requires cobbling together a bunch of different applications, none of which are aware of each other. Milano is building a new programming language designed to run single applications across multiple machines, making such programs possible to write directly, and less prone to errors or bugs.
Milano believes this streamlined framework would make writing programs more efficient and intuitive. And ultimately, she said, if programming can be made easier and more intuitive, that will widen access to computer programming for everyone.
In the spring, Milano will be teaching COS 417: Operating Systems. Operating systems, she said, are essentially the first layers of software on a computer, “the software that pokes the hardware.” Milano has revamped the syllabus to make the class an exciting introduction to this fundamental topic.