CSCI 3310 uses a system for automatically grading your projects and ensuring their correctness. The autograder is designed to help you do the projects correctly and to provide feedback in a timely fashion. Importantly, you are able to submit to the autograder multiple times per project (instead of just once at the very end).
Your project submissions will be graded automatically by running them against a series of test cases (in which your program's output is compared to the correct output for each test), and the results will be emailed back to you. Be warned that the results from the autograder will not be very illuminating; they won't tell you where your problems are or what the tests are actually doing. Instead, the primary purpose of the autograder is to help you know to keep working on your project, rather than thinking it's finished (as a result of insufficient testing) and submitting a broken program.
The best way to debug your program is to write your own test cases, figure out the correct answers (i.e., assuming that your program follows the project specification), and then compare your program's output to the correct answers. Designing test cases will also give you a better understanding of the concepts covered by the projects. Later projects will require you to submit your test cases along with your program itself, and your tests will themselves be scored to determine how well they exercise the program.
The submission policy of the autograder is as follows:
As is hopefully obvious, the autograder submission policy is designed to incentivize you to start the projects as early as possible (luckily, doing so is already in your best interest)!
In addition to the autograder's evaluation of your program's correctness, I will manually evaluate your final submission on issues such as program design, efficiency, the clarity and completeness of your documentation, coding style, etc. Your final score on each project will be a combination of the autograder score and the hand-graded score.
The autograder is installed on the class Linux server, where you have been provided an account that will allow you to log in and submit your projects to the autograder. You are also strongly encouraged to develop your programs on the class server.
Note: If you choose to write your code on a machine other than the class server (e.g., your laptop), it is critical that you test it on the class server before submitting. If you submit a program that does not run on the class server (even if it compiles and runs on your own machine), you will waste one of your autograder submission! Lastly, note that the autograder will compile submissions using the -std=c++11
flag, and therefore you are welcome to use features added in C++11 (the 2011 standard of C++). However, you should not use any features added in more recent standards (such as C++14 or C++17), as these will not compile upon submission even if they work on your development machine.
Access to the server is by keypair, which you should have received via email from me. If you need a refresher on the use of a keypair, read the relevant section of the Unix tutorial.
The hostname of the class server is turing.bowdoin.edu
. Login to the server using your keypair as described in the tutorial (password-based logins are disallowed and your server account does not have a password).
The server provides a full-fledged Linux environment with all the standard development tools (editors, compilers, version control, etc) preinstalled. If there is any software that you would like to use that is not already installed on the server, please let me know.
Once logged into the server, you can submit projects to the autograder using the submit3310
command, like so:
submit3310 <projectnum> <file1> <file2> ...
Note that all C++ source files should end in ".cc". For example, to submit Project 1 (the inverter), you should execute the following:
submit3310 1 inverter.cc
The system will package up your project and send it to the autograder. Within an hour or so (a few minutes in most cases) you should receive an email telling you how your submission did. Be sure that emails from the autograder are not trapped in your spam filter. If you do not receive a response within an hour of submission, please email me. The official time of submission for your project is the time that the project is received by the autograder. If you send in anything after the due date, your project will be considered late (and will use up your late days or be penalized).
WARNING: If the program you submit does not compile, or generates any compiler warnings, it will fail all of the tests automatically. Thus, you should never submit a program with compiler warnings, even if the program still runs. Remember that warnings may differ slightly on the class server from your local machine, so be sure to test on turing
using the -Wall
compiler flag.
Finally, remember that the autograder is not a debugger; while it will tell you how your program did, it will not tell you what you did wrong. Also remember that the earlier you start on the projects, the greater number of autograder submissions with feedback you will have.
Many parts of the autograder were initially developed at the University of Michigan by Pete Chen, Brian Noble, Atul Prakash, and others.