CSE526: Principles of Programming Languages
Spring 2004
Scott Stoller

Other CSE526 Pages

Announcements and Assignments

Contents of this Page

Course Description
Exam Guidelines
Grading Policies
Grading Statistics
Grading Weights
Submission of Assignments


SolarSystem Data: Catalog number: 526. Course ID: 301593. Class Number: 48625. Section: 01.

Instructor: Scott Stoller

TA: Yiping Han

Meeting Time and Place: Tuesday and Thursday, 11:20am-12:40am. Harriman 104.

Scott's Office Hours: Monday and Thursday, 3pm-3:30pm, and by appointment or chance, in Computer Science 1429.
TA's Office Hours: Tue, 2:30pm-3:00pm, and Thu, 1:00pm-1:30pm, in Graduate Windows Lab.

Course Description

The main topic in CSE526 is semantics of programming languages. The last 20% or so of the course is an introduction to program analysis, with an emphasis on applications of program analysis, rather than general theories of program analysis.

The discussion of programming language semantics will be based (like last year) on the textbook

John C. Reynolds. Theories of Programming Languages. Cambridge University Press, 1998. ISBN 0521594146.
(Note: A long list of errata is available near the bottom of the book's web page.) We will focus on operational semantics, which is simpler and, for many applications, more useful than denotational semantics. We will briefly discuss denotational semantics and axiomatic semantics. The tentative plan is to cover chapters 1, 2, 3, 4, 6, 7.{1,4,5}, 8.{1-5}, 10.{1-4}, 11.{1-4}, 13.{1,2,4,6,10}, and 15.{1-3}.

The textbook should be available in the campus store and from on-line vendors. Beware of saving a few dollars at the cost of 2 or 3 weeks of frustration! For example, Amazon.com says shipping time for this item is 2 to 3 weeks, which is acceptable for this course only if you place your order by mid January.

A copy of the textbook is on 2-hour reserve in the Computer Science Library.

The discussion of (applied) program analysis will be based on several papers, because there is no suitable textbook on program analysis. (The textbook Principles of Program Analysis, by Nielson, Nielson, and Hankin, provides a good overview of the theory of program analysis, but discusses few interesting applications of program analysis.) We will cover some of the following papers.

Coursework will include written homeworks, exam(s), and possibly assignments involving the implementation of a program analysis (e.g., a type checker).


The best way to get answers to questions is to come to office hours. The advantages relative to email are: (1) almost everyone can talk much faster than they can type, (2) your hands and mine are much more likely to get repetitive stress injuries than our jaws; and (3) fully clarifying an issue often requires multiple rounds of question-and-answer, which can be completed in 5 minutes of conversation but may drag on for days when done by email.

Exam Guidelines

During exams, you may use the course textbooks, your own notes, your own homework assignments, handouts that were distributed in class or posted on the course web page, and a dictionary. You may not use someone else's notes or homework assignments or mechanical reproductions of all or part thereof. You may not use other textbooks or mechanical reproductions of all or part thereof. You may not use computers (PDA, laptop, etc.).

The instructor may look at materials that students are using during the exam to ensure that these guidelines are followed. Violations will result in a score of zero on the exam and will be reported to CEAS's Committee on Academic Standing and Appeals (CASA).

Missing an exam is a serious problem. If you miss an exam, you need to have a very strong reason substantiated with convincing evidence (for example, an invoice from the doctor or hospital), otherwise you will get a zero on the exam.

Grading Policies

If you have questions about the grading of an assignment, first see the T.A. who graded it, preferably during office hours. This helps ensure consistency of grading. If the issue has not been resolved to your satisfaction after talking to the T.A., then come talk to the instructor, preferably in person, during office hours.

Each assignment is graded relative to some maximum number of points (e.g., 20 or 100). The maximum number of points is unrelated to the weight of the assignment in the course grade. Each score is normalized into a number between zero and one (e.g., 19/20 -> 0.95) and then multiplied by the weight of the assignment to obtain a weighted score. Course grades are based primarily on the sum of the weighted scores.

Grading Statistics

The following information may be slightly inaccurate, due to score adjustments, late submissions, etc. Statistics for the project are based on the scores before the individual contribution factor is applied.

Item Out Of Mean Std.Dev. Histogram
hw1 40 38.9 2.4
hw2 40 36.7 6.1
hw3 20 16.6 4.5
hw4 50 31.0 8.8
hw5 40 33.0 6.0
hw6 20 15.3 4.5
hw7 20 17.1 2.9
exam1 100 64.7 19.6 histogram
project 100 85.7 13.4 histogram
exam2 100 69.0 19.7 histogram

Grading Weights


hw1, hw2, hw4, and hw6 are each worth 8%. hw3, hw5, and hw7 are each worth 7%.


All students are expected to follow CEAS's
policies governing academic dishonesty. Suspected academic dishonesty will be reported to CEAS's Committee on Academic Standing and Appeals (CASA).

If your submission includes any material created by other people, your submission must clearly indicate the sources of such material. Failure to indicate the sources will be treated as plagiarism.

Discussing assignments with other people is fine. However, each person must write his or her own submission independently. Showing your own work to other students, giving it to them, or making it accessible to them (e.g., by making the files world-readable, whether intentionally or through carelessness) will be treated as academic dishonesty.

Submission of Assignments

Assignments that do not involve programming should be submitted as printouts in class on the due date, unless the assignment specifies otherwise. Assignments submitted after the end of class on the due date are late and receive a -3% penalty. Assignments submitted the next day receive a -6% penalty, and so on.

To submit an assignment that involves programming,
  1. Put all of your files (code and documentation) into a directory with a unique name (for example, your userid) and use zip -r to zip the entire directory tree. Email the .zip file to cse526@cs.sunysb.edu. AND
  2. Submit a hardcopy of the documentation (e.g., user manual, including instructions for compiling and running your program) in class or during office hours, or put it under the door of my office (Computer Science 1429). Save a tree! Do not submit printouts of your code!

Students with Disabilities

The Provost requires that the following statement be included in syllabus handouts:
If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Disabled Student Services office (DSS), Room 133 Humanities (moved to ECC Bldg during renovation of Humanities), 632-6748/TDD. DSS will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.