MP5 Schedule Me!
Grading, Submission, and Other Details
CS 241: Spring 2012

ORGANIZATION OF FILES

This file is one of two instruction files associated with machine problems in CS 241. This file describes how to submit your MP, grading details, and other details that are shared between all MPs in CS 241. With each MP, there is a separate file that explains the specific details on the MP.

TESTING YOUR PROGRAM

In CS 241, your program will only be run by course staff on 64-bit EWS Linux Terminal Server. The address of the 64-bit EWS Linux Terminal Server is linux.ews.illinois.edu.

You may access these boxes via SSH using any program that understands the SSH protocol (ex: `ssh` on Mac/Linux, `putty` on Windows).

Since all testing and grading by course staff will be done on the terminal server machines, it is STRONGLY ADVISED that you test your program on a terminal server machine before submission. The fact that your program "runs perfectly" on a CSIL machine will get you zero points if your program does not run at all on an EWS terminal server machine.

GRADING YOUR PROGRAM

The grading of each MP will be broken up into three different categories.

  • Standard Machine Problem Correctness (90%):
    For each MP, the course staff will run automated tests by our autograder on every file that has been submitted by the due date. This autograder will have a number of different tests, each assigned with a weight based on its importance, and your grade will be simply be the result of your total score by the autograder.

    As soon as your program is autograded, an autograder report will be placed inside your subversion directory for CS 241. This report will explain how your program was tested, what output your program gave, and if that output was correct or not.

    Due to the large size of this class, the only way to ensure fairness across all students is to use the same autograder for every student and for no exceptions to be made. If you believe that your program works completely correct, it may be an error in the autograder. For errors in the autograder, we will correct the autograder and re-run the autograder on every student's submission. However, if the error is in your code -- even if it's a minor error that results in a large point drop -- exceptions will not be made since we are unable to examine the errors of every single submission.

    Grades may change as the autograder is rerun with corrections. This may result in your MP report grade changing. Until grades are posted on Compass, they should not be considered final and may still go up or down based on your program's correctness.

    Finally, to recieve full credit, your MP must run in a resonable amount of time. After an excessive amount of time, the autograder will kill your process and award you points for only the tasks you've completed up to the point when the autograder killed your program. We will always set the time out to be at least ten times longer than the TA solution takes to run.

  • Memory Management (5%):
    Unlike higher level programming languages such as Java and C#, there is no garbage collector in C. Instead, every single bit of memory that you allocate in a C program remains allocated to your program until your program frees that memory -- even if there doesn't exist a pointer to that memory because you've cleared it or because it has gone out of scope.

    We will use a common C dynamic analysis tool called `valgrind`. You can run valgrind on your own program by running the following line of code:
    valgrind myprog arg1 arg2 ...
    To receive full credit for this portion of the grading:
    1. Your program must be reported at "leak free" by valgrind by displaying the following text in its valgrind report:
      All heap blocks were freed -- no leaks are possible.
    2. Your program must perform tasks in a reasonable amount of memory. You may lose points if you complete a task by simply allocating a *large* amount of memory for a task that requires only a small amount of memory. For example, if you need to program a dictionary to store key/value pairs. Using an array[1000000] may work, but hardly manages memory well (or works for more than one million entries). You will need to use over ten times the optimal amount of memory before any points would be deducted for excessive use of memory.

    Finally, if your program does not complete significant parts of the MP, you may not be awarded points for memory management. For example, some MPs may require you to open/read/write a large number of files. If you never use open()/fopen() because you didn't complete that part of the MP, you will not receive memory points for correctly close()'ing your files.

    You will be awarded full credit or no credit. There is no partial credit for this 5%.

  • Strictly Correct Memory Usage (5%):
    In the previous 5%, the grading looked at if you correctly free'd the memory you allocated in your program. In this 5%, the grading looks at if you didn't write into memory you didn't allocate.

    Using the same valgrind tool, you will receive full credit for this portion of the grading if and only if your valgrind report shows:
    ERROR SUMMARY: 0 errors from 0 contexts (suppressed: # from #)
    If the error summary does not report 0 errors, valgrind will have displayed other error information above the error summary giving you details of where the illegal access occurred. For example:
    Invalid write of size 2
      at 0x400519: main (in /home/cs/wfagen2/temp/mystring)
    Address 0x4C37039 is 9 bytes inside a block of size 10 alloc'd
      at 0x4A05809: malloc (vg_replace_malloc.c:149)
      by 0x4004A9: main (in /home/cs/wfagen2/temp/mystring)
    is generated by a strcat() past the end of a memory region.

    You will be awarded full credit or no credit. There is no partial credit for this 5%.


As with course policy on all assignments, you will have one week after your grade has been posted to make any regrade requests. All regrade requests will be done offline and should be submitted by e-mail to:

    cs241help-sp12@cs.uiuc.edu

We will confirm that we have received your e-mail and we will e-mail you back when the regrade has been done. Please use your @illinois.edu address when e-mailing us.

If you choose to come into office hours, we can look at your program and work with you to try and find and help you understand what was wrong with it. However, even if we are unable to find anything wrong in office hours, the regrade will still be done offline and no points will be awarded to you in office hours. This ensures that there is a single, fair, and universal grading scheme across all students. In fact, it's often the case that we will have you e-mail us regarding the regrade even if you have come into office hours.

SUBMISSION

All MP submissions will be done via subversion (svn). Subversion is a simple version control system that is used in nearly all open source projects today. If you haven't used svn yet, you will be using it for a number of different CS classes here at Illinois.

The URL to the CS 241 svn is: https://subversion.ews.illinois.edu/svn/sp12-cs241/

If you have never used svn before, there are step-by-step instructions on the course website on how to get svn up and running for you.

Inside the svn, you'll find that directories will be created for you when MPs are released. These directories will simply be the name of that MP (eg: mp1, mp2, mp3, etc). Those directories are where we will pre-upload a fresh copy of the MP. You must edit/replace those files and submit them to the svn server for your MP to be graded.

Please note that SVN is the only way to submit MPs. Your MP WILL NOT get graded if you e-mail it to us, if you upload it somewhere on Compass, or if you place it somewhere else. You should always check that the correct version of your file is uploaded before the due date by going to the svn web interface by going to: https://subversion.ews.illinois.edu/svn/sp12-cs241/

Please note the late policy on the course website, as it applies to submission on svn. Do not submit a new copy of your program after the deadline unless you want that copy graded, with the late policy applied based on the time of your last submission.
 All Data Structures Files Functions Enumerations