CS374: Principles of Programming Languages - The Reflection Notebook (0 Points)
Assignment Goals
The goals of this assignment are:- To make your learning visible to yourself as the course's ideas recur in new forms
- To collect and develop the reflections that close each activity and assignment
- To track your growth from the Language Autobiography baseline to the semester's end
The Assignment
Programming language theory is one idea seen from many angles: a grammar becomes a parser becomes a syntax tree becomes an evaluator, and the same questions about names, scope, and evaluation return in every unit wearing new clothes. The students who go furthest are the ones who notice the recurrence — who see that the environment in their interpreter is the same idea as the binding rule they read about weeks earlier. Your Reflection Notebook is where you make that noticing visible and durable. It is worth 10% of your grade, and it is designed to reward genuine engagement over polish.
Purpose
The notebook has one job: to turn the reflecting you are already asked to do — at the end of every activity and every assignment — into a connected record of how your understanding is growing. Kept honestly, it becomes both a study resource (your own explanations, in your own words) and the evidence of the intellectual arc the course is built around: from someone who uses languages to someone who can build and reason about them.
What Goes In It
- Activity reflections. Each in-class activity closes with a reflection prompt. Answer it in your notebook, in a few honest sentences — what the activity made click, and what is still fuzzy.
- Assignment reflections. Each assignment asks what you did, what fought you, how long it took, and what grade you would give yourself against the rubric. Keep those here too; they are half of the reflective habit.
- Reading-exercise stuck points. When a reading exercise resists you, note where and why. These are often where the best learning is hiding.
- Cross-unit connections. The most valuable entries: a sentence noticing that this week’s idea is last month’s idea in new form. Collect these deliberately.
The Baseline: Your Language Autobiography
Your notebook has a natural starting point and a natural end. In the Overview you write a Language Autobiography — your history with languages, a moment a language fought you, a moment of elegance, and an open question you hope the course answers. That is your baseline. At the end of the term you will return to it: revisit your open question, and write what you now know that you did not in week one. The distance between those two entries is the clearest measure of what the course did.
Format and Cadence
Keep the notebook however you will actually keep it — a paper notebook, a running document, or a Markdown file in a repository. What matters is that it is yours and continuous, not reconstructed the night before review. It is reviewed twice: informally at midterm, and again at the end of the term. At each review, skim it yourself first and write a two-sentence summary of what your entries show about your growth.
How It Is Evaluated
The notebook is assessed on engagement, not correctness or length. A strong notebook is:
- Consistent — entries across the term, not a last-minute batch;
- Honest — it names real confusion rather than performing understanding;
- Connective — it links ideas across units and back to the Language Autobiography;
- Reflective — it says what changed in your thinking, not just what the material was.
An entry that says “I thought parsing and evaluation were the same thing until this week, and here is the distinction I now see” is worth more than a page of correct summary.
See also
- Preparing for Each Class — the routine and the participation rubric.
- Reading Exercises — a steady source of notebook material.
- Overview Assignment — the Language Autobiography baseline.
Submission
Kept all semester in a notebook or a repository of your choice; reviewed at midterm and at the end of the term. Its quality is the 10% Reflection Notebook grade.Please refer to the Style Guide for code quality examples and guidelines.