This course’s primary learning goal is to make you develop a rich appreciation of programming languages. This means understanding both their principles and their diversity.
Except where otherwise indicated, the sole assessment in the course will be homework assignments. These are take-home and “open book” relative to the policy on Honesty and Sharing. Occasionally you will be asked to do some readings, especially if they are found relevant based on questions and discussion in class.
To help you achieve the learning goals, and to assess your progress towards them, the course employs two kinds of assignments. In one kind, called the “mystery languages”, you will have to tease apart the behavior of languages that are given to you as black boxes. The purpose of these assignments is to force you to confront languages “in the wild”, just as you will outside any closed academic setting. The other kind is to implement the core operations of programming tools. The purpose of these is to give you the basic skills you need for someday creating your own languages.
The work load in the course is uniformly distributed across the semester. Students can expect to spend about 10 hours each week on assignments. Combined with the 2.5 hours spent per week in class, this translates to approximately 180 hours over the course of the semester.
Finally, a comment about the connection between assessments and grades. Assessment for programming assignments will be based on the quality of your code, its correctness, and the quality of your testing. On the mystery languages, after the first 2-3 assignments (which you can treat as a warm-up), B-level students will need to get most of the Core problems; A-level students will have gotten virtually all Core problems and some of the Advanced ones. (Depending on how the class performance goes, we may loosen or tighten this expectation.) Your written summaries of the languages will be graded on a Check+, Check, Check-, and Zero scale. A-level students are expected to get Check, not Check+ grades. A Check+ is very unusual and not at all expected.