When creating a set-up for an exam, there are a few things that need to be done differently than a regular assignment. This page will give the most important details on how to set up an exam that are different from setting up an assignment.

Basic Tests

Basic tests must be written to give as little information on the correctness of student code as possible. For this reason, basic tests should be designed to make sure that a function call returns the proper type, rather than checking that a function call returns the expected value. For example,

(expected (symbol? (func-call ...)))
(result true)

Of course, "symbol?" is only used here as an example, and can be replaced with any other type as well.


To continue with the theme of hiding significant details about tests from students, you will want to have constants defined for all the values you want to pass into function calls used in tests. This will prevent students who receive an arity error from seeing the exact parameters we use for our tests. You will want to be careful with how you name these constants, as since they are being provided to students, if a student also has a constant/function of the same name, it will throw an error about redefining.

Test Values

For exams, it is not unusual to have differing values for each test.rkt file. Typically in assignments one test.rkt file will have a value of 1 so that if a student passes, then they get +1 added to their correctness out of the total number of test.rkt files there are. However, if the instructor gives you a breakdown of the tests they want and the values for each of them, then you will want to create an options.rkt file on the same level as the test.rkt file, and within the options.rkt file, you will just want to specify the value (i.e. "(value 2)" for a value of 2).


When setting up an exam, you may also want to turn off the check in the computeMarks script that filters out students who have not completed A00. While by the time a midterm or final is being written, all students should have completed A00, there may be exceptions that complicate our process, and so turning off this check will allow those who have not completed A00 to have their marks given in full anyways.

Topic revision: r1 - 2021-12-21 - DylanHiguchi
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback