The syllabus summarizes the basic approach for grading of various course components. This document provides a bit more detail on how we will be grading this particular class. We have borrowed many of the processes and much of the language from our colleague, Peter-Michael Osera.
Our experience shows that students who turn in work late often learn less than students who turn material in on time. (We are not sure about cause and effect.) In many cases, once a student falls behind, the student finds that problems cascade. Hence, we strongly discourage late assignments.
However, we acknowledge that things do come up. The token system is designed to help adjust for such issues. The token system is designed primarily for the normal delays that happen in a semester. If you encounter a more significant issue (e.g., something relating to your health or that of someone close to you), please talk to me and we will work something out.
Everything in this class is graded on a binary satisfactory (S)/not-yet-satisfactory (N) scale. For reading problems, lab exercises, and metacognitive reflections, if it is clear that you have put effort into these deliverables by completing most of the problems with positive results, you can expect to receive a satisfactory grade. See the learning assessment page for more details on learning assessments.
We grade mini-projects (and group projects) in more depth, along two dimensions:
A mini-project that does not achieve these goals will receive a not-yet-satisfactory grade.
Each mini-project has a rubric in its write-up that outlines what we will be looking for regarding correctness in design. In general, correctness errors tend to be major, whereas design errors tend to be minor. However, this depends on the actual error involved. For example, missing an insubstantial corner case could be construed as a minor correctness error, while having egregious formatting issues with your code could be considered a major design error.
We believe that mastery of learning goals earned later in the course is just as good as mastery achieved early. However, we also see the need for deadlines to help you schedule your work and allow us to provide you with timely feedback. To this end, each deliverable has a regular turn-in schedule that tries to find the sweet spot between these competing concerns:
In all cases, deadlines are non-negotiable unless we have made prior arrangements or extenuating circumstances arise as described earlier in the syllabus. Note that if you miss a deadline for whatever reason, you have ample opportunity to make up the work as long as you are proactive about make-up, e.g., by using a token or waiting until the next window or assessment period.
You will turn in your work for this course on Gradescope.
Revising mini-projects
You may submit any mini-projects that have an N grade for revision once without spending any tokens. Revisions are graded as entirely new submissions, so it is essential to check that your revised work fixes all outstanding issues raised in the feedback.
Please review the notes on redos for further details.
Your goal is to show mastery for every learning objective by earning a satisfactory grade on a learning goal’s associated problems, which you may do on Friday quizzes. Once you have shown mastery for a learning objective, you do not need to do it again. For example, if the first set of learning assessments has two problems corresponding to objectives P and Q and you earn a satisfactory for P but not Q, you do not need to complete problems associated with goal P in later assessments. However, you have the opportunity to demonstrate mastery for Q by completing a problem corresponding to goal Q in a future set of learning assessments.
See the learning assessment page for specific details of LAs for this course.
To help you monitor your learning, you will be required to complete a metacognitive “wrapper” for some assignments or examinations. After reading each assignment, but before sitting down to undertake the assignment, you will complete a short survey that asks you to estimate the amount of time you will need to complete the assignment, and possibly answer some other questions. After you have completed the assignment, you will report how long the assignment actually took and reflect on any differences from your prediction.
The best way to learn is by doing. During most classes, you will work through programming problems with an assigned partner. However, in my experience, students do the work and then don’t reflect back on it. I recommend that you take notes on what you’ve done in lab to prepare for learning assessments. Such notes are particularly useful on SoLAs, which are typically “open notes”.
To encourage you to think carefully about the material, for most labs I will ask you to submit your code for the lab. The graders will often look at one or two problems, rather than the whole lab.
You and your lab partner(s) should generally plan to complete the lab writeup together. However, in some cases you may decide to do so individually. In either case, you should decide which by the end of class. If you do the lab writeup on your own, you must acknowledge your partner (any anyone else who gave you help) in your writeup.
Your writeup should include your solution to each assigned exercise. If the exercise directs you to write Scheme code, include your Scheme code. If the exercise directs you to find out what the output of some expression is, copy and paste the output. If the exercise asks a question or asks you to explain something, write an answer in English. You do not need to copy instructions or problem statements from the lab exercises into your writeup, but do number your solutions.
You will submit your lab writeups via Gradescope.
As noted above, Lab writeups are generally graded with a satisfactory (S/1) or unsatisfactory (U/0) binary. Your write up is acceptable if it includes a solution or evidence of serious effort for each assigned exercise. Your writeup is unacceptable if it was not turned in, if there was no evidence of reasonable effort, of if your answer is incorrect and you do not note that you realize it is incorrect. If you were not able to complete an exercise because of its difficulty, your work is still acceptable if you explain where you got stuck and come talk to me to get help. So, in case it’s not clear, every diligently completed lab writeup will receive full credit.
In some cases, the lab writeups will have auto-graders that report potential problems in your code. The auto-graders will not be comprehensive, but they will help you understand potential isues. And, as noted, if you can’t understand a problem and you come talk to me, you can still earn credit for the lab writeup.