gradekit 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/.travis.yml +1 -0
- data/Gemfile +4 -0
- data/HISTORY.md +3 -0
- data/LICENSE +20 -0
- data/README.md +64 -0
- data/Rakefile +8 -0
- data/bin/gradekit +4 -0
- data/gradekit.gemspec +25 -0
- data/lib/gradekit.rb +5 -0
- data/lib/gradekit/version.rb +3 -0
- data/templates/gradesheet.txt.erb +11 -0
- data/test/cli_test.rb +9 -0
- data/test/test_helper.rb +3 -0
- metadata +114 -0
data/.travis.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm: 1.9.2
|
data/Gemfile
ADDED
data/HISTORY.md
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) Yong Joseph Bakos. All rights reserved.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
## Note: This gem doesn't work yet.
|
2
|
+
|
3
|
+
# Gradekit [![Build Status](https://secure.travis-ci.org/ybakos/gradekit.png)](http://travis-ci.org/ybakos/gradekit)
|
4
|
+
|
5
|
+
A toolkit for accelerating the process of grading student programming assignments for [CSCI261 Programming Concepts](http://mines.humanoriented.com/261) at the [Colorado School of Mines](http://mines.edu).
|
6
|
+
|
7
|
+
## Setup & Dependencies
|
8
|
+
|
9
|
+
Gradekit is written in Ruby 1.9.2 and relies on <tt>make</tt>, some Ruby gems and a working installation of [Sublime Text 2](http://www.sublimetext.com/2) with the <tt>sublime_text</tt> executable in your <tt>PATH</tt>. I recommend using [rvm](http://beginrescueend.com/) to establish your ruby environment and creating a gemset specifically for the gradekit.
|
10
|
+
|
11
|
+
* Ensure you have the <tt>gcc</tt> suite of tools (<tt>make</tt>, etc) installed on your system and in your <tt>PATH</tt>.
|
12
|
+
* Install [rvm](http://beginrescueend.com/), add the <tt>rvm</tt> executable to your path, install ruby 1.9.2 with rvm, and create a gemset called <tt>gradekit</tt>.
|
13
|
+
* Install [Sublime Text 2](http://www.sublimetext.com/2) and add the <tt>sublime_text</tt> executable to your <tt>PATH</tt>.
|
14
|
+
* Create a directory, say, <tt>grading</tt>, within which you intend to conduct your grading work.
|
15
|
+
* Create the file <tt>grading/.rvmrc</tt> that contains the line `rvm use 1.9.2@gradekit`.
|
16
|
+
* From within your <tt>grading</tt> directory, install the bundler gem and the gradekit gem.
|
17
|
+
|
18
|
+
To verify that your environment is ready to conduct grading, execute the <tt>check</tt> workflow:
|
19
|
+
|
20
|
+
gradekit check
|
21
|
+
|
22
|
+
Executing that workflow should tell you that everything is ok, or tell you what dependencies are missing from your environment. This gradekit is only for OSX and Linux operating systems; it will not run out of the box on Windows. Fuck Windows!
|
23
|
+
|
24
|
+
## Quick Start
|
25
|
+
|
26
|
+
Download an assignment "amalgamation" .zip file from [blackboard](http://blackboard.mines.edu) to your working directory. Next, start the grading workflow:
|
27
|
+
|
28
|
+
gradekit grade ##_assignmentName
|
29
|
+
|
30
|
+
When complete, you should see a new Sublime Text window whose sidebar contains a directory called <tt>students</tt> and a file called <tt>##_assignmentName.gradesheet.txt</tt>.
|
31
|
+
|
32
|
+
## How to Grade
|
33
|
+
|
34
|
+
The goal of Gradekit is to accelerate, not automate, the entire grading process. This grading process is as follows.
|
35
|
+
|
36
|
+
* Crack open a beer.
|
37
|
+
* Execute the gradekit <tt>grade</tt> workflow.
|
38
|
+
* Pay attention to the output generated on the console
|
39
|
+
* Make a note of things like "Bad Submission," "Could not compile," or "Execute Manually." In each case, you will need to manually inspect the student's submission.
|
40
|
+
* Review the gradesheet displayed in the Sublime Text 2 window.
|
41
|
+
* Perfect score? Review the student's code and provide feedback regarding style.
|
42
|
+
* Bad submission? Inspect the student's submission. If there is a relevant <tt>cpp</tt> file containing code for the assignment, then manually review, compile, execute, and grade manually.
|
43
|
+
* <tt>make students/username/filename_base</tt> to compile
|
44
|
+
* <tt>students/username/filename_base</tt> to execute
|
45
|
+
* <tt>sublime_text students/username/filename_base.cpp</tt> to view the code
|
46
|
+
* Couldn't compile? Try compiling manually, then execute, review the code, and grade manually.
|
47
|
+
* <tt>make students/username/filename_base</tt>
|
48
|
+
* <tt>students/username/filename_base</tt> to execute
|
49
|
+
* <tt>sublime_text students/username/filename_base.cpp</tt> to view the code
|
50
|
+
* Need to execute manually? This is often due to the student's program not terminating after being executed with input provided by the gradekit. You must manually execute and grade the assignment.
|
51
|
+
* <tt>students/username/filename_base</tt> to execute
|
52
|
+
* <tt>sublime_text students/username/filename_base.cpp</tt> to view the code
|
53
|
+
* Were any items marked 0 or ? on the student's score card? Inspect the code and attempt to award back partial credit, where applicable.
|
54
|
+
* Update the total points as necessary, keeping in mind lateness deductions where relevant.
|
55
|
+
* Once all student scores are updated, methodically enter the grades in Blackboard's "Grade Center." After entering a student's score, paste the contents of the students scorecard as a "Quick comment."
|
56
|
+
* Crack open another beer.
|
57
|
+
|
58
|
+
## Support
|
59
|
+
|
60
|
+
No support is provided for this toolkit outside of the scope of the CSCI261 class for which it is designed.
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
Copyright © 2011 Yong Joseph Bakos. All rights reserved.
|
data/Rakefile
ADDED
data/bin/gradekit
ADDED
data/gradekit.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "gradekit/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "gradekit"
|
7
|
+
s.version = Gradekit::VERSION
|
8
|
+
s.authors = ["Yong Joseph Bakos"]
|
9
|
+
s.email = ["ybakos@humanoriented.com"]
|
10
|
+
s.homepage = "http://humanoriented.com"
|
11
|
+
s.summary = "CSCI261 grading toolkit"
|
12
|
+
s.description = "Grading automation toolkit for CSCI261 Programming Concepts at the Colorado School of Mines."
|
13
|
+
|
14
|
+
s.rubyforge_project = "gradekit"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency "ruby-debug19"
|
22
|
+
s.add_development_dependency "rake"
|
23
|
+
s.add_development_dependency "turn"
|
24
|
+
s.add_runtime_dependency "rubyzip"
|
25
|
+
end
|
data/lib/gradekit.rb
ADDED
data/test/cli_test.rb
ADDED
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gradekit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Yong Joseph Bakos
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-10-04 00:00:00 -06:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: ruby-debug19
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
type: :development
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: "0"
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: turn
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rubyzip
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id004
|
60
|
+
description: Grading automation toolkit for CSCI261 Programming Concepts at the Colorado School of Mines.
|
61
|
+
email:
|
62
|
+
- ybakos@humanoriented.com
|
63
|
+
executables:
|
64
|
+
- gradekit
|
65
|
+
extensions: []
|
66
|
+
|
67
|
+
extra_rdoc_files: []
|
68
|
+
|
69
|
+
files:
|
70
|
+
- .gitignore
|
71
|
+
- .travis.yml
|
72
|
+
- Gemfile
|
73
|
+
- HISTORY.md
|
74
|
+
- LICENSE
|
75
|
+
- README.md
|
76
|
+
- Rakefile
|
77
|
+
- bin/gradekit
|
78
|
+
- gradekit.gemspec
|
79
|
+
- lib/gradekit.rb
|
80
|
+
- lib/gradekit/version.rb
|
81
|
+
- templates/gradesheet.txt.erb
|
82
|
+
- test/cli_test.rb
|
83
|
+
- test/test_helper.rb
|
84
|
+
has_rdoc: true
|
85
|
+
homepage: http://humanoriented.com
|
86
|
+
licenses: []
|
87
|
+
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
|
91
|
+
require_paths:
|
92
|
+
- lib
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: "0"
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: "0"
|
105
|
+
requirements: []
|
106
|
+
|
107
|
+
rubyforge_project: gradekit
|
108
|
+
rubygems_version: 1.5.2
|
109
|
+
signing_key:
|
110
|
+
specification_version: 3
|
111
|
+
summary: CSCI261 grading toolkit
|
112
|
+
test_files:
|
113
|
+
- test/cli_test.rb
|
114
|
+
- test/test_helper.rb
|