Autolab is a course management service, initially developed by a team of students at Carnegie Mellon University, that enables instructors to offer autograded programming assignments to their students over the Web. The two key ideas in Autolab are autograding, that is, programs evaluating other programs, and scoreboards.
Autolab also provides other services that instructors expect in a course management system, including gradebooks, rosters, handins/handouts, lab writeups, code annotation, manual grading, late penalties, grace days, cheat checking, meetings, partners, and bulk emails.
Since 2010, Autolab has had a transformative impact on education at CMU. Each semester, it is used by about 5,000 CMU students in courses in Pittsburgh, Silicon Valley, Qatar, and Rwanda. In Fall, 2014, we are releasing Autolab as an open-source system, where it will be available to schools all over the world, and hopefully have the same impact it's had at CMU.
Subscribe to our mailing list to recieve announcements about major releases and updates to the Autolab Project.
Try It Out
We released new documentation! Check it out here.
Setting up Tests
Add a test database in
Create and migrate the database.
RAILS_ENV=test bundle exec rails db:create RAILS_ENV=test bundle exec rails db:migrate
Do not forget to use
RAILS_ENV=test bundle execin front of every rake/rails command.
Create necessary directories.
mkdir attachments/ tmp/
After setting up the test environment, simply run spec by:
bundle exec rails spec
Rails 4 Support
Autolab is now running on Rails 5. The Rails 4 branch can be found on
We will not be backporting any new features from
master-rails-4, and we have discontinued Rails 4 support.
To install mkdocs, run
pip install --user mkdocs
We rely on the
mkdocs-material theme, which can be installed with
pip install --user mkdocs-material
To run and preview this locally, run:
Once your updated documentation is in
This will build the site using the branch you are currently in (hopefully
master), place the built HTML files into the
gh-pages branch, and push to GitHub. GitHub will then automatically deploy the new content in
Finally, go to the repository Settings page, and set
docs.autolabproject.com under the
Custom domain field.
Autolab is released under the Apache License 2.0.
Please feel free to use Autolab at your school/organization. If you run into any problems, you can reach the core developers at
firstname.lastname@example.org and we would be happy to help. On a case by case basis, we also provide servers for free. (Especially if you are an NGO or small high-school classroom)
v2.8.0 (2021/12/20) GitHub Integration and Roster Upload Improvement
- Students can now submit code via GitHub
- Improved Roster Upload with better error reporting
- Numerous bug fixes
v2.7.0 (2021/05/29) Autolab Docker Compose, Student Metrics, Redesigned Documentation
- Integration with new Docker Compose installation method
- Student Metrics Feature, which allows instructors to identify students who may be in need of attention
- Redesigned Autolab documentation
- Numerous bug fixes
v2.6.0 (2020/10/24) Formatted Feedbacks, Course Dashboard, Accessibility
- Formatted Feedback feature
- Introduction of Course Dashboards
- Numerous bug fixes
(2021/10/12) Moved from Uglifier to Terser
v2.5.0 (2020/02/22) Upgrade from Rails 4 Rails 5
- Autolab has been upgraded from Rails 4 to Rails 5 after almost a year of effort! There are still some small bugs to be fixed, but it should not affect the core functionality of Autolab. Please file an issue if you believe you have found a bug.
v2.4.0 (2020/02/08) Speedgrader - The new code viewer
- The File Tree shows file hierarchy of student’s submission
- Click on a file to open
- Click on a folder to expand
- The Symbol Tree allows you to jump quickly to functions in the student’s code
- Click on a function to jump
- You can easily switch between submissions and files
- Up/down arrow keys change file
- Right/left arrow keys change submission
- How to use new annotation system:
- Make annotations with grade adjustments
- Important: annotations can only be made for non-autograded problems (to preserve the original autograded score of the autograded problem)
- Annotations grade changes summarized by the Annotations table on the right
- New: Score for problem automatically updates after annotation score changes based on the following formula (this no longer has to be done manually on the Gradebook):
score = max_score + ∑(annotation score changes)
- For example, a way to grade style in a deductive manner would be to set the max score for the Style problem, and make annotations with negative score for style violations and zero score for good style
- Tables are more standardized
- Fixed text overflowing issues on Gradebook modals
- Improved standardization and UI for annotations on PDF submissions
- Course assistants are now able to submit assignments early