UNB/ CS/ David Bremner/ teaching/ cs4613/ racket-assignment

Marking scheme for Racket assignments

Undergrads Excellent (105%) Good (75%) Minimally satisfactory (55%) Needs improvement (0%)
Graduate Students 100% 70% 50% 0%
Correctness (20) 1

Correct to the spirit of the assignment. Shows evidence of deeper understanding of the assignment, or defensive programming.

<+1> / <+0>

Correct to the letter of the assignment. No obvious bugs.

<-5> / <-6>

Almost completely correct, perhaps one incorrect case / input.

<-9> / <-10>

Some serious correctness problem.

<-20>

Test Design (10) 2

At least one extra test per function, tests are designed and documented with respect to problem definition. Corner cases are considered.

<+0.5> / <+0>

At least one extra test per function.

<-2.5> / <-3>

Complete test coverage, as indicated by DrRacket

<-4.5> / <-5>

Incomplete test coverage, as indicated by DrRacket

<-10>

Coding Style (10) 34

Meaningful identifiers. Good racket indentation Good line width and line breaks. Granularity of functions is well thought out.

<+0.5> / <+0>

Meaningful identifiers. Good racket indentation. Good paren placement.

<-2.5> / <-3>

Meaningful identifiers. Reasonable indentation.

<-4.5> / <-5>

Pervasive bad identifiers or bad indentation.

<-10>

Idiom (10) 5 6 No inappropriate mutation or global variables. Follows assignment specified constructs and / or library functions. Solution is elegant. <+0.5> / <+0>

No inappropriate mutation or global variables. Follows assignment specified constructs and / or library functions.

<-2.5> / <-3>

No inappropriate mutation or global variables

<-4.5> / <-5>

Inappropriate mutation or global variables.

<-10>


  1. For top marks here, I’m expecting you to deal correctly with some aspect of the problem not completely specified in the assignment.↩︎

  2. Note that you are penalized twice for missing test coverage. Don’t do that.↩︎

  3. For basic style issues, see the Official Racket Style guide↩︎

  4. By granularity I mean the organization of code using local bindings and functions to avoid code duplication and make it easier to read.↩︎

  5. Elegance of code is pretty subjective. Conciseness is part of it, but only because it often makes the entire solution easier to comprehend. To get top marks here the TA or prof should wish they had come up with your solution.↩︎

  6. Unless the assignment specifically calls for it, or you clear it with the prof beforehand, mutation and global variables are inappropriate.↩︎