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:
- β+ Student demonstrates strong mastery, authors own perfect or nearly-perfect solution, engages in strong dialogue with section leader, provides justification for design and algorithmic choices, is articulate in communicating their thoughts
- β Student shows growing proficiency with material, reaches working solution with some direction from section leader, exhibits flexibility and resilience in responding to guidance, good communication of thoughts
- β- Student's understanding of concepts is somewhat tentative, makes a reasonable attempt at solving problem but needs significant guidance from section leader to execute on it, able to engage section leader in discussion of approach
- NP Student's understanding weak, makes no or minimal attempt at solving problem, unwilling or unable to engage in discussion with section leader, ineffective communication
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.