1 Anticipated Frequent Questions
This AFQ (Anticipated Frequent Questions) should cover most of your questions.
Q: How do I keep on top of things, and where can I ask questions while the assignments are in progress?
Please use the message board linked from the course home page. You should use your Brown email address to access the board.
Be sure to not post hints or solutions publicly! Be aware of the Honesty and Sharing policy before you sign up.
Q: Are there any exams in this course?
No. I don’t believe exams are a useful way of measuring learning except inasmuch as they can be proctored to detect cheating (for which we have other mechanisms). In return, they are too dependent on test-taking ability, time preferences, not being ill on a particular day, personal constraints, etc. Therefore, this course has no exams, only Assignments.
Q: Why do you want anonymous submissions?
To the extent possible, we want to eliminate biases when grading. These may include biases both in favor or against people based on attributes such as race, gender, or even how they present themselves in person. To make clear we are serious, we will impose a small penalty if you do include personal identifying information (unless asked to).
I know this runs counter to what you have probably been told by countless prior instructors, and maybe even those in your other classes. If you’re turning in pieces of paper, it is important to label them clearly. Since your submissions here are electronic, that’s not a problem.
In case you’re wondering: yes, your identity is recorded when you submit. However, we run an anonymization script before distributing work for grading. Therefore, the graders only see an anonymous token (e.g., “103”) in place of your identity.
You may then wonder what happens when you go in for help after you get graded material back. Would that deanonymize you for the future, i.e., will that TA henceforth know who person 103 is? No, because the script randomly assigns different tokens on each use. Therefore, there’s no reason to believe person 103 from the previous assignment is the same as 103 on this one (in fact, there’s a very high likelihood it’s a different person).
Q: How is the course structured? What’s new this year?
the core principles,
the homework structure,
the grading philosophy,
The Quizius thread uses a tool to get you to answer questions from others and create questions for others, based on a pedagogic technique called contributing student pedagogy.
The Mystery Language thread has you understand the design space of specific language features. You can read more about this in the 2018 course AFQ, thought his year we will not be asking you to write theories.
The Implementation thread will have you implement the core of multiple languages and tools.
The Read/Do thread will have you read up on some materials and write prose and/or code responses. These will help you situate the course’s materials in the broader world of programming languages.
Both the Quizius and Read/Do threads are completely new this year, and there are substantial changes to the other two as well. It is, in effect, a new course.
Quizius and Mystery Languages: All assignments in these threads are at level C.
Implementation and Read/Do: Each assignment has a different level.
Q: Explain these levels in more detail!
Certainly!
We want to make grades more transparent, so students have a good sense of where they stand during the semester.
We want to reduce the workload on students whose primary focus is elsewhere.
We want students to focus on mastery rather than superficiality.
Sometimes, during the semester, students’ grade expectations for the course change. When this happens, it’s been hard for them to know to allocate their time in 1730. No longer. Now the level tells such students exactly which ones to focus on and which ones they can ignore completely.
Notice that word, completely? This is where mastery comes in. A grade should represent some useful unit of learning. Pure numbers hide this: though they have the same average, there’s a world of difference between getting 50% on two (equally weighted) assignments and getting 100% on one and a zero on the other. The former suggests you didn’t understand anything particularly well; the latter suggests you mastered one thing and ignored the other. We want you to aim for the latter. Hence, we want to see a strong performance on all the assignments that we feel demonstrate that grade level of knowledge; you can completely ignore all the others.
Conversely, your grade will be the highest level at which you did well in most of the assignments up to that level. Yes, things go wrong, people screw up. So there will be a little slack. In particular, we’ll forgive poor performance on the early assignments (especially in the Implementation track) so you can get into the groove.
The grade levels roughly imply difficulty, but not entirely. Rather, the C level corresponds to everything I feel you should know to be considered to have passed a course on this subject, the B level corresponds to what I expect for a Good grade, and A to what I expect for Excellent. In general, though, the difficulty of assignments does go up for the most part with the grade levels. However, difficulty is a matter of perception, and your experience may be different from ours. Therefore, you could find an A assignment really easy, but conversely, don’t be too lax in approaching C assignments: you may get an unpleasant surprise.
Because the threads are so different, what it means to do “well” in each thread will vary:
- Quizius: 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. If we graded you on the correctness of your answer, you would be inclined to first run the program, thereby undermining the whole purpose of the assignment.What use do we have for your wrong answers? Every time a Quizius homework is done, I will be reviewing all the answers, to see what concepts you understand and which ones you don’t. The mistakes are what I will focus on in lecture. Instead, therefore, we will use the following grading scale:
check: Produced crisp and clear explanations with plausible (but possibly completely wrong) answers.
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, or programs are far too long or needlessly convoluted for anyone to plausibly be able to determine their answer by hand.
zero: Turned in effectively nothing.
check+: Produced check-level (possibly wrong!) answers and authored especially interesting programs.
In the limiting case, you can get every single answer wrong, but so long as you did it conscientiously, you will meet the expectation of this thread.What’s an interesting program? Any program that you found useful to learning about the behavior of the language is interesting. A program is especially 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. Focusing on combinations of language features you have been taught is one of the best ways to arrive at interesting programs.
Mystery Languages: You need to classify most of the languages on most of the assignments. (This has not been a problem for students in the past.) You might not get all of them, but you need to get quite close.
Implementation: Your implementation needs to be correct, robust (well-tested), and clear (well-structured, clean code). Yes, we do care about “software engineering” issues, not only whether the code “works”.The correctness expectations for languages are exceptionally high, especially when compared to most other software artifacts. How often do you run into errors in your language implementation? Essentially, the onus is on you to convince us that your program is correct, not for us to convince you it’s not. The “software engineering” bits (clean code, strong tests, etc.) are the best way to make that case.
Read/Do: Some of these assignments require writing code; the expectations for these is as above. Some of them require writing prose. We place a high premium on the quality of your writing, while also valuing concision. This means: have a point; make it clearly; be brief; use proper punctuation and grammar; use paragraph breaks to avoid walls of text; and in general, write well, as if you were in a humanities class. Our standards are certainly that high.
Q: How much time will things take?
It’s very easy to go down a rabbit hole when doing these assignments. Not only do they have points of diminishing returns, there is also a point in each assignment beyond which the returns turn negative (due to frustration and stress). Therefore, it’s important for you to monitor your time usage and, when you exceed the times listed below, come talk to the course staff. Note that the times are per assignment in that thread.
Quizius: Spend a maximum of two hours.
Mystery Languages: After two hours, come talk to the staff and show them what you’ve tried so far. Chances are your exploration attempts aren’t bearing fruit and you need redirection.
Implementation: These can take several hours. Much will depend on your experience, background, etc. In general, come get help if you’ve spent more than five hours. The calendar duration of an assignment is proportional to the expected implementation time.
Read/Do: These should take only a few hours, including the reading. If you’ve spent more than five hours, come talk to us.
Q: There seems to be a lot of novelty in the course. Is that okay?
Brown is a research university. Research shouldn’t, and isn’t, limited to subject material: it can also be in education. Courses should innovate in response to identified problems and new opportunities. That’s what we’re doing (and indeed what every course should, and to some extent does, do).
As with any research project, things will not go perfectly smoothly. We’ll keep an eye out, especially for large-scale behavior. If, for instance, we find most students did much more poorly on a new assignment than we expected, we’ll assume our calibration of the assignment was off. Based on this, we may revise its grade-level expectation upward (or, in an extreme case, remove it from the expectations entirely).
Q: I have a question not answered above! Where do I send it?
A: Address it to me!