Sarah M. Morin
CS PhD student at UC Berkeley advised by Joe Hellerstein and Max Willsey.
Research
How can we bridge the gap between the powerful theoretical potential of programming languages research and its practical implementation in complex, real-world systems? I believe we can use novel languages, techniques, and formal frameworks to improve the performance, reliability, and security of distributed systems from the ground up.
My current project asks a deceptively simple question: when can we optimize a program by optimizing its pieces? Bellman’s principle of optimality – which forms the foundation of dynamic programming – tells us that an optimal solution is composed of optimal solutions to its sub-problems. But many optimization problems violate this principle in subtle ways: a locally suboptimal choice for a sub-problem might be exactly what’s needed to unlock a better solution downstream. Developers work around this with ad hoc, domain-specific techniques, but there is no general theory of when and why these heuristics are necessary.
My work develops such a theory: a general framework for determining precisely when the principle of optimality holds and a strategy for ““lifting” problems that violate it into a form that satisfies it. Additionally, I present the multe-graph, a compact data-structure for representing these compositional optimization problems that is a variant of a traditional e-graph. The goal is to draw a concrete connection between related ideas that have developed independently across optimization, algorithms, and programming languages research. Stay tuned for updates!
Background
I earned my B.S. in Computer Science from The George Washington University. During my time as an undergraduate I worked as a Research Assistant for Professor Poorvi Vora and contributed to several publications on risk-limiting audits to statistically verify election outcomes. I also served as a Teaching Assistant in the Computer Science Department and taught for the Computer Architecture, Systems Programming, and Discrete Structures courses.
After graduating from GW, I joined Oracle as a Software Engineer on the File System Storage team of Oracle Cloud Infrastructure (OCI) where I was later promoted to Member of Technical Staff. As a developer on the data-plane I was given the opportunity to tackle many complex problems in distributed storage such as introducing support for SMB protocol and building a user quota enforcement system.
I live in San Francisco with my partner, Gus, and our cats, Zuko (yes, as in Avatar: The Last Airbender) and Kiwi. In my free time, I enjoy cooking, knitting, playing pool, and watching hockey. Although I have quite a few hobbies, there is nothing I enjoy more than learning and solving problems.
latest posts
| Dec 18, 2024 | Design Documentation |
|---|