Stefan Muller

6004 Gates-Hillman Center
Computer Science Department
Carnegie Mellon University

(first initial) (last name) (at) cs (dot) cmu (dot) edu

Stefan Muller

Research and Teaching  |   Personal  |   Home

Research Interests

There are essentially two forms of multithreading: cooperative threading, in which a large piece of computation is divided among lightweight threads to improve the throughput, and competitive threading, used primarily to hide latency or improve responsiveness in interaction.

My doctoral thesis aims to expand languages and models for cooperative threading with two features more commonly associated with competitive threading: hiding latency and ensuring responsive interaction. I'm studying four facets of this problem. First, I'm looking to extend existing cost models for cooperative threading to account for responsiveness in competitive threading situations. The second area is language models, including language primitives for managing both throughput-bound and responsiveness-bound threads, and type systems for ensuring efficiency. Third, I'm developing scheduling algorithms that can scale to the enormous numbers of threads typical of cooperative threading while also properly attending to the responsiveness needs of a small number of competitive threads. Finally, I aim to develop a robust implementation of these ideas.

Past Research

Earlier in my grad school career, I worked on designing and implementing new techniques and interfaces for writing interactive programs (e.g. console applications, network applications, GUIs) based on the efficient update guarantees of Self-Adjusting Computation.

For my undergrad thesis, I studied information flow control in concurrent programs. Concurrent programs provide many challenges to proving noninterference (the property that low-security outputs are independent of high-security inputs), since in the presence of data races, outputs could be affected by the timing of computations. We provide a static analysis for noninterference in a language based on X10. The abstraction of places in X10 gives a convenient, high-level mechanism for linguistically separating data at varying security levels, allowing both programmers and compilers to more easily reason about security guarantees.


Responsive Parallel Computation: Bridging Competitive and Cooperative Threading
ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2017)
Stefan K. Muller, Umut A. Acar, Robert Harper

Hierarchical Memory Management for Parallel Programs
ACM International Conference on Functional Programming (ICFP 2016)
Ram Raghunathan, Stefan K. Muller, Umut A. Acar and Guy Blelloch

Latency-Hiding Work Stealing
ACM Symposium on Parallelism in Algorithms and Architectures (SPAA 2016)
Also available as Technical Report CMU-CS-16-112
Stefan K. Muller and Umut A. Acar

Practical and Safe Abstractions for Interactive Computation via Linearity
Technical Report CMU-CS-15-130
Stefan K. Muller, William A. Duff, Umut A. Acar

Practical Abstractions for Concurrent Interactive Programs
Technical Report CMU-CS-15-131
Stefan K. Muller, William A. Duff, Umut A. Acar

Bridging Theory and Practice in Interaction
Summit on Advances in Programming Languages (SNAPL 2015)
Stefan K. Muller and Umut A. Acar

Coupling Memory and Computation for Locality Management
Summit on Advances in Programming Languages (SNAPL 2015)
Umut A. Acar, Guy Blelloch, Matthew Fluet, Stefan K. Muller, Ram Raghunathan

Atomic Read-Modify-Write Operations are Unnecessary for Shared-Memory Work Stealing
Inria Technical Report hal-00910130
Umut Acar, Arthur Charguéraud, Stefan Muller, Mike Rainey

Towards a Practical Secure Concurrent Language.
Conference on Object-Oriented Programming Languages, Systems, Languages, and Applications (OOPSLA 2012)
Stefan Muller and Stephen Chong


At Carnegie Mellon

  • Fall 2013: 15-210. Parallel and Sequential Algorithms and Data Structures
  • Fall 2014: 15-814. Types and Programming Languages
  • Spring 2016: 15-897. Parallel Computing: Theory and Practice

At Harvard

  • Spring 2012: CS51. Introduction to Computer Science II
  • Fall 2011: CS61. Systems Programming and Machine Organization
  • Spring 2011: CS51. Introduction to Computer Science II
  • Fall 2010: CS61. Systems Programming and Machine Organization
  • Spring 2010: CS51. Introduction to Computer Science II