Rubric


General Grading Philosophy

The mid-quarter assessment will be a live problem-solving session. The assigned tasks and followup discussion are designed to provide a rich context in which you can demonstrate the skills and relevant understanding you have built up thus far in the course. Our evaluation is less focused on "Do you have the correct answer?" and more about "Do you communicate understanding of the key concepts and demonstrate proficiency in working through how to express your ideas in C++?"

We have designed our rubric to reflect this intention. For each problem, we identified a small number of broad categories that represent key content areas for skills and understanding. Each category will be evaluated using a holistic bucket grading scale like that we use to give you feedback on your assignments. This feedback will indicate where you currently have strengths where you have further opportunities for growth.

Grading scale

The category scores use a scale of βœ”+, βœ”, βœ”-, and NP. Scores of βœ”- and above represent a satisfactory score on the assessment. Each category will be graded constructively and in a feedback-oriented manner, following the same general guidelines:

If you arrive to the assessment adequately prepared to work through the problem, make a reasonable attempt to solve it, and engage with the section leader in constructive discussion, this is sufficient for the standard of satisfactory work βœ”-. From there, we use the βœ” standard to communicate to students that they have a solid grasp of the course material so far and βœ”+ to signal to students that they are really excelling!

We believe that all of you have the knowledge and capability to reach the threshold for satisfactory work. We also hope to award many βœ” and βœ”+ to acknowledge the mastery you are building through your dedicated efforts.

On the other end of the spectrum, the score of NP will be reserved for situations where there was little to no attempt made to engage with the specifics of the problem, along with minimal ability to demonstrate the basic fundamental knowledge. Our sincere hope is that we have to use this category very sparingly if at all. We want to encourage you all students that if you prepare and put in an honest, sincere effort to engage with the material during the assessment, you will be well on your way to satisfying the passing criteria for assessment.

Remember: Your section leader is always trying to give you as many possible opportunities to succeed and demonstrate your knowledge as possible! So if you think you're getting stuck or don't know where to go next, ask them questions and try to engage with them - they would love to help you get back on track so that you have more opportunities to make positive progress through the problem.

ADT Rubric

The rubric of evaluation for the ADT portion of the assessment will be broken into 4 categories: Use of Data Structures, Design Decision Communication, Code Sketch, Knowledge Fundamentals

Below is the qualitative evaluation matrix that your section leader will be using to assess your thoughts and approaches to the ADT problem.

Β  Use of Data Structures Design Decision Communication Code Sketch Knowledge Fundamentals
βœ”+ Chooses an appropriate data structure that meets specification Can accurately reason about efficiency and justify design decisions Correct use of data structure operations; handles specified edge cases Demonstrates strong factual understanding of different ADTs and their properties and tradeoffs
βœ” Chooses a suboptimal data structure that still solves the problem Justifies most design decisions but needs prompting from SL to reason about efficiency or choices Correctly outlines most of the functionality but misses edge cases without guidance from SL Demonstrates mostly correct understanding of different ADTs and their properties and tradeoffs
βœ”- Chooses a data structure that is not suitable for the problem but is able to modify approach with SL guidance Cannot initially justify design decisions or reason about efficiency, but is able to make progress with support of SL Generates elevated pseudocode for most of required functionality, requires significant guidance from SL to resolve issues Demonstrates some correct understanding of different ADTs and their properties and tradeoffs
NP Unable to choose data structure or reason about choices Unable to justify decisions or justifies with incorrect logic Unable to produce an elevated pseudocode outline for any parts of the required functionality Understanding is weak/incorrect

Recursion rubric

The rubric of evaluation for the Recursion portion of the assessment will be broken into 4 categories: Decision Tree and Recursive Strategy, Base Case and Pruning, Recursive Case and Making Choices, Gathering and Unifying Results

Below is the qualitative evaluation matrix that your section leader will be using to assess your thoughts and approaches to the Recursion problem.

Β  Decision Tree and Recursive Strategy Base Case and Pruning Recursive Case and Making Choices Gathering and Unifying Results
βœ”+ Sketches a valid decision tree to demonstrate correct recursive strategy; able to accurately trace through example input Correctly identifies all base cases, efficiently prunes exploration of non-fruitful paths, and has correct logic for handling different cases Enumerates all possible choices and makes appropriate number of recursive calls; makes necessary updates to variables and data structures before and after recursive call Correct handling of results of recursive calls to build final answer or divert logical flow of execution
βœ” Adopts reasonable recursive strategy with decision tree that has generally correct notion of decisions to make at each step Correctly handles some base case/pruning, further refinement with guidance from SL Proposes correct general idea for recursive calls but requires SL guidance to formalizes recursive logic in code or to enumerate all possible choices that must be made On the right track with idea about how to gather results to build final answer, but requires support from SL to formalize in code
βœ”- Struggles to generate recursive strategy on their own, but is able to identify similarities to other recursive problems with guidance from SL; able to trace through sample input with help Cannot initially generate appropriate base cases for problem, but able to use SL suggestions as basis for generating some correct base cases Missing important component of recursive strategy or fails to properly update variables in recursive call, but shows flexibility in adapting approach when working with SL Makes reasonable attempt to unify results of recursive calls but is substantially off base; able to follow along with discussion of suggested approach from SL
NP Unable to generate any recursive strategy to solve problem, cannot trace through decision tree on given input with significant SL guidance No base cases or completely incorrect base case, unable to identify need for base cases in discussion Cannot produce any reasonable recursive calls, unable to discuss appropriate use of recursive calls Demonstrates completely incorrect understanding of how to unify results of recursive calls, unable to follow discussion

A βœ”- student is able to show some general understanding of recursion and facility to follow along with a discussion of the problem, but is not able to generate much code on their own, requiring significant guidance from SL to make any progress. A βœ” student demonstrates good understanding of recursion, makes a decent attempt at authoring their own solution, and is able to resolve most errors in their approach with some guidance from the SL. A βœ”+ student demonstrates solid mastery of recursion and has authored a valid solution of their own. While this student may have some oversights in their initial solution, they are able to resolve these issues mostly on their own once the SL has pointed out the presence of the issue or oversight.