Course Policy Statement

This is the archived website of SI 413 from the Fall 2013 semester. Feel free to browse around; you may also find more recent offerings at my teaching page.

Instructor: Dr. Daniel S. Roche, Michelson 322, x36814, .

Required Text: Michael L. Scott. Programming Language Pragmatics, 3rd ed. Morgan Kaufmann Publishers, 2009.

Course Website:

Final Grade

Your final grade will be computed as follows:


Homework assignments will be posted online and due most Wednesdays, as posted on the course calendar. Some exercises will be completed during lectures, but all students are still responsible to turn in all exercises, on time, whether they were present in class or not.


Labs will generally be started during lab period, completed outside of class, and due the following lab period. This is the main work of the class. Students should expect to spend time outside of weekly meetings to complete labs. When possible, labs will be completed and submitted in pairs. No student may use the same partner for more than 6 labs.


Any student that completes every homework assignment to a satisfactory level will have their lowest homework grade dropped at the end of the semester. The definition of "satisfactory level" is based on effort and is at the sole discretion of the instructor. Work submitted late may count for this requirement, even if it is not eligible for normal credit.

Similarly, any student completing every lab to a satisfactory level of effort will have their lowest lab grade dropped at the end of the semester.


There will be a single project that progresses throughout the semester. The first two parts are programming, and the last part is an in-class oral presentation. The grading breakdown will be 20% for Part I, 50% for Part II, and 30% for Part III. Students will work in pairs (to the extent possible), on different chosen topics. Project partners may not be the same as any lab partners.


There will be a Scheme programming practicum in class on Wednesday, 18 September. The practicum will be open-notes and open-course-website, but no other resources will be permitted.

The sole midterm exam will be held during class on Wednesday, 16 October.

Any requested absence for these dates must be submitted as soon as possible, and at least one week in advance.

Students will be allowed to bring individually prepared "study sheets" with anything written on it (1 for the midterm, 2 for the final). The final exam is cumulative.

Absences and Late Work

Students are responsible for all class material. Slides will be posted online for each lecture, as supplemented by specific textbook readings and posted notes. However, this material is not exhaustive and students missing class should arrange to copy notes from a classmate.

Because solutions will generally be posted immediately, no late work will be accepted for a grade. Even in cases of excused absences, all work must be submitted by the posted deadline. Exceptions to this rule are possible under exceptional circumstances, at the discretion of the instructor.


Grading of homework exercises, oral presentations, and coding style in programming assignments will be according to the rubrics posted on the course website. Programming assignments will also be judged by correctness tests. If a small error in the submitted program caused a multitude of correctness tests to fail, re-submissions will be considered, at the discretion of the instructor.

Extra Instruction

The instructor has an "open door" policy in regards to EI. To schedule an appointment, choose a time that is free according to the schedule posted on the instructor's home page at and then send an email requesting this time. Students are asked to avoid Tuesdays for EI appointments if possible, as that time is set aside for research.


Learning Objectives

  1. Understand the functional programming paradigm and be able to solve problems in a functional language (supports outcome CS-j).
  2. Develop a vocabulary for describing programming languages (supports outcome CS-j).
  3. Understand lexical analysis, parsing, and basic interpretation (supports outcome CS-j).
  4. Implement a simple interpreter (supports outcome CS-j).
  5. Learn a new programming language independently and use it to solve basic tasks (supports outcome CS-j).
  6. Know the basics of software licences and open-source software (supports outcomes e, g).

Supported Student Outcomes

Section Leader

The section leader is responsible for:

Classroom Decorum

No food or beverages (except in closable containers) are permitted in the classroom. Everyone in the classroom will show appropriate respect to everyone else at all times.