This course is about the principles of programming languages. We will study programming language concepts by using them in programs, and by implementing interpreters. By the end of the course, you will have learned about many possible choices in the design of a programming language; this knowledge will be helpful in understanding new languages as you encounter them in your programming future.
The course requires lots of programming, and we assume that you have considerable programming experience already. On occassion, you will be asked to show and explain your code during lecture time.
Programming assignments will typically use Racket. We use Racket for three reasons. First, Racket can express the language concepts that we will study in an especially succinct manner. Second, Racket is simple enough that you can learn it in a relatively short time. Third, Racket is flexible enough that we can change the language to to gain experience with different language constructs (including constructs that are not normally part of Racket).
The course will used the following textbook much of the time:
|Programming Languages: Application and Interpretation (April 26, 2007 version)|
Note that the book is available at the above site in PDF form, so you can read it online, print it, or take it to a print shop. You can also order a paper copy through Lulu through a link at the book's site.
|Course Schedule and Homework|
The course schedule page contains a tentative schedule, which will be revised throughout the semester. Reading assignments, handouts, and notes for each lecture will be posted on the schedule page.
Homework assignments and solutions are also attached to the schedule page. Homework is typically assigned on Fridays, and it is usually due the following Friday, but there will be exceptions.
We'll use the DrRacket programming environment, version 5.0 or later.
Configuration: When using DrRacket, use the “Determine language from source” language mode, and start every program with
To submit homework, you must install an extra package for DrRacket:
To install, select Install .plt File... within DrRacket and either provide the above URL or select a downloaded copy from your filesystem. Then restart DrRacket.
After restarting DrRacket, a Handin button will be available for submitting homework assignments. You must create a special handin account, as described for HW 1.
|Grading, Cooperation, and Cheating|
Homeworks is graded on the following scale: check++ = 110% for perfect work plus extra credit, check+ = 100% for nearly perfect work, check = 80% for somewhat flawed but acceptable work, check- = 50% for seriously flawed work, and 0 = 0% for missing or completely unacceptable work. All homework assignments are weighted equally.
Exams are graded on a scale of 0 to 100 points.
Final grades will be calculated by combining homework and exam grades as follows:
Late policy: Homework submissions will be accepted up to 48 hours after the deadline. For each student, up to two late homework submissons will be accepted without penalty. After a student's first two late submissions, a late submission within 24 hours of the deadline will be penalized 25%. A submission more than 24 hours late but less than 48 hours late will be penalized 50%.
|Last update: Wednesday, September 8th, firstname.lastname@example.org|