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

Education is an important challenge facing nearly every society today.  Even as the need for education is increasing, its cost is also increasing; and in fact, the cost of education has been increasing more than the cost of healthcare.  I believe that technology holds an immense and largely untapped potential.  I started playing with ideas for using computer science in education when I first started teaching large undergraduate courses at Carnegie Mellon and started experiencing the inadequacy of existing educational tools on a day to day basis.  The Diderot project was born from these experiences and have since come a long way.  The key ideas behind Diderot are 1) the tight integration of many educational services in one online platform, 2) the use of computer algorithms for various purposes such as giving automated feedback to students and instructors, i.e., Diderot is a "programmable" platform, and 3) the use of cloud services for robustness, scalability, and cost effectiveness. 

The features of Diderot include the following.
  • Interactive books and assessments (quizzes, time exams, etc).
  • State of the art question-and-answer system that is integrated with online books and assessments.
  • Tools for transforming traditional materials from plain text (e.g., written in LaTeX and Markdown) to online.
  • Automated feedback mechanisms that allow instructors to give feedback to students by using algorithms (code).
  • A socially networked environment.
  • Cloud-based implementation that requires no onsite IT support facilities.
Diderot is rapidly evolving and has been used 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).