CodeCheck®

CodeCheck is an anonymous, author-friendly autograder. It is optimized for simple programming assignments that provide practice and build confidence.

Why CodeCheck?

CodeCheck is an open source project. .svg

Try It Out

Check out this example. If your report looks like this, keep on trying until all test cases pass.

Test Banks for Java, Python, C++

Video Tutorial

Thanks to Nicole Hite from the University of North Carolina at Charlotte/zyBooks for this video tutorial.

.png

Frequently Asked Questions

What browser should my students use?
Firefox or Chrome.
How do I register?
You don’t.
How do my students register?
They don’t.
Do I need to adopt one of your textbooks in order to use this service?
No.
Can I group multiple problems into a single assignment so that I don't have to give students a separate URL for each problem?
Yes. Use the assignment feature.
Can I put CodeCheck problems into a learning management system (LMS) such as Canvas, Moodle, or Blackboard?
Yes. Follow the LTI instructions to install CodeCheck as an LTI tool into your LMS. Then simply provide the problem or assignment URL as the “launch URL”.
How do students submit their solutions for grading?
If you assign an individual programming problem, tell your students to click on the Download button to get a signed zip file. Give them instructions on how to submit the file to you (by email, by submitting it into your learning management system, carrier pigeon, whatever).

If you use the assignments feature, visit the assignment page with your private URL.

If you use CodeCheck as an LTI tool inside your learning management system, you can browse student work by visiting the assignment as an instructor.

How do I know that a student didn’t tamper with the signed zip file?
Run jarsigner -verify Submission.signed.zip. You should get a message jar verified.
Can I write my own programming problems?
Sure. Follow these simple authoring guidelines.
Can I edit problems or assignments that I wrote?
Yes, provided you made a note of the private URL. The private URL allows you (or anyone else who has it) to edit the programming problem or assignment. Clearly, you don't want to share it with your students.
Why don't you just use logins with email addresses and passwords like everyone else?
If I did, your university might not allow you to use the service. They might (somewhat reasonably) argue that one individual can't possibly put together a hack-proof regulation-compliant site that adequately protects private information.
What is the cost of this service?
There is no charge for students or instructors at public or non-profit institutions. If you want to use the service for another purpose, whether commercial or not, contact me.
Under what warranty is this service offered?
Under the “you are lucky if it does anything” warranty. More explicitly, the legal department wants you to know the following: THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
Will you sign some paperwork that my administration requires?
No.
Can I post my solutions to the problems on this site so that other students don't have to do the work?
The problems on this site (including the problem statements, starter code, titles, IDs, and arrangement) are copyrighted, and you may not publish any of those. You can, of course, publish your own solutions (without the problem statements, starter code, titles, IDs, or arrangement). But will it make you look responsible and employable?
I have suggestions for improvement. Whom should I contact?
Send an email to Cay Horstmann (cay@horstmann.com).

Privacy Statement

CodeCheck collects the following data:

The “CodeCheck ID” and “edit keys” are randomly assigned. As long as learning management systems are properly configured, they assign random LMS IDs.

The data is used to display assignments to students, to collect submissions from students, and to display submissions to instructors. Instructors can see submissions for the assignments that they create.

Assignments are stored indefinitely. Submissions may be periodically removed.

The data is stored in virtual machines and databases of commercial cloud providers. There is a risk of that data to become public. If you are concerned about disclosure, do not include private information in problems, assignments, or submissions. In particular, do not provide your name, college ID, email address, telephone number, or any password.

Log files may contain IP addresses from browser requests. Log files are stored for a few days and may be analyzed to fix problems with the service.

CodeCheck uses browser cookies to manage session state, and to store the “CodeCheck ID” and the “edit key”.

CodeCheck does not use third-party cookies. CodeCheck does not send any data to third parties except to learning management systems when chosen by instructors.

To exercise your “right to be forgotten”, send an email to cay@horstmann.com with the URL of the assignment, programming problem, or submission that you wish to have removed. Be sure to include your CodeCheck ID+edit key or your LMS ID.

Acknowledgments

Thanks to Sunita Rajain and Tyler Wasniowski from San José State University for developing a predecessor to the assignments feature.

Thanks to Chaz Chang from San José State University for implementing the “edit URL” feature that enables instructors to edit problems. Previously, an instructor had to make a new problem to fix any issues with a problem.

Thanks to Greta Yu from Evergreen Valley High School for implementing multiple editable areas. In older versions of CodeCheck, the entire code was in a single text area and it was not possible to protect code from being edited.

Thanks to Anthony Trinh and Hien Vu from San José State University for providing text areas for inputting and editing problems. Previously, it was only possible to upload a zip file.

Thanks to Arhan Chaudhury of Mission San Jose High School for reviewing the Python question bank and to Stephen Gilbert of Orange Coast College for cleaning up the C++ question bank.

Thanks to CodeDay project participants Oscar Diaz Vega, Anmol Gill, and Ngoc Nguyen, for adding features during Summer 2022. They closed issues 1, 3, 4, 8, 10, 15, and 23. Thanks also to Arhan Chaudhury for his help with issue 14 and the Seq implementation in the tracer.

CodeDay 2023 project participant Thien Pham implemented support for Rust. Alexander Chang, Joshua Estebat, Yilan Fan, George Jones, Ledi Li, Stephanie Ng, and Jaehoon Song closed issues 5, 16, 17, 42.

Thanks to Sukanya Suranauwarat of Johnson & Wales University for suggesting and testing the Bash support.

CodeDay 2024 project participant Kristine Nguyen developed cloud installation instructions for AWS.

Their work made CodeCheck better, faster, and more prepared for the future. If you would like to participate, please contact me!

Bug Report Form

If you have found a bug with CodeCheck, then please send a report.

This is for reporting problems with the CodeCheck service only. If you are a student and have trouble solving an assignment, check with your instructor.



Feature:


× =