Syllabus for CS 50200
Compiling and Programming Systems
Spring, 2013

Professor Roger Kraft
Office: Classroom Office Building (CLO), Room 368
Office phone: (219) 989-2696
Office hours: after class and by appointment.
E-mail: roger@purduecal.edu

Text: Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages, by Terence Parr, The Pragmatic Programmers, 2009.

This course is an introduction to the implementation of programming languages using interpreters. The primary goal of the course is to help you understand programming language features by having you implement the features in an interpreter. Some examples of the kind of language features we will be considering are: static vs. dynamic scope, static vs. dynamic typing, nested functions, first class functions, anonymous functions, closures, strict vs. lazy evaluation,

This course will cover Chapters 1 through 10 from the textbook. Your grade for this course will be based on about ten homework assignments and a final exam in the following manner:

           70%    homework assignments,
           30%    final exam.
A tentative date for the exam is
           Final    Final exam week.
Each of the homework assignments will have a due date. To receive full credit for an assignment, it must be turned in by the due date. All assignments handed in late will be marked off 5% of the total points for each calendar day late up to a maximum of 50%. If an assignment is more than two weeks late, then I reserve the right not to accept it for credit. In this course web site there are instructions on how you are to turn in your assignments. You will be expected to follow the instructions.

You should turn in your own work for each homework assignment. Here is what that means: You may talk with your classmates about the course material and the ideas behind each homework assignment (and, in fact, it is a good idea to do that) but you should solve the problem on your own and write your own code for the solution. Turning in someone else's solution (or even a modified version of someone else's solution) is a breach of academic integrity. Similarly, giving a copy of your solution to someone else in the class is also a breach of academic integrity. If you need help with a homework assignment, come and ask me. You can ask me as many questions as you want! Please do not hesitate to ask me questions after class, in my office, in an e-mail message, over the phone, etc.

In this web site you will find more information about programming langauges and this course. There are links to online help and documentation, information about course reading assignments, and, very importantly, all of your homework assignments and their due dates will be posted on one of these web pages.

If you are a student with a documented disability who will require academic/classroom accommodations in this course, please register with the Coordinator of Services for Students with Disabilities in the Student Support Services Office located in the Student Union and Library Building (SUL), Room 341, phone numbers: 219-989-2455, 219-989-2454(voice/TTY) or 219-989-2920.

Ethics are an integral part of being a student and a professional. Academic integrity is the hallmark of this University. Therefore, Purdue University does not tolerate academic dishonesty in any form. If a student breaches integrity, the student risks sanctions in both the academic and conduct arenas. Academic dishonesty includes, but is not limited to, the unauthorized use of other's intellectual property (plagiarism), and lying to an instructor or any University employee. Such actions WILL result in a failing grade on the assignment with the strong possibility of referral to the Office of the Dean of Students for a conduct sanction (see the Purdue University Calumet Student Handbook available from the Dean of Students office and the Dean of Students web site).


Return to the CS 50200 home page.


compliments and criticisms