15

The degree of automation that you can achieve depends on how you want to grade. The most valuable type of grading (to a student) does not only cover whether the code works or not, but also offers suggestions as to how to make it better, including readability, design, and so no. And that you cannot totally automate. You can (and should) automate basic ...


10

Yikes, that doesn't sound like a fun way to grade. Sounds about like what I do with students that are competing in ACSL competitions. But that's only 6 or 7 students, 4 times a year. I can't imagine trying it with 100 students all year. Here's what I'm doing, and what I've done. Online Autograder This is what I'm doing now. Kids login to Canvas and it ...


9

For simple stuff I've used CodingBat. They've got an authoring system buried on the site. It's not terribly difficult to create your own questions, although the instructions are pretty wordy. When you create a problem there are a set of fields to fill in. I'd attach a screenshot, but the network I'm on blocks imgur. I'll try to come back and add an image ...


7

I am a strong advocate for code interviews. I make principles of style into about 50% of a lab grade (though I do permit kids to go back and refactor after an interview for full credit.) For some context, I discuss regularly that there are two audiences of code: computers, and people, and that these audiences have very different needs. Since my high ...


6

I would recommend repl.it classroom It allows creation of a course and assignments within that course. Assignments can be auto-graded using unit testing (JUnit) or by providing inputs and comparing expected outputs against actual outputs. Students get feedback on what test cases passed and which did not. These can then be converted directly into student ...


5

First let me say that I think it is a good idea to automate as much as possible, and that there are tools that will help this. The mystery test However my experience with professionals is that there will always be a few that try to defeat the checker, not maliciously (they just don't get it; they are minimising error-messages, not minimising errors). So ...


5

Harvard's grading policy for CS50 is worth looking into. There are four components for the grade on problem sets (each of which involves submitting code). The overall grade is calculated as scope * (3 * correctness + 2 * design + 1 * style) Scope: to what extent does the code implement the features required by the specification? Correctness: to what ...


5

We use the Eclipse plugin Checkstyle. The plugin is configured with a set of rules (defaults styles are available with the plugin), and then generates a set of warnings for any violations of these rules. Toward the end of our CS1, we introduce students to the tool (the students have been taught our expectations throughout the semester). After they are ...


5

I use VPL (Virtual Programming Lab) for Moodle. In my case, it is just used for the introductory PHP classes (since HTML and DB interactions aren't possible), but it supports a wide range of languages, including Java. If you have Moodle available in your school, it is just a matter of installing the plugin. Then you're able to create your own tasks and ...


4

The textbook I use (Horstmann's Java for Everyone) has an autograder that the author has written. He has posted many of the exercises from his textbooks. You can find it at: Cay Horstmann's CodeCheck autograder There is an authoring page that shows how to write your own problems. I've found this to be the easiest of all the tools I've tried when it comes to ...


4

The key to efficient grading of assignments is to build easily gradable assignments in the first place. This does not imply easier problems, but, as unit testing makes code testable, this kind of discipline makes assignments gradable. Like many of the suggestions here, JUnit test cases are an important factor, but to use them you need to more completely ...


4

Adding static code analysis can be useful in determining if students have "over-engineered" the solution. While dynamic testing can show that the program produces the correct output, there are many examples of correctly working programs that I would not consider acceptable. Students can sometimes miss an important concept that you are attempting to assess, ...


4

Have you thought about having a solution that you create and test the students test cases against your solution? Then you have a stable platform for running the student defined tests. Also run test cases which you prepare against the student's code. Now you have graded the two parts independently of one another. Just out of curiosity, what did you use for ...


3

If you run all implementations against all tests, then you can see anomalies. If you put results into a grid, then any failures should show up as a line: horizontal for implementations, vertical for tests. Any odd failures will still need investigating, but there should be few.


3

At the TU Delft we've developed WebLab, which is used in various CS related courses. It has support for programming assignments, for which students code their solutions in a web-editor, and run their code against their own tests, and the spec-tests. Grades are automatically calculated based on the number of succeeding specification tests. As a Course ...


3

Using lint tools is the correct answer. But not the easy one. A lot of people here have suggested (and correctly so) to use a static code analyzer or linter. However, these tools can overwhelm students, especially beginners, with a lot of information that they may not understand. I suggest using an auto grading tool that incorporates lint reports in it. ...


3

I don't think you can just by using an auto grader. I use an auto grader to tell me if the code solves the problem it's supposed to solve. And I tell my students that any code that solves the given problem is correct. Some people write a 2 line solution, some write a 50 line solution. But I don't consider either one more correct than the other. Generally ...


3

(I am submitting 2 answers, because they are very different takes on the same problem, and merging them together would be of little value) This is a full-automation setup I have used in a C++ data-structures subject. Install an automated answer judge (say, domjudge or mooshack). Setup username/password pairs for each of your students. Configure the judge ...


3

I would recommend looking into a static code analyzer or linter for whichever language you are using. These are designed to examine code for any unintelligible code and to make sure that the code follows the best practices. For example, a code analyzer or linter may suggest that you limit your line length, keep your methods small, and reduce unnecessary ...


2

Disclaimer: I am one of the authors of this free service. TL;DR: Use AutoGradr.com which has been battle tested in university classrooms AutoGradr lets you create your own labs and projects Labs: small, bite-sized questions to help students get familiar to a new concept. Students work in AutoGradr's web IDE and get instant feedback. Projects: suitable for ...


2

That seem an important question. Here is my input. 'm using repl.it for a month, created ~60 assignments in 10 classrooms (java,c#). (Both basics, and also recursion, lined-lists and Queues. ) The idea of web-based-ide & auto-checking & status-report-to-teacher is fantastic ! It gets students very fast to code, and see results, also teacher ...


2

Very interesting strategy. You are essentially putting the 10% test case-writers in the role of a sophisticated recruiting agent who is "interviewing" the rest of the 90% of the class for a job. It is probably not really fair, since the 10% are probably not sufficiently mature to identify the key concepts to be tested, but the class discussion (or perhaps ...


2

I use an online auto grader for probably 95% of the assignments my students - high school, AP-A - do in class. Before that I would run unit tests on the submitted code and then leave comments. But I've found that the immediate feedback, especially on smaller assignments, helps them learn to solve the problems on their own. Plus, it saves me from having to ...


2

I have seen universities use linters and test suites to automatically check the correct state of the assignment so it can be submitted. Here is an example in Python or the student assignment helper programs in C, used for the book CS:App as another example of possible small programs you could include with assignments to make this easier to review submissions....


1

These are some popular tools that the community should look into for a reasonable grading setup: AutoGradr.com (Disclaimer: I'm one of the authors of this free tool) HackerRank.com domjudge.org mooshak.dcc.fc.up.pt


1

In my high school class, decades ago, all programs had to be submitted to a fellow student of choice for a "peer review" and critique before being submitted to the teacher. People took these reviewing tasks seriously, because the score for the review was the same as the score for the underlying program itself. That tended to improve the coding practices of ...


1

We've been using Web-CAT. It's ok. It certainly motivates students to read error messages more closely. EDIT: Here are three things that have bugged me about Web-CAT: I remember having difficulty determining exactly where my unit tests were supposed to be uploaded; there's a user folder and an assignment folder, and one something's in the wrong place it'...


Only top voted, non community-wiki answers of a minimum length are eligible