SMoL
What Is This Thread’s Purpose?
This thread consists will help you learn the Standard Model of Languages. It begins with a simple version of the model and becomes progressively richer.
Concretely, you will work with an automated tutor, the SMoL Tutor, that we have built for you. You work through the material at your own pace.
In general, it’s not hard “cheat” on these tasks; we haven’t tried to make it difficult to do so. But if you do, you will find the later parts of the course virtually impossible. So please work wisely.
Recall that for this thread, you are not allowed to discuss work with others while the assignment is in progress or with people who are using late days.
Time
Each module should take 10-20, and at most 30, minutes.
Grading Standard
The Tutor automatically tells you about the correctness of your work.
We do not at all expect you to answer all questions correctly. Indeed,
it would be virtually impossible for you to do so: we’d be surprised
if anyone got everything right. Counting how many things you get right
will make you shift focus to scores—
Instead, we only care that you (a) do all the tutorials and (b) put in a good-faith effort on each one. Trying to get help (from other people or AI tools or whatever) may help you “do better” or go quicker now, but you will find some later parts of the course virtually impossible. So please don’t do that.
Recall that for this track, you are not allowed to discuss work with others while the assignment is in progress or with people who are using late days.
Software
Note: The Tutor is new software. Currently, it does not have the ability to save state. That means you should finish every module you start; you can’t pause a module and resume it later. (You can, of course, take a break between modules.)
The Tutor shows you programs in multiple languages, to reinforce that the concepts you are learning are standard across languages. The language on the left, which is a pseudocode, is fixed; the one on the right varies randomly. You can change the random choice by using the 🎲 button. We recommend that you frequently roll the 🎲 to see the Lispy syntax. This will help you get more comfortable with the style of syntax you will be using to program in this course.
Tasks
At the end of each module, you will be provided a button to download a PDF version of completed modules. Please download each PDF and upload it to Gradescope. We recommend you also hold on to the PDFs: they will serve as a “textbook” and will be useful when you need to review the material (without having to do the entire Tutor again).
def: variable and function definitions
post1: a review module
vectors: mutable vectors/arrays
post2: a review module
mutvars: mutable variables
post3: a review module
refactor: a review module
lambda: higher-order functions and lambda expressions
post4: a review module