CMPSC 461: Programming Language Concepts: Fall 2010
This class meets at 075 Willard, on MWF 10:10-11:00 am. The official prerequisites are CMPSC 221 and CMPSC 360. Exemptions can be made, but I urge you to speak to me beforehand if you are seeking one.
This course exposes you to the principles of programming languages. Here we will: (a) try to understand the internals of several established programming languages, as well as the deep theory behind them; and (b) build several mini-languages ourselves. This means that as you study theoretical principles in this course, you will also be implementing them in your homework assignments. At the end of the course, you will hopefully to able to choose between a fairly wide variety of programming idioms and languages for your next programming project. You will also have built a fairly sophisticated scripting language.
We will use several different programming languages in the course (including Haskell, Ocaml, Scala, and Prolog), but the primary language used for implementation of new languages will be Scheme (in a version known as Racket).
We will follow the required text closely.
We will use the Dr. Racket programming environment. Please go to http://racket-lang.org/ and download the current version of Racket. Now open the Dr.Racket programming environment. To install the dialect of Scheme of interest, open Dr. Racket, choose the Pretty Big Language level from the menu in the bottom left of the IDE, type "(require (planet plai/plai:1:3))" in the Definitions window, and click Run. This automatically installs the language for the text. (You will see some warnings; don't mind them.)
Now restart DrRacket. The language will be visible from the language chooser at the bottom-left. Choose the PLAI Scheme language.
Systems for programming in other languages will be introduced in class.
Assignments, examinations, and grading policies
Late homework and plagiarism policy
There will be no extensions for homework assignments under any circumstances. Late homework will not be accepted, so plan ahead. Plagiarism in any form guarantees a grade less than or equal to C, and may result in an F.
All course materials (including homework assignments and slides) will be posted on ANGEL (http://cms.psu.edu).
Office hours and communication policies
My office hours are Tuesday 2:00-3:00pm, at 343E IST, and by appointment. I am also available for discussion right after class. All emails regarding the course should be sent through Angel; I strongly urge you not to send direct email to me. I will respond to email sent using Angel within 3 working days.
The TA for this course is Shad Kirmani (email@example.com). Please email him on Angel if you have questions. He will email you his office hours.
Schedule (updated as semester progresses)