This course will study the main principles underlying the design of programming languages. The first half of the course will focus on functional programming languages, as these tend to have the closest link to fundamental principles. We will use the Standard ML '97 programming language as a practical example of these design principles, learning the language and writing some interesting programs in it. We will complement this practical study with theoretical study of various lambda calculi and their formal semantics. The second half of the course will study object-oriented languages, including learning and programming in an advanced practical OO language (such as Cecil) and studying the formal semantics of OO languages via lambda calculus extensions.
Homework assignments are available here.
Reading assignments are available here.
To browse the threaded archives, go to http://mailman.cs.washington.edu/mailman/private/cse505/2005q1/thread.html. Note: in order to access the archives, you need your list password, which is not the same as your CSE password. In order to get your password, you need to go to the bottom of the listinfo page, and use the "unsubscribe or edit options" form. On the resulting page, there's an button for sending you a password reminder.
To post to the mailing list, send email to firstname.lastname@example.org.
Each student has 3 late-day coupons to spend over the quarter. A coupon allows a student to turn in an assignment one calendar day (24-hour period) late; multiple coupons can be used for a single assignment. Coupons are only valid if the TAs have been notified in advance of the deadline that they are going to be used to delay. If multiple assignments are due on the same day, they are considered a single assignment as far as late days are concerned unless otherwise specified. After a student has exhausted his or her late-day coupons, late assignments will incur a 1/3 penalty for each calendar day (or portion thereof) late.
Each student is to do their own work independently. It is fine for students to discuss assignments together, even sketching out possible solutions together (but without taking any specific solutions away from the discussions), but each student should produce their own final solutions. The goal is for each student to learn as much as possible (often from other students in the course) but only turn in material that reflects their actual learning. In general, it is a violation of academic integrity to engage in an activity for the purpose of earning credit while avoiding learning, or to help others do so; see the department's academic misconduct page for more information. I have no tolerance for academic misconduct.