CSC437 Theory and Implementation of Programming Languages Spring 2006
Links: Schedule
Homeworks and programming assignments
Programming
Language Resources from Louden Scheme
R5R5 report
Instructor and Office Hours
Lonnie Fairchild
Office: Redcay 147 (Enter through Computer Science Dept.)
Phone: 564-2783, Computer Science Office:
564-2788
Email: lonnie.fairchild@plattsburgh.edu,
Office hours: Mon. 3-5
Wed. 1:45-2:45
Thurs. 4:30
5:30
Fri. 10:30 - 11:30
These times will not be convenient for everyone. Students are welcome (and encouraged) to
make appointments for other times.
Course Description
Over the past 40 years, the ways in which computer
scientists have looked at and designed programming languages have evolved and have been
closely related to their views about the nature of the activity of programming. We will
study concepts useful in understanding both the general features common to all programming
languages as well and the more specific similarities and differences between languages. We
will look at some techniques for implementing compilers and interpreters for different
types of languages. Language design criteria and questions of what makes one
language better than another for a particular application will also be discussed.
There will be four programming assignments.
Some of these will focus on language implementation (extending or modifying an
implementation of a "mini" language); others will involve applying the concepts
of the course to learning new languages. Some assignments will require group
work.
Corequisite: CSC 314
Objectives
1. To become familiar with concepts and formal methods
used in studying computer languages.
2. To understand the basics of how programming
languages are defined, constructed and implemented.
3. To develop and understanding the similarities
and differences among languages that will make it possible to use programming
languages more effectively and to learn new languages more easily.
Required Text Kenneth Louden, Programming
Languages: Principles and Practice, Thomson Course Technology, 2003, ISBN 0-534-95341-7
Readings may also be taken from online materials, including:
H. Abelson, G. Sussman, with J. Sussman, Structure and Interpretation of Computer
Programs, 2nd ed., MIT Press, 1993 (web
version: http://mitpress.mit.edu/sicp/sicp.html)
Grading The final course grade will be computed as follows:
Quizzes
40
%
Final exam
(take-home ) 10 %
Programming assignments
40 %
Class participation
10 %
Quizzes A short written quiz will be given on most Thursdays. Questions will come from the assigned readings and exercises, material discussed in the previous classes, and recently completed programming assignments. Occasionally, take-home quizzes will be given instead.
Class participation and attendance policy This course depends heavily on class discussion and it is essential that all students participate actively in the class. (Note: This does not require that you speak constantly. It does require that you come to class prepared, with a willingness to listen carefully to what others say and a willingness to share the thinking that you have put into your assignments.) Hence, students will be expected to attend all classes. Students who must miss a class should notify (email or phone) the instructor before the class. The instructor is glad to help anyone who needs to make up work due to unavoidable emergencies (illness, etc.).Group work Working in pairs or small groups will be useful on some of the programming assignments. Collaboration can make the work more interesting, and provide valuable opportunities to learn from other students and refine your thinking. When submitting assignments in which collaboration took place, the names and contributions of all collaborators must be clearly listed. If collaboration is appropriate on an assignment, more detail will be provided when the assignment is handed out.
Academic honesty All work submitted as your own (or as your group's) must be your own. A student who is found guilty of cheating on an exam or assignment risks failing the course.
Class format The subject matter requires both mastery of technical material and reflection upon the implications of this material for language design. Class time will be divided about equally between presentations of technical material and discussion on study questions and exercises. Homework exercises (generally done with pencil and paper) will be assigned regularly. Students may occasionally be asked to make short, informal, oral presentations (with advance notice) on their answers to homework problems.
Links: Topics covered
03/23/06