Skip to main content
  1. Teaching/
  2. teaching/

·4 mins

Grading Rules for Projects
#

While each project is slightly different (and you should read to the project page for each project), there are some things that all projects must do. They are listed here so that I don’t have to repeat myself on each project page.

README file
#

Each project should have a README file (called README or README.txt or README.md). The README should include the following information:

  • Your name
  • Your EID
  • The number of slip days you’re using on this project
  • The number of slip days you’ve used in the course so far
  • Any stretch goals you attempted, and how to enable them in your code

Compilation
#

Your project must compile on the basement lab computers with no warnings or errors. Code that simply does not compile may receive a zero. Code that compiles with warnings will receive a reduction in points.

While you can opt to physically go to the basement if you’d like, you can also access the basement hosts remotely. Look at the end of this document for a list of all basement lab computers. If you’re not familiar with remote access, check out Erik Yu’s guide. If you don’t know how to navigate the command line, check the course resources for some tutorials that might help.

Maintain Skeleton Code
#

The skeleton code is given out to make the projects easier to start, and also so that I can grade the projects. Unless otherwise stated, you may not change anything about the skeleton code (function/method signatures, data types, or functions that are already implemented) or delete any code.

You may elect to add additional functions/methods/data that did not exist in the skeleton–in fact, this is expected for many projects.

Single Tarball
#

You should always submit a single tarball (compressed tar archive) with the names specified in the individual project pages. Each tarball should have one (and exactly one) folder inside of it. Inside that folder should be all your source files.

If you are required to submit a tarball named tarball.tar.gz with a folder named srcfolder, you would run the following command:

tar -czvf tarball.tar.gz srcfolder/*

DO NOT DO THE FOLLOWING:

cd srcfolder
tar -czvf tarball.tar.gz *

This will spew files all over the directory that I extract the tarball in, and then I will get very grumpy because I have to clean it all up.

No objectfiles
#

Make sure that you do not have object files in your tarball. This includes any executables and any .o files. For makefile-based projects, you can fix this by running make clean (unless you have modified the makefile).

Testing
#

Testing will be done by running your code against machine-generated cases in an automated testing framework. While there are usually a few provided test cases with the project, these merely make sure your code is outputting in the correct format and isn’t entirely broken. It is heavily recommended that you write additional test cases to make sure your code is working correctly.

Undefined Behavior
#

Your code must not exhibit any undefined behavior. Fortunately for you, detecting undefined behavior in an automated manner turns out to be a very difficult task.

Instead, we will use the following proxy for undefined behavior: if your code produces incorrect results under high optimization, your code will be assumed to be exploiting undefined behavior somewhere (all properly-conforming C++ code should generate the same results under most optimization levels).

Your code will be built twice: once with -O0 optimization and once with -O3. If the results differ between the two, you will lose some points on that test (usually half).

Style
#

A small number of points on each project will be for style. Make sure your code is commented and adhere to good programming practices.

List of Basement Computers
#

You can check the public unix host list to find out which hosts are available and which hosts are heavily loaded.

As of 2019-09-08, the following hosts were in the basement lab:

  • assassin-bug
  • atlas-moth
  • blow-fly
  • bumblebee
  • bumblebee
  • cicada-killer-wasp
  • damselfly
  • deaths-head-hawkmoth
  • die-zauberflote
  • don-giovanni
  • dung-beetle
  • earwig
  • eugene-onegin
  • falstaff
  • fidelio
  • fire-ant
  • firefly
  • giant-mesquite-bug
  • horse-lubber
  • idomeneo
  • il-trovatore
  • iron-clad-beetle
  • katydid
  • la-boheme
  • la-traviata
  • le-nozze-di-figaro
  • luna-moth
  • madama-butterfly
  • mealybug
  • mrs-bugly
  • mud-dauber
  • nixon-in-china
  • pagliacci
  • parsifal
  • peanut-head-bug
  • planthopper
  • praying-mantis
  • rhinoceros-beetle
  • rigoletto
  • robber-fly
  • roly-poly
  • salome
  • sandfly
  • scarab-beetle
  • silverfish
  • tosca
  • turandot
  • velvetworm
  • walking-stick
  • wozzeck