In these assignments, you do three things: predict the answers programs will produce without running them; explain why you think they will produce those answers; and author programs for others to predict.
Spend a maximum of two hours.
check: Produced crisp and clear explanations with plausible (even if completely wrong!) answers. You should aim to consistently get this level.
check-: Produced weak explanations that suggest not taking the assignment seriously. Also if you authored unreasonable programs, e.g., variable names are purposely mislabeled to throw off a reader (generic names are fine, misleading names are not), indentation is misleading or off, or programs are far too long for anyone to plausibly be able to determine their answer by hand. It’s fine for your program to be complicated and hard to figure out; but it must do so through the language semantics—
the point of the course— and not through syntactic difficulty.
zero: Turned in effectively nothing.
check+: Produced check-level (possibly wrong!) answers and authored especially interesting programs. This is unusual and you are not expected to get this.
What makes a program interesting, and how do you find them?
A program is “interesting” if it helps you better understand the behavior of the language. In particular, it’s interesting if one can reasonably see more than one answer it can produce. You yourself (e.g., based on prior knowledge) may “know” what it produces, but can someone else versed in programming imagine a different interpretation? (In fact, for most interpretations, there was or is usually some programming language that actually does just that!) Put differently, a program is interesting if its answer is not obvious, so readers have to think a little before they answer it, and they may even get its answer wrong (relative to the actual semantics).
How do you find them? Look at the features of the language, and try to combine features. That’s usually the best way to find interesting programs.
Install the SMoL family of languages, following the instructions there. Please look out for announcements on the forum to update. Update instructions are also on the repository’s page.
Read programs submitted by others, and explain what value they will produce.
Write interesting programs for others to answer.
Keep the programs you write for others short and do not obfuscate them in ways that have nothing to do with the language semantics (e.g., weird indentation, misleading variable names, etc.). Semantic weirdness is allowed—
since that’s the point— but nothing else.
Please write only one program at a time. You can submit multiple programs in Quizius.
Quizius will ask you for your institution. It’s “Brown University”.
The programs you submit should not contain comments or test cases that reveal their answer.
Before you submit your own programs, make sure you have run them. The programs you submit must not have any unintentional errors (they may contain intentional ones); please avoid submitting programs with syntax errors like mismatched parentheses).
In contrast, when answering others’ programs, do not run the program!