Self-Evaluation
First of all – ungrading is strange, and often confusing for students, and I’m aware of that. But I also fundamentally believe that it is the most authentic way to support your learning–after all, it is rare after school that you’ll get some sort of numerical or even letter-based grade to evaluate how much you know. Most of this evaluation will come from yourself and your own work, and we prepare students very poorly to do that kind of self-evaluation. So you have a space to try out here, with guiderails, and to assess how much you are really learning.
Final Portfolio
You will complete a final portfolio for the course in lieu of a final exam or final project. This portfolio will consist of “evidence” for each learning objective: what assignments, projects, artefacts, etc. do you have to demonstrate that you have met or exceeded the learning outcomes for the course? Based on your answers to those questions, you will assign yourself a final grade with justification.
Portfolio Guidelines
This final portfolio will be a private GitHub repository turned in as a link to Canvas. Here is a template for the portfolio which outlines the requirements.
In brief, your portfolio will consist of:
- A final reflection which includes your self-assigned grade, and
- At least three pieces of evidence for each learning objective (at least four per objective if you have self-assigned an A)
A “piece of evidence” is defined more clearly in the project template.
Final Grades
Of course, at the end of the day, we still have to assign a letter grade for your transcript.
Here is a guideline for what each letter grade might mean in terms of this portfolio.
Base Grade | Looks like… |
---|---|
A | Consistently achieves and often excels at all learning outcomes for the course |
B | Consistently achieves all learning outcomes for the course |
C | Often, but not always, achieves all learning outcomes for the course, or consistently achieves the basic standards for most learning outcomes and shows progress towards other outcomes |
D | Shows progress towards all learning outcomes for the course |
F | Does not provide sufficient evidence of progress towards learning objectives to gain credit for the course |
+/- Grades: You may notice that Lawrence also has +/- grades. You should feel free to assign yourself a +/- grade if you feel you are “in between” two of the categories above. For example,someone who consistently meets minimum expectations and perhaps had one really exemplary homework that they went above-and-beyond on might assign themselves a B+.
Exceptions: Lawrence does not allow grades of A+.
Learning Goals
What does it look like to “achieve” learning goals? What does it look like to “excel” at them? How will you (and I) know if you are doing these things?
Achievement and excellence looks different for everybody, so there is no magic checklist of things to do; that is the point of removing numerical grades of any kind from this course. However, here is some guidance about what I am looking for when I evaluate whether a student has met or exceeded the learning goals for the course.
- L1: Design and Implementation of Basic Data Structures
- Do you have a solid grasp of the interface for each of the structures we have looked at? (arrays, lists, queues, stacks binary trees of all kinds, heaps, hash maps) Could you describe each of these structures without mentioning any C++ specific quirks?
- Do you have a solid grasp of the implementation for each of the structures we have looked at? Could you implement them in C++ without the use of the Standard Template Library?
- Excellence: Have you considered or tried to implement any data structures not on this list? Have you tried combining these simple data structures in complex ways? Have you tried to implement any of these data structures in more than one way?
- L2: Applications of Basic Data Structures
- Do you understand the difference between time complexity and space complexity? Can you reason through the likely time complexity of a particular operation on a particular data structure? Can you justify why a particular data structure has a lower time complexity for a particular operation?
- Have you implemented sorting or searching on a variety of different data structures? Do you know how to write a simple sorting algorithm without the use of the Standard Template Library? Do you know when you might want to use a custom sorting algorithm instead of the one provided by the Standard Template Library?
- Excellence: Do you regularly consider how to balance simplicity with time complexity in your choice of data structure even when not explicitly asked? Have you considered the theoretical limits of searching and sorting algorithms? Can you make an argument for the fastest possible speed of any sorting or searching algorithm, regardless of underlying structure?
- L3: Reading and Writing Computationally
- Do you regularly come to class having read and taken notes on and/or or asked questions about the material assigned for that day?
- Do you seek out material to solve problems beyond the course textbook and cite your sources when you do so? Are you able to read an online answer and incorporate it into your own understanding, vs. reading an answer and copying it verbatim without knowing why it works?
- Are you able to translate pseudocode into C++ code? Are you able to explain C++ code through the use of detailed comments and/or by written explanation?
- Excellence: Are you able to read and find meaning from C++ documentation on each of the data structures we have talked about in this course? Is your code consistently well-documented with comments where necessary, even when not explicitly asked?
- L4: Failure
- Do you often find that you do not understand a problem at first? Are you able to work through that lack of understanding?
- Are you able to try things one step at a time, building up small successes along the way? Are you able to do this even when you get stuck with some small failure?
- Excellence: Have you tried something that was way out of your current scope, to the point where you actually were not able to complete it? Do you understand where you got stuck, even if you did not solve the problem?
- L5: Reflection and Metacognition
- Have you responded consistently to feedback and revised your work accordingly?
- Have you gone back to earlier problems/homework sets/projects in the class, not just the most recent one, and revised or revisited them with new understanding?
- Do you regularly attend/communicate about your check-in meetings and participate in self-reflection beforehand?
- Excellence: Have you done revision/reflection of assignments that you succeeded at the first time? Have you completed revisions/reflections that include changes not suggested by me?
Biweekly Checks
To clear up any murky confusion about what your “current grade” is or how you are currently doing with the objectives for the course, we will hold biweekly (every other week) meetings. These will be 20-minute meetings focused on your learning. What are you doing to prepare for class? What are you doing to practice the material? Where are you still struggling? How can we make sure you are on track for the outcome you want for this class–whether in terms of a grade or in terms of content knowledge?
Each of these biweekly checks comes with a short self-evaluation worksheet and an opportunity for you to practice giving yourself a grade for the course. You’ll have four of these checks over the course of the term, so your final grade hopefully should not come as a surprise to either of us!
Before these check-ins, you will complete a Self-Evaluation Worksheet for the previous 2 weeks.
0 (mod 2) Group
Meets in weeks 2, 4, 6, and 8.
Check-in 1: Monday, April 3
Check-in 2: Monday, April 17
Check-in 3: Monday, May 1
Check-in 4: Monday, May 15
1 (mod 2) Group
Meets in weeks 3, 5, 7, and 9(ish).
Check-in 1: Monday, April 10
Check-in 2: Monday, April 24
Check-in 3: Monday, May 8
Check-in 4: Friday, May 19
Note that this group meets on the final day of Week 8 instead of the start of Week 9 to allow students to take advantage of the Withdrawal period if necessary.