Junfeng YangAssociate Professor
Co-director of Software Systems Lab
Department of Computer Science
1214 Amsterdam Ave, 460 CSB
Mail Code 0401
New York, NY 10027
Lab: 487 CSD
Phone: (212) 939-7012
Fax: (212) 666-0140
[ News | Awards | Publications | Software | Projects]
[ People | Press | Teaching | Support ]
My research centers on making reliable and secure systems (one-page research statement). Some of my current projects involve efficient and reliable multithreading, tools for the cloud, and operating systems support for reliability. After getting a B.S. from Tsinghua University, I earned my PhD in Dawson Engler's group at Stanford, where I created eXplode, a general, lightweight system for effectively finding storage system errors. This work has led to an OSDI best paper award, numerous bug fixes to real systems such as the Linux kernel, and a featured article in Linux Weekly news. In 2008, I worked at Microsoft Research Silicon Valley, extending eXplode to check production distributed systems. MoDist, the resultant system, is being transferred to Microsoft product groups. At Columbia University, my recent work on reliable multithreading was featured in sites such as ACM Tech News. I won the Sloan Research Fellowship and the AFOSR YIP award, both in 2012; and the NSF CAREER award in 2011.
I'm looking for a few graduate students, postdocs, and undergraduate interns. If you know how to build systems/tools, we should talk.
Columbia undergraduate and master students: the above applies to you, too. Also, take a look at some projects available for academic credits.
- Sloan research fellowship, 2012
- Air Force Office of Scientific Research Young Investigator Program Award (AFOSR YIP), 2012
- NSF CAREER, 2011
- OSDI best paper, 2004
(If you're interested in a paper draft but it isn't available online, please email me for a copy.)
- Reducing Crash Recoverability to Reachability
To appear in POPL '16
- Grandet: A Unified, Economical Object Store
for Web Applications
Select Publications (Complete list...)
Paxos Made Transparent
Proceedings of the 25th ACM Symposium on Operating Systems Principles (SOSP '15), October, 2015
Describes Crane, a state machine replication system that replicates general server programs for high availability. It does so transparently without requiring developers to modify their programs. Crane essentially provides Replication-as-a-Service.
Towards Making Systems Forget with Machine Unlearning
Proceedings of the 2015 IEEE Symposium on Security and Privacy, 2015
My new favorite. Describes our vision of forgetting systems that quickly and completely forget user data including all derived data for security, privacy, and usability. The paper focuses on making machine learning systems forget (hence the term machine unlearning)
Determinism Is Not Enough: Making Parallel Programs Reliable with Stable Multithreading
Communications of the ACM (2014)
This paper is geared toward a general audience. If you have time to read just one paper on our concurrency work, this is the paper to read. It describes our vision of stable multithreading (StableMT), a radical approach to making multithreading reliable, and summarizes our last five years of work on designing, building, and applying stable multithreading systems. The final version of this paper will appear in CACM.
Parrot: a Practical Runtime for Deterministic, Stable, and Reliable Threads
Proceedings of the 24th ACM Symposium on Operating Systems Principles (SOSP '13), November, 2013
Describes Parrot, a simple, deployable thread runtime system for improving reliability with low overhead. This is our most recent and best paper on stable and deterministic multithreading.
Practical Software Model Checking via Dynamic Interface Reduction
Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP '11), October, 2011
Our most recent and best model checking paper. It describes a new reduction technique that decomposes a full distributed system into components and then explores the executions of these components in a divide-and-conquer way.
EXPLODE: a Lightweight, General System for Finding Serious Storage System Errors
[talk | bib]
Proceedings of the Seventh Symposium on Operating Systems Design and Implementation (OSDI '06), November, 2006
Describes our in-situ model checking approach, which made it easy to thoroughly check real systems. We applied eXplode to 17 storage systems and found serious data-loss errors in every system checked. This paper is my favorite in describing our model checking approach, which forms the basis of my PhD thesis work.
- Crane, our transparent state machine replication system.
- AppDoctor, our Android app checker.
Parrot, our latest stable
and deterministic multithreading system. It has two goals: (1) be practical
and (2) be fast. By default, it schedules
synchronizations in a round-robin manner, vastly reducing the set of
schedules for reliability. When needed, it allows developers to
performance hintsfor speed. Together with the code, we also released a benchmark suite with 100+ multithreaded programs, and Parrot's complete results on these programs.
- NeonGoby, a system for effectively detecting errors in alias analysis, one of the most crucial and widely used program analyses. If you have an LLVM-based alias analysis you want to check, give NeonGoby a try.
- Loom, a "live-workaround" system designed to quickly and safely bypass various types of concurrency errors at runtime. It contains a generic engine for live-updating multithreaded programs without restarts, which you can leverage if you want to build a live-update tool.
- eXplode, a storage system checker. It uses an approach we call in-situ model checking to thoroughly check general systems software in a lightweight manner.
I'm fortunate to work or have worked with these brilliant people.
- Yang Tang, PhD student
- Gang Hu, PhD student
- Xinhao Yuan, PhD student
- Georgios Koloventzos, PhD student
- David Williams-King, PhD student
- Lingmei Weng, PhD student
- Rui Gu, PhD student
- Karthik Jayaraman, MS student
- Yinzhi Cao, Postdoc research scientist, 2014-2015, joined Lehigh University as a professor
- Yan Cui, Postdoc research scientist, 2013-2015, went to Intel
- Heming Cui, PhD, 2015, joined the University of Hong Kong as a professor
- Jingyue Wu, PhD, 2014, went to Google
- Chuliang Weng, Visiting research scientist, 2012
- Oren Laadan, Postdoc research scientist, 2010-2011, founded Cellrox
- John Gallagher, MS, 2011, went to FourSquare
- Chia-che Tsai, MS, 2011, went to Stony Brook for PhD
- Neetha Maria Sebastian, MS, 2011, went to Google
- Yunling Wang, MS, 2010, went to Microsoft
- Ben Warfield, MS, 2010, went to Wireless Generation
- Nathan Murith, MS, 2010, went to Autodesk
- Maoliang Huang, MS, 2010, went to FlexTrade Systems
- Patrick Huang, MS, 2009, went to Sony
I co-advise some students in the SSL lab.
Articles and Discussions about Research
Spring 2016 -- Sabbatical leave
Fall 2015 -- Sabbatical leave
Spring 2015 -- Teaching leave
Fall 2014 -- E6121: Reliable Software
Spring 2014 -- Teaching leave
Fall 2013 -- W4118: Operating Systems I
Spring 2013 -- Teaching leave
Fall 2012 -- E6121: Reliable Software
Spring 2012 -- W4118: Operating Systems I
Fall 2011 -- E6121: Reliable Software
Spring 2011 -- W4118: Operating Systems I
Fall 2010 -- E6998-1: Reliable Software
Spring 2010 -- W4118: Operating Systems I
Fall 2009 -- E6998-1: Reliable Software
Spring 2009 -- W4118: Operating Systems I
Fall 2008 -- E6998-2: How to Make Reliable Software
Support for Research
- Efficiently, Effectively Detecting Mobile App Bugs with AppDoctor, Google, 02/2014 - 01/2015    PIs: Junfeng Yang
- Research Experiences for Undergraduates (REU) for LOOM: a Language and System for Bypassing and Diagnosing Concurrency Errors, NSF CNS-1340511, 06/2013 - 09/2013    PIs: Junfeng Yang
- Research Experiences for Undergraduates (REU) for Guanyin: a Thousand hands with a Thousand eyes for Distributed Software Checking, NSF CNS-1340506, 06/2013 - 09/2013    PIs: Junfeng Yang
- SHF: Medium: RacePro: Automatically Detecting API Races in Deployed Systems, NSF CCF-1162021, 09/2012 - 08/2016    PIs: Jason Nieh, Junfeng Yang
- Sloan Research Fellowship, Sloan Foundation, 2012 - 2016    PIs: Junfeng Yang
- Concurrency Attacks and Defenses, AFOSR YIP, 07/2012 - 06/2016    PIs: Junfeng Yang
- Transparently Extending Programs at Compilation to Prevent Bugs, ONR N00014-12-1-0166, 07/2012 - 06/2016    PIs: Junfeng Yang, Angelos Keromytis
- MEERKATS: Maintaining EnterprisE Resiliency via Kaleidoscopic Adaptation and Transformation of Software Services, DARPA MRC, 09/2011 - 01/2016    PIs: Angelos Keromytis, Roxana Geambasu, Junfeng Yang, Simha Sethumadhavan, Sal Stolfo  (Columbia as the lead institution, with GMU and Symantec)
- LOOM: a Language and System for Bypassing and Diagnosing Concurrency Errors, NSF CNS-1117805, 09/2011 - 08/2014    PIs: Junfeng Yang
- CAREER: Making Threads More Deterministic by Memoizing Schedules, NSF CAREER CNS-1054906, 02/2011 - 01/2017    PIs: Junfeng Yang
- SPARCHS: Symbiotic, Polymorphic, Autonomic, Resilient, Clean-slate, Host Security, DARPA CRASH, 10/2010 - 08/2015    PIs: Simha Sethumadhavan, Sal Stolfo, Angelos Keromytis, Junfeng Yang, David August
- SemGrep: a System for Improving Software Reliability through Semantic Similarity Bug Search, NSF CNS-1012633, 07/2010 - 06/2013    PIs: Junfeng Yang, Angelos Keromytis, Dawson Engler
- MINESTRONE, IARPA, 08/2010 - 01/2015    PIs: Angelos Keromytis, Junfeng Yang, Sal Stolfo  (Columbia as the lead institution, with Dawson Engler @ Stanford University, Anup Ghosh, Angelos Stavrou, and Michael Locasto @ George Mason University, and Marc Dacier, Matthew Elder, and Darrell Kienzle @ Symantec Corp)
- Guanyin: a Thousand hands with a Thousand eyes for Distributed Software Checking, NSF CNS-0905246, 09/2009 - 08/2014    PIs: Junfeng Yang, Gail Kaiser, Jason Nieh