Creating advanced evaluation type problem
CodeZinger authoring tool provides two paths to create autograded coding problems/ assignments:
- Standard Evaluation: With this approach, a coding problem can be setup for black box
testing of student's solution by comparing ‘output generated by student’s code' vs.
‘expected output’. Student earns ‘All-or-Nothing’ score for each test case.
- Advanced Evaluation: With this approach, at a time of grading, faculty’s custom
evaluation code will be executed to evaluate the student’s solution. This is kind of white box
testing of student’s solution by validating method’s output. This approach can be
adapted to check intermediate output, multiple valid output, etc. e.g. Each method in a student’s
multiple method solution can be evaluated separately and it is possible for student to earn partial credit for
each test case.
Create Advanced Evaluation type problem
Step-1: Problem Details
- Select evaluation method as "Advanced Evaluation"
- Select Programming Language(s), Suggested Time to solve, and enter Problem
Title and Problem Statement.
- Select valid Tags for the problem. You can add custom tags too.
Step-2: Code Template
- Select template from available starter code templates. Or, you can create custom template (and also save for
later re-use too). In Advanced Evaluation, a starter template is mandatory with logic to evaluate student submission.
Some considerations while creating a starter template for this type of problem:
- Main method required for languages such as C, C++, Java, etc. whereas in languages
such as Python, you need to include Evaluation method. Main/Evaluation method of the template must print an integer (between 0 and 100) in a new line as last generated
output. CodeZinger scoring engine will ignore output generated in any lines
before the last line. This method should include logic to evaluate student's solution by comparing
output of student's solution with expected output.
- A student is assigned a score based on last generated output number. It is a percentage of score-weight
for test case. e.g. Let's say, a method prints a final output 70 and
that test case has weight 50, final score for that test case is = 50*70/100 = 35.
- Your evaluation code should include logic to generate last output number and print it.
- It is recommended you set the evaluation code as read-only file (or in a single file
problem, have your evaluation code as read-only lines-in-a-file) to protect the logic
of calculating last generated output number and printing it. (Also, in languages requiring entrypoint,
please set entrypoint file as read-only to prevent students from being able to bypass
your Main/Evaluation method).
- You can include logic to evaluate multiple methods in student's solution and generate final score.
Step-3: Test Cases
- In the single data field called Input, provide input values and expected
output values. [Your Main/Evaluation method must include code to read input and expected output
values entered in your test cases.]
- Enter “Score Weight” for each test case.
- Set "Execute in Quick Run" checkbox to have CodeZinger execute test in Quick Run. You should
have at least one test case available for Quick Run.
- Set "Hidden" checkbox (optional) to have CodeZinger hide test case from student but execute test case on
student submission to check for brute-force solution.
- Set "Add command line parameters" to pass command line parameter to Main method.
Step-4: Provide possible solution to validate problem
- You are required to enter a possible solution (to simulate submission of a solution by student) to validate
starter/evaluation code and test cases.
- You may also specify “Language Compiler configurations” to be used at time of code execution.
- “Run All Test Cases” is available to iteratively validate if your problem is functioning correctly.
- If your sample solution is ‘passing’ all test cases, your coding problem may be ready to be
activated.
- Click “Verify & Activate” to activate your custom coding problem.
After activation, problem will be available to be added to any of your CodeZinger classes.