Course Policy Statement

This is the archived website of SI 413 from the Fall 2012 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 Fridays, as posted on the course calendar. Some exercises will be completed during lectures, but all students are still responsible to turn in all exercises, whether they were present in class or not.

In calculating final grades for each student, either (1) the lowest homework grade will be dropped, or (2) the total homework average for that student will be raised by 5%, whichever is more advantageous for the student.


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.

In calculating final grades for each student, either (1) the lowest lab grade will be dropped, or (2) the total lab average for that student will be raised by 5%, whichever is more advantageous for the student.


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 one midterm exam in class on Friday, November 2. Any requested absence 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 or other 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.


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. Understand the security issues in programming language design and interpreters (supports outcomes e, g).

Supported Student Outcomes

Section Leader

The section leader is responible for:

Classroom Decorum

No food or beverages (except in closeable containers) are permitted in the classroom.