Skip to main content

Jean Yang

Assistant Professor
Computer Science Department
Carnegie Mellon University

jyang2 [at] cs [dot] cmu [dot] edu
GHC 7113
Curriculum Vitae

Join Us!

Our group mission is to take over the entire world with sound reasoning and provable guarantees. 🌈

Towards this mission, I am looking for graduate students with strong backgrounds in 1) the formal aspects of programming languages and 2) building realistic systems and tools. Students are not required to be strong in both, though I would like students to have an interest in both. I am happy to talk to strong postdoctoral candidates and enthusiastic undergraduate students as well.

Programming Languages at Carnegie Mellon

CMU has a large and active Principles of Programming group. The group has become even larger and more active now that Jan Hoffmann, Matt Fredrikson, and I have joined. The School of Computer Science PhD application is here.

Research Agenda

Research projects include, but are not limited to, the following.

Factoring Privacy and Security Out of Programs

Information leaks often occur because conditional access checks are intertwined with other functionality. I want to make software more secure by reducing opportunities for programmers to inadvertently leak information. My work on the Jeeves programming language introduced the idea of policy-agnostic programming: separating privacy and security policies from the rest of the code while relying on the compiler/compile to implement policy checks. Jeeves enforces policies at runtime. Follow-up work on Lifty uses a static program repair-based approach for inserting the necessary conditional checks at compile-time, where the programmer specifies policies as refinement types. I am interested in, among other things, the following extensions of this work:

Exploiting Structure to Analyze Rule-Based Biological Models

Understanding the mechanisms behind cellular signalling would help us understand and cure many diseases, but the complexity of cellular signalling precludes understanding. I want to develop language constructs and programming tools for modeling cellular signalling as programs. My work on executable knowledge exploits a deep connection between programming language semantics and semantics to support a new way of modeling. We use Kappa, a rule-based graph-rewrite programming language that allows us to encode possible transformations over graphs representing the state of the cell. Kappa's precise operational semantics allow us to not only simulate the programs, but also perform static program analysis. We are currently working as part of the Big Mechanism project to mine models from the literature. Below are some project directions.

Applying to Graduate School

I have compiled the following advice on applying for a PhD in computer science:

  1. Deciding to Apply
  2. Standardized Tests
  3. Fellowships
  4. Applications
  5. School Visits
  6. Some notes on picking grad schools/advisors
  7. FAQ: Applying to Graduate School for Computer Science

Life in Academia

If you are considering a stint in academia, you may be interested in these blog posts I have written.

Reasons to Pursue a Ph.D. December 11, 2011
The Life of an Academic, Explained February 5, 2012
How Science Really Works January 12, 2013
What My PhD Was Like February 27, 2016

Why Pittsburgh Is the Place to Be

Pittsburgh is not just affordable and liveable, but also newly hip 🔥. Why wouldn't you want to be here?

Pittsburgh Gets a Tech Makeover July 22, 2017
A Revitalized Pittsburgh Suggests the President Used a Rusty Metaphor June 2, 2017
Built on Steel, Pittsburgh Now Thrives on Culture April 12, 2017
36 Hours in Pittsburgh July 15, 2015