Contributions to documentation are more than welcome! You can e-mail contributions (or questions) to catsoop-dev@mit.edu.

CAT-SOOP is a flexible, programmable learning management system based on the Python programming language. During the 2018-2019 academic year, CAT-SOOP was used in 12 subjects at MIT, and total enrollment in these subjects was around 3000 students. While CAT-SOOP's core functionality is the collection and assessment of online exercises, it has been extended to support a variety of different features including, among others:

• content presentation (via text, video, interactive simulations, etc)
• grade reports and analytics (including fine-grained control over grading, due dates, extensions, and lateness penalties)
• queueing system for managing requests for help in an in-class lab environment or office hours
• real-time analytics for synchronous lab assignments
• timed quizzes
• a variety of subject-specific question types
• group exercises (with randomly-assigned or self-selected groups)
• finely-grained control over release/due dates (by section, or for individuals)
• an interface for online grading of paper exams

### 1.2) History

CAT-SOOP is a descendent of a system written by Tomás Lozano-Pérez in the early-to-mid 1990's, referred to around MIT as "the tutor." The tutor was widely used at MIT and other universities. In 2011, CAT-SOOP and another system (Ike Chuang's tutor2, which I understand eventually grew into Open edX) were both developed in parallel as potential replacements for the tutor in MIT's 6.01 (Introduction to Electrical Engineering and Computer Science via Robotics). Despite having been designed for 6.01, CAT-SOOP was actually first used in the fall 2011 offering of 6.003 (Signals and Systems), while tutor2 was used in 6.01. CAT-SOOP was first used in 6.01 in the spring 2013 semester, and it began to see use in other subjects in later semesters.

## 2) Courses Using CAT-SOOP

The following are some of the courses I know of that use (or have used) CAT-SOOP:

• MIT 6.01: Introduction to EECS via Robotics
• MIT 6.02: Introduction to EECS via Communications Networks
• MIT 6.08: Interconnected Embedded Systems
• MIT 6.145: A Brief Introduction to Programming in Python
• MIT 6.002: Circuits and Electronics
• MIT 6.003: Signal Processing
• MIT 6.006: Introduction to Algorithms
• MIT 6.009: Fundamentals of Programming
• MIT 6.036: Introduction to Machine Learning
• MIT 6.302: Feedback System Design
• MIT 6.A01: Mens et Manus Freshman Seminar
• Olin College MTH 2132/SCI 2032: Bayesian Inference and Reasoning
• Olin College ENGR2340: Dynamics
• Olin College SCI2050: The Art of Approximation in Science and Engineering