Home Page

Associate Professor
Computer Science Department
Carnegie Mellon University

Office: GHC 9101
Executive assistant: Jessica Packer, jpacker@cs.cmu.edu, 412-268-2565, GHC 9006


Diderot Project

I am the architect of the Diderot project and lead its development.  Diderot unifies many educational services in one online platform and allows instructors to tap into the power of algorithms to run their courses and provide feedback to their students. The key technologies behind Diderot include the following.
  • Highly interactive books that support contextualized discussions.
  • Tools for transforming traditional plain-text materials (currently in LaTeX and Markdown) to interactive books.
  • A socially networked environment.
  • An online exam and quiz system.
  • A cloud-based code autograder that can put effectively any amount of compute power at the fingertips of the user.
  • Cloud-based implementation that seamlessly scales and trivially deploys at any institution without requiring any onsite IT services.
Diderot is rapidly evolving and has been by thousands of students at Carnegie Mellon.  
A rough guide to Diderot is available. 

Courses that have used Diderot include
  • 10751 (Advanced Machine Learning), 
  • 15121 (Data Structures), 
  • 15122 (Principles of Imperative Computation), 
  • 15210 (Parallel and Sequential Algorithms)
  • 15251 (Great Theoretical Ideas in Computer Science),
  • 15281 (AI)
  • 15351 (Advanced Algorithms)
  • 15424 (Cyber-Physical Systems), 
  • 15455 (Undergraduate Complexity Theory)
  • 15459 (Quantum Computation)
  • 15688 (Practical Data Science), 
  • 15751 (TCS Toolkit)
  • 15780 (Graduate AI)
  • 15859 (Proofs versus Algorithms)
  • 15897 (Parallelism and Concurrency)
  • 21228 (Discrete Mathematics).


Diderot is currently not publicly available.  The GitHub repository for Diderot is available for feedback and other resources.   

Funding and Acknowledgments 

Diderot is generously supported by SCS Innovation Fund, National Science Foundation, Amazon Web Services, Google Cloud.

    15897: Parallelism and Concurrency (Fall 2019)

    Class times: Mon-Wed 10:30-11:50
    Place: Gates 4303
    Diderot: Please see Diderot for the course schedule and course materials.

    This course covers topics in parallelism and concurrency.  Specific topics include the following.
    • Models of parallelism.
    • Parallel algorithms for sequences
    • Parallel algorithms for trees
    • Parallel algorithms for graphs
    • Algorithms for thread scheduling, e.g., greedy scheduling, online scheduling, and work stealing

    The lectures will aim at bridging Church's and Turing's different formulations of computation and attempt at developing a "unified theory" of the fundamental concepts in computing, parallelism, and concurrency.  The students will also do a project.  The project could be individual or team work and on a topic that will be agreed upon by the instructor or the student(s).