Stephanie Weirich: a Passion for Programming Languages

Rice alumna Stephanie Weirich is now a CS professor at the University of Pennsylvania.

Rice alumna Stephanie Weirich is a CS professor at the University of Pennsylvania.

Stephanie Weirich expected to be an electrical engineer, like her father. Instead, the Rice University alumna (B.A. ‘96) is a professor of Computer Science at the University of Pennsylvania.

“I took the introductory COMP classes as a freshman and got hooked,” she said. “Then I spent two summers at Syracuse University, in the NSF’s Research Experiences for Undergraduates program. When I looked for a third summer experience, I approached Matthias Felleisen.”

“That summer experience in Matthias’ group further influenced my interest in programming languages. I shared an office with another CS major, Dan Grossman. And we got to interact with PhD students like Matt Flatt, Shriram Krishnamurthi, Robby Findler, and Cormac Flanagan. In that group, it never occurred to me I was the only woman. It just never came up.”

When Flanagan left Houston to intern in a research lab that summer, he lent her his Rice desk and project – developing a soft typing system for Scheme programs. Weirich said she worked with him on developing a user interface to visualize the results of the static analysis.

“The public Internet was just getting started, and we were using web tools to browse through source code, click on the source code and see what our analysis said at that point. Career-wise, it was the beginning of the dot com bubble; companies like Google were just getting started and many of my friends were caught up in the excitement. However, I was hooked on computer science research, so working in the industry held no appeal for me,” said Weirich.

In her senior year, she started considering graduate school. Weirich told Felleisen she’d like to get a Ph.D. in programming languages.

“He immediately said, ‘You probably won’t get a job,’ but I said I wanted to do it anyway and he gave me a list of schools to consider. I definitely didn’t plan to become a faculty member, I just wanted to keep working in programming languages,” she said.

At Cornell University, she met her future husband, Steve Zdancewic, on the first day of graduate student orientation. They shared the same advisor and passion for programming languages; as their attraction grew, they also realized the chance of establishing dual careers (in the same field in academia in the same city) was slim.

“Then we had this lucky thing happen. Cornell hired a new faculty member who ended up being an even better match for Steve. He made the switch, focusing more on the overlap of security and programming languages.”

When they graduated from Cornell, the couple had multiple offers from universities that wanted both of them equally. They chose the University of Pennsylvania, and were later awarded tenure at the same time by the Department of Computer and Information Science.

“Although we do try hard NOT to work on the same projects, we had the opportunity to spend our sabbatical year together in the UK. We chose Cambridge and moved there with our two small children.

“Having worked closely with Simon Peyton Jones, a major contributor to the design of the Haskell programming language, spending my sabbatical in Cambridge was ideal. Simon is at Microsoft Research in Cambridge and Haskell is much more active in the UK and Europe, so I had the chance to more fully engage with that community.”

Sabbaticals typically provide faculty members with fresh insights through a change in environment. Weirich ended up writing another paper with Peyton Jones during her sabbatical year, but she also valued her time at Cambridge for its new perspectives on teaching and research.

Years before, a different professor helped her explore a new perspective in research. At the end of her senior year, Weirich was matched with Rice CS professor Devika Subramanian for a summer mentoring experience, and dove into Subramanian’s robotics research.

She said, “Devika was new at Rice and I really wanted to work with her. I TA’d for her Artificial Intelligence course in the spring and she offered me work in her lab that summer. Although I thought programming languages was my first love, I wanted to try robotics before making my commitment.

“Devika was the perfect mentor for me that summer, helping me explore her own research area with gusto, but without pressuring me to change my direction. More importantly, the general advice she gave me about research and life that summer prepared me for graduate study at Cornell. She was a role model in many ways, demonstrating intellectual curiosity, honesty and openness.”

Weirich enjoyed her summer with Subramanian, but remained committed to the study of programming languages for her PhD work. Her current focus is the design of statically-typed programming languages.

Static type systems are a popular, cost-effective form of lightweight program verification. Verifying a program includes checking it for bugs and confirming its adherence to software specifications: does it perform as intended and if not, why not? Verification is usually performed using mathematical models.

“Static type systems provide a tractable and modular way for programmers to express properties that can be mechanically checked by the compiler,” she said. “As a result, the compiler can rule out a wide variety of errors and provide more information to refactoring and development tools. For example, systems written with type-safe languages cannot be compromised by buffer overruns if all array accesses are statically proven safe. Furthermore, programmers can modify their code with the assurance that they have not violated critical safety properties.

“I explore these designs in the context of functional programming languages, such as Haskell and ML. I consider functional programming languages an ideal context for type system research; they excel in their capabilities for static reasoning.”

She admits there is still room for improvement. Weirich said some programming idioms must be ruled out simply because they cannot be shown to be sound by existing type systems. To overcome these limitations, her work investigates type system features in the context of both new languages and existing ones, and evaluates those designs with respect to both theory and practice.

Her work has led to further collaborations with Peyton Jones, producing five more papers since her sabbatical year in Cambridge. She enjoys the challenge of research and publication but she also has a penchant for programming.

“Programming is one of the first things I fell in love with in my undergrad COMP classes at Rice,” she said. “It’s still fun and I still learn a lot about the language I’m using when I program. That’s particularly the case when I’m creating homework projects for the classes I teach at Penn. Building out a good homework assignment --and getting it right-- can be challenging. But it is also enjoyable. It requires both mathematical precision and creativity, because I present it as an authentic problem that needs to be addressed and resolved.”