GithubHelp home page GithubHelp logo

bruceweng / autolab Goto Github PK

View Code? Open in Web Editor NEW

This project forked from autolab/autolab

0.0 2.0 0.0 3.47 MB

Course management service that enables auto-graded programming assignments.

Home Page: http://www.autolabproject.com/

License: Apache License 2.0

Ruby 19.44% JavaScript 56.28% CoffeeScript 0.04% HTML 9.65% Java 10.65% CSS 3.56% Shell 0.36% Nginx 0.03% Python 0.01%

autolab's Introduction

Welcome to Autolab

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.

Autograding. Each time a student submits their work, the system autogrades it and stores the results in a gradebook. Autograders and the programs they evaluate can be written in any language and use any software packages. The model for a traditional programming class is that students work on their code, hand it in once, and then get feedback a week or two later, at which point they've already moved on to the next assignment. Autograding, on the other hand, allows students to get immediate feedback on their performance.

Scoreboard. The latest autograded scores for each student are displayed, rank ordered, on a real-time scoreboard. The scoreboard is a fun and powerful motivation for students. When coupled with autograding, it creates a sense of community and a healthy competition that seems to benefit everyone. Students anonymize themselves on the scoreboard by giving themselves nicknames. A mix of curiosity and competitiveness drives the stronger students to be at the top of the scoreboard, and all students have a clear idea of what they need for full credit. In our experience, everyone wins.

Since 2010, Autolab has had a transformative impact on education at CMU. Each semester, it is used by about 3,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.

This is the main repository that includes the application layer of the project. Installing other services are optional but highly recommended for full functionality. For further information:

Getting Started

####Running on Docker: Follow [this guide] (https://github.com/autolab/Autolab/wiki/Deploying-Autolab-with-Docker) ######This is recommended for real-world usage

####Running on your machine: ######This is recommended for development and trial purposes

For Ubuntu 14.04+ users: To complete all following steps with a bash script, run:

AUTOLAB_SCRIPT=`mktemp` && \curl -sSL https://raw.githubusercontent.com/autolab/Autolab/master/bin/setup.sh > $AUTOLAB_SCRIPT && \bash $AUTOLAB_SCRIPT

For Mac users: Follow the step-by-step instruction below (we are working on an automated script for you!)

  1. Install rbenv (Basic GitHub Checkout method): Github rbenv

  2. Install ruby-build (as an rbenv plugin): Github ruby-build

    git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

    (You might need to restart your shell at this point in order to start using your newly installed rbenv)

  3. Install the version of ruby in the text file .ruby-version:

    rbenv install 2.2.0

At this point, confirm that rbenv is working (depending on your shell, you might need to logout and log back in):

$ which ruby
~/.rbenv/shims/ruby

$ which rake
~/.rbenv/shims/rake
  1. Install bundler:
gem install bundler
rbenv rehash
  1. cd into bin and install the required gems:
bundle install

You need to have MySQL installed before hand.

As Gems get updated, this can have problems. Check the [FAQ] (https://github.com/autolab/Autolab/wiki/FAQ).

  1. Configure your database next. You need to fill the username and password fields on config/database.yml.template and rename it to config/database.yml. Depending on how you installed MySQL and which platform you're running on, you might have to change the database socket setting in this file. If you're having trouble, look at the [FAQ] (https://github.com/autolab/Autolab/wiki/FAQ)

  2. Set up initializer for Devise Auth systems with a unique key.

    cp config/initializers/devise.rb.template config/initializers/devise.rb

    Make sure you fill in <YOUR_WEBSITE> and insert a new secret_key in devise.rb. You can get a random token with

    $ bundle exec rake secret
  3. Create and initialize the database tables:

    bundle exec rake db:create

if you have no existing database:

bundle exec rake db:reset

if you already have a database whose data you want to preserve:

bundle exec rake db:migrate ```

Do not forget to use bundle exec in front of every rake/rails command.

  1. (Optional) Populate dummy data for development purposes:

    rake autolab:populate

    (#TODO: make it so that setup.sh initiates the directories)

  2. (Optional) Setup [Tango Service] (https://github.com/autolab/Tango) following the [instructions on the wiki] (https://github.com/autolab/Tango/wiki/Setting-up-Tango-server-and-VMs).

  3. Create the autogradeConfig file by editing config/autogradeConfig.rb.template and renaming to config/autogradeConfig.rb.

  4. Start rails server:

    bundle exec rails s -p 3000
  5. Go to :3000 to see if the application is running. You can use the Developer Login option with the email "[email protected]".

Testing

Setting up Tests

  1. Add a test database in database.yml

  2. Create and migrate the database.

    RAILS_ENV=test bundle exec rake db:create
    RAILS_ENV=test bundle exec rake db:migrate

    Do not forget to use RAILS_ENV=test bundle exec in front of every rake/rails command.

  3. Create necessary directories.

    mkdir attachments/ tmp/
    

Running Tests

After setting up the test environment, simply run spec by:

bundle exec rake spec

Build Status Code Climate Test Coverage

Contributing

We encourage you to contribute to Autolab! Please check out the Contributing to Autolab Guide for guidelines about how to proceed. Join us!

License

Autolab is released under the Apache License 2.0.

Using Autolab

Please feel free to use Autolab at your school/organization. If you run into any problems, you can reach the core developers at [email protected] 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)

autolab's People

Contributors

aarongut avatar bdwolfe avatar cg2v avatar devanshk avatar dlbucci avatar droh avatar esse avatar icanb avatar jbman223 avatar jez avatar leitea-google avatar mihirpandya avatar nayak16 avatar rmzr7 avatar theodorj avatar tomabuct avatar wchargin avatar ymzong avatar zyx-billy avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.