To directly assess your mastery of the learning objectives of this course, we will conduct a series of sets of learning assessments (SoLAs) over the course of the semester. Each will contain assessments from one or more Learning Assessment Phases (LAPs). The use LAs of this course is inspired by mastery-based testing practices found in mathematics.
There are three primary SoLAs in the course, along with one optional final SoLA.
SoLAs consist of a set of individual assessment problems—one problem for each learning objective of the course covered so far.
The learning objectives are listed below by LA period.
Some of the LAs will appear as in-class paper-based ten-minute quiz, given at the start of class each Friday.
All of the LAs in a phase (except those marked as in-class-only) will be released as a SoLA on gradescope. Do not discuss the problems on the SoLA with anyone until I have returned graded problems.
You may choose to attempt as many of the individual assessment problems as you wish for that period. As described in the syllabus, LA problems are graded on a binary satisfactory (S)/not satisfactory (N). Once you receive a satisfactory on a problem tied to a particular learning objective, you do not need to attempt additional problems tied to that learning objective in subsequent SoLAs, i.e., you have demonstrated sufficient mastery of that objective, so you are done with it!
Your first LA will be a paper-based in-class quiz at the end of week one. Let’s suppose you receive an S on that LA and it is the in-class-only LA.
Your second LA will be a paper-based in-class quiz at the end of week two. Let’s suppose you receive an N on that LA.
Your third LA will be a paper-based in-class quiz at the end of week three. Let’s suppose you receive an S on that LA.
The first SoLA will occur in week four. It will be an online out-of-class exam. There are six learning objectives for that LAP. However, only five of those will appear on the SoLA, since one of them is marked as an in-class-only LA. Fortunately, you’ve completed that one.
You need not take the LA on the SoLA that corresponds to the third LA quiz. You will have four left to do. One will correspond to the learning objective that you did not complete successfully in week two and the remaining three will be for objectives not covered in the weekly quizzes.
Let’s suppose you receive grades of S on two of the new problems, N on the repeated LA, and that you skip one of the new problems. That’s okay. You’re still making good progress; you’ve completed four of six LAs.
Your next LA will be a paper-based in-class quiz at the end of week four on an objective from Phase 2. Let’s suppose you receive an S on that LA.
Your next LA will be a paper-based in-class quiz at the end of week five on an objective from Phase 2. Let’s suppose you receive an S on that LA.
Your next LA will be a paper-based in-class quiz at the end of week six on an objective from Phase 2. Let’s suppose you receive an N on that LA.
SoLA 2 appears in week seven. It will have eleven LAs, corresponding to five of the six objectives from Phase 1 and all six objectives from Phase 2. At this point, you’ve already completed LAs for six of the twelve objectives in Phases 1 and 2.
You’ll have a third chance on the objective from phase 1 that you had difficulty with on the week-2 quiz and SoLA 1. You’ll have a second chance on the objective from phase 1 that you skipped on SoLA 1. You’ll have a second chance on the objective from phase 2 that you missed in week six. And you’ll have a first chance on the remaining three objectives from phase 2.
The objectives may change slightly during the semester as the schedule shifts.
Learning Assessments, Phase 1 (LAP 1)
Decomposition. Decompose a computational problem into smaller sub-problems amendable to implementation with procedures.
Procedural abstraction. Take a concrete implementation in Racket and create a procedure that generalizes that behavior.
Tracing. Trace the execution of a Racket program using a substitutive model of computation. This LA may only be completed in class.
Primitive types. Express basic computations over primitive values and their associated standard library functions.
Conditionals. Use Boolean expressions and conditional operations to produce conditional behavior.
Collaboration. Explain best practices for solving problems in a collaborative setting.
Documentation. Document programs according to good software engineering principles.
Testing. Test programs according to good software engineering principles.
Learning Assessments, Phase 2 (LAP 2)
Code style. Write and structure code in ways that make it easier to understand.
Lists. Manipulate lists with fundamental higher-order list functions.
Lambda-free anonymous procedures. Use
section and composition to simplify computations.
List recursion. Design and write recursive functions over lists.
Ethical considerations. Consider implications of the power of computing.
Local bindings. Refactor redundancy and add clarity in computations with let-bindings.
Numeric recursion. Design and write recursive functions over the natural numbers.
Vectors. Design and write functions (potentially recursive functions) that use vectors.
Learning Assessments, Phase 3 (LAP 3)
Diagramming structures. Use our mental model of memory to describe or diagram the layout of memory for lists, pairs, and vectors/arrays. This LA may only be completed in class.
Dictionaries. Design and write functions that use dictionaries.
Data abstraction. Design data structures to separate interface from implementation.
Randomness. Write programs that produce unpredictable output.
Higher-order programming. Write procedures that take procedures as parameters and return procedures as results.
Tree recursion. Design and write recursive functions over trees.
Running time. Use a mental model of computation to count the relevant number of operations performed by a function.
Sorting and searching. Update or modify fundamental sorting and searching algorithms or trace the execution of those algorithms over concrete inputs.
For programming problems in learning assessments, we are concerned primarily with correctness rather than design. Make sure that your program works according to the specification outlined in the problem by testing it on a variety of inputs. Pay attempt to the prompt for guidance about what aspects of design you need to include in your program, e.g., documentation or explicit test suites.
For problems with written responses, we are looking for responses that address the prompt directly and concisely. In particular, if a written problems asks you to solve a problem in a certain style or show your work, e.g., the trace of the execution of a program, make sure to include this information in the style presented in class.