SMoL🔗

What Is This Thread’s Purpose?

This thread will help you learn the Standard Model of Languages (SMoL). 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. This blog post may help you understand what the assignment is trying to accomplish.

In general, it’s not hard to “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.

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—it’s not hard to cheat (or “cheat”) on these tasks—than on understanding, so we will not do so.

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.

Software

Note: The Tutor currently 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. (Of course, you can and should 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. It is important that you choose correctly here, to get comfortable with the style of syntax you will be using to program in this course.
  • If you access the Tutor through this link, you will be in the right configuration.

  • If you access the Tutor through its public Web address, you will be given a menu to choose which default syntax you want. You should choose the Lispy syntax.

Either way, the syntax (and language) on the right will vary randomly in purpose, but always presenting an equivalent program. This is to help you see that the behavior is the same across syntaxes and languages. You can always change the random choice by using the 🎲 button, so you can see the same program in multiple syntaxes and languages.

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).

Please do the complete tutor!