Associate Professor
Computer Science Department
Carnegie Mellon University
Office: GHC 9101
Executive assistant: Jessica Packer, jpacker@cs.cmu.edu, 4122682565, GHC 9006
Teaching
Students and PostDocs
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 questionandanswer 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.
 Cloudbased 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 (CyberPhysical 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).
Resources
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: MonWed 10:3011: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).

