I am a Principal Researcher, leading the Software Design and Implementation group in Microsoft Research. I am also an Adjoint Associate Professor of Computer Science at the University of Colorado, where I worked from 1990-1998. I have a BS from Rensselaer Polytechnic Institute (1982) and a MS (1984) and PhD (1989) from the University of California at Berkeley. My research interests include programming language design and implementation and performance measurement and analysis. I have served previously as an Associate Editor of the ACM journals Transactions on Programming Languages and Systems and Transactions on Architecture and Code Optimization and I am currently a member of the ACM SIGPLAN Executive Committee. For further information about my research, please see my vita.
Professional Activities:
- SIGPLAN Executive Committee, Member-at-Large (July 2007 - June 2009)
- I co-chair the SIGPLAN Professional Activities Committee (PAC) with Koen De Bosschere
We provide financial support for many professional activities, including student travel. Check it out! - I chair the SIGPLAN CACM Research Highlights Nomimating Committee We nominate papers from SIGPLAN workshops and conferences to appear in the CACM Research Highlights section. If you have suggestions for such papers, please nominate them using our website.
- I co-chair the SIGPLAN Professional Activities Committee (PAC) with Koen De Bosschere
- Program co-Chair (with Onur Mutlu), 2008 IEEE International Symposium on Workload Characterization (IISWC'08)
- Program Committee, 2007 Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES'07)
- Program Committee, 2007 International Symposium on Code Generation and Optimization (CGO 2007)
- Program co-Chair (with Kevin Skadron), Fifteenth International Conference on Parallel Architectures and Compilation Techniques (PACT-2006)
- Program Committee, Third ACM SIGPLAN History of Programming Languages Conference (HOPL-III)
- Program Committee, 4th Annual International Symposium on Code Generation and Optimization (CGO-4)
- Program Chair, 3rd Workshop on Memory System Performance (MSP'05)
- Ben's CLI Benchmarks- a collection of compute-intensive CLI programs
- Co-chair (with Hoi Vo), 2nd Workshop on Managed Runtime Environments (MRE'04)
Publications:
- Gene Novark, Emery D. Berger, Benjamin G. Zorn, Exterminator: Automatically Correcting Memory Errors with High Probability, Communications of the ACM, pp 87-95, December 2008. A longer version appears in ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation (PLDI'07), pp 1-11, San Diego, CA, June 2007.
- Paruj Ratanaworabhan, Benjamin Livshits and Benjamin Zorn, Nozzle: A Defense Against Heap-spraying Code Injection Attacks, Microsoft Research Technical Report MSR-TR-2008-176, November 2008.
- Paruj Ratanaworabhan, Martin Burtscher, Darko Kirovski, Rahul Nagpal, Karthik Pattabiraman, and Benjamin Zorn, Detecting and Tolerating Asymmetric Races, 14th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2009), Raleigh, NC, February 2009.
- Gene Novark, Emery D. Berger, Benjamin G. Zorn, "Plug: Automatically Tolerating Memory Leaks in C and C++ Applications", Department of Computer Science Tech Report 08-09, University of Massachusetts, April 2008.
- Karthik Pattabiraman, Vinod Grover and Benjamin Zorn, "Samurai: Protecting Critical Data in Unsafe Languages", EuroSys 2008, Glasgow, Scotland, April 2008.
- Vitaliy B. Lvin, Gene Novark, Emery D. Berger, Benjamin G. Zorn, "Archipelago: Trading Address Space for Reliability and Security", Thirteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '08), Seattle, WA, March 2008.
- Emery D. Berger and Benjamin G. Zorn, "DieHard: Efficient Probabilistic Memory Safety", Department of Computer Science Tech Report 07-17, University of Massachusetts, April 2008 (submitted for publication, supersedes PLDI'06 paper).
- Johannes Helander and Benjamin Zorn, "Medina: Combining Evidence to Build Trust", (Slides PPT, PDF), Web 2.0 Security & Privacy 2007 (W2SP 2007), Oakland, CA, May 2007.
- Rahul Nagpal, Karthik Pattabiraman, Darko Kirovski, and Benjamin Zorn, "ToleRace: Tolerating and Detecting Races", Second Workshop on Software Tools for Multi-Core Systems (STMCS), San Jose, CA, March 2007.
- D. Kirovski, B.G. Zorn, R. Nagpal, and K. Pattabiraman, "An Oracle for Tolerating and Detecting Asymmetric Races". Microsoft Research Technical Report, MSR-TR-2007-122, 2007.
- Karthik Pattabiraman, Vinod Grover, and Benjamin G. Zorn, "Software Critical Memory - All Memory is Not Created Equal", Microsoft Research, Tech Report MSR-TR-2006-128, September 2006.
- Emery D. Berger and Benjamin G. Zorn, "DieHard: Probabilistic Memory Safety for Unsafe Languages", ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation (PLDI'06), pp 158-168, Ottawa, Canada, June 2006.
- Emery D. Berger, Benjamin G. Zorn, and Kathryn S. McKinley, "Reconsidering Custom Memory Allocation", 17th ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'02), pp 1-12, November 2002.
- Martin Burtscher, Benjamin G. Zorn "Hybrid Load-Value Predictors", IEEE Transactions on Computers, 51(7), pp. 759-774, 2002.
- Emery D. Berger, Benjamin G. Zorn, and Kathryn S. McKinley, "Composing High-Performance Memory Allocators", Programming Languages Design and Implementation '01 (PLDI'01), June 2001. (Presentation in ppt.)
- Matthew L. Seidl and Benjamin G. Zorn, "Implementing Heap-Object Behavior Prediction Efficiently and Effectively", Software-Practice and Experience, 31(9), pp 869-892, 2001.
Projects:
- RobustHeap / DH (with Emery Berger, Ted Hart, and Gene Novark): RobustHeap and DH (formerly DieHard) are memory allocators that include a number of features to provide tolerance or detection of memory errors related to out-of-bounds writes and use of dangling pointers.
- ToleRace (with Darko Kirovski): ToleRace is a runtime system that allows programs to either tolerate or detect asymmetric races based on local replication of shared state.
- Critical Memory / Samurai (with Karthik Pattabiraman (UIUC)). Critical memory is a new type of memory that provides guarantees of consistency against arbitrary loads and stores in type unsafe languages such as C and C++.
- Nozzle (with Ben Livshits, MSR, and Paruj Ratanaworabhan, Cornell Univ.): protecting browsers against heap-spraying attacks.
Presentations:
- "Samurai: Protecting Critical Data in Unsafe Languages" (pdf), EuroSys 2008, Glasgow, Scotland, April 2008
- "Tolerating and Correcting Memory Errors in C and C++" (pdf), Microsoft Research Cambridge, April 2008.
- "Programming Languages for Building Trustworthy Systems"(pdf), Information Trust Institute, 4th ITI Workshop on Dependability and Security: Opportunities and Challenges in Building an Overarching Community (November 2007).
- "Tolerating and Correcting Memory Errors in C and C++" (pdf), University of Illinois at Champaign-Urbana, November 2007.
- "DieHard: Memory Error Fault Tolerance in C and C++"(pdf), Microsoft, June 2007.
- "Software Fault Tolerance for Unsafe Languages", University of British Columbia, Dec. 2006.
- "Execution Environments for Building Dependable Systems", Invited talk at the 3rd Workshop on Managed Runtime Environments (MRE'05).
- "Thoughts on the Future of Runtime Systems", IBM Invitational Workshop on the Future of Virtual Execution Environments (VEE'04).
- "Performance in the Age of Trustworthy Computing", University of Colorado and others, 2004.