Research interests

I was fortunate to be advised by Dave Andersen. In general, I'm interested in systems, and especially the line between software and hardware: operating systems, architecture, firmware, embedded systems, and—to some extent—programming languages.

Personal interests

Outside of school, I love bicycling, board games, hiking, bad puns, trying to speak French and Swedish, and probably other things that aren't coming to mind at the moment. That's not to say that I'm particularly good at any of those things, though...

Academic publications


Sol Boucher. Lightweight Preemptible Functions: A Thesis. Computer Science Technical Report Collection, 2022. Carnegie Mellon University.

Artifacts at or in this archive

Conference papers


Technical reports

Teaching experience

Aside from bicycling, teaching computer science is my main passion in life.

I advocate for covering fundamental language innovations such as type systems and higher-order functions from the beginning of the curriculum. I believe that today, the most accessible popular language that serves these goals is TypeScript. In addition to sporting a strong type system, TypeScript makes it easy to demonstrate compilation (because it compiles to the closely-related language JavaScript), serialization (because the popular JSON format is a subset of JavaScript), and network communication (thanks to the seamless Fetch API). If you're skeptical that starting out in TypeScript is possible without fighting with a messy tangle of Node, npm, and JSON configuration files to override inane defaults, check out Deno! UNC chapel hill used to teach their intro course in TypeScript, and only switched away because of the high proportion of enrolled nonmajors interested in scientific computing. Some of my other favorite curriculum resources (which don't target the introductory level) are Berkeley CS 61A, Teach Yourself Computer Science, and The Architecture of Open Source Applications.

During November and December 2021, I served as an emergency substitute teacher at Mt. Lebanon High School. I taught approximately 150 students across two sections of a Python introductory programming course and four sections of AP CS A.

In summer 2021, I co-taught 15-122 Principles of Imperative Computation along with fellow CMU doctoral student Kyle Liang.

I've been involved in the 15-213 Introduction to Computer Systems course almost since I started grad school. In addition to giving lectures, holding office hours, and other content delivery duties, my focus recently has been on expanding our library of active learning activities for use during summer lectures.

In spring of 2017, I took a leave of absence to fill in as a high school teacher in the CS department at the Shady Side Academy. While there, I taught the following courses:

Past projects

Here are the most notable CS-related things I did prior to starting grad school:

Work on coreboot and the Chrome OS firmware

After college, I returned to Google to intern on the Chrome OS Firmware team, where I worked on integrating support for flash maps—roughly the flash chip equivalent to a partition table—into the coreboot project. Most of my work was in the build and bundling tools, and a large portion of my time was spent writing a compiler for our human-readable format for describing flash layouts. cros code upstream code

Work on the Case Bitcoin wallet

At the end of college, I worked at CryptoLabs (now Case Wallet) as a firmware engineer. I did a lot of work on getting the toolchain and debugger working, wrote the first iteration of the build system, and contributed to the overall design of the firmware and the implementation of several of its components. As far as I know, they haven't started open sourcing yet, but their site states that a release is on the way!

Work on the Android Camera app

After my third year of college, I interned on Google's Android Camera Framework team, where I began the process of migrating the AOSP Camera and Google Camera apps to Lollipop's new camera API. My glue code is present in both apps, which come preinstalled on some phones. code

Work on Chrome Remote Desktop

After my second year of college, I interned on Google's Chrome Remote Desktop team, where my task was to port the VNC-like client to Android. As part of the Chromium project, the code is open source, and I posted instructions for compiling your own copy of the Android app. After additional work and polishing by the rest of the team, it was released as a product, and can be downloaded directly from the Play store. app code backend code

Original reports

Contact info

Office: GHC–9009