CPSC 5135 Graduate Syllabus – Spring 2009

Programming Languages

Instructor: Dr. David E. Woolbright

Office: CCT, Room 439

Phone: 565-3524

e-mail:

Required Texts:

/ The Definitive ANTLR Reference: Building Domain Specific Languages
Copyright © 2007, Terence Parr
The book can be purchased in the local bookstore or downloaded for a fee here.
http://www.pragprog.com/

Java Tutorial:

http://java.sun.com/docs/books/tutorial/

Scheme Resources:

Scheme Specification: http://www.schemers.org/Documents/Standards/R5RS/ This is the current description of the language. Only 50 pages! Read it.

Teach Yourself Scheme in Fixnum Days: http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html A no-frills introduction to the language.

The Scheme Programming Language, by Kent Dybvig http://www.scheme.com/tspl2d/ An excellent language book available on the web.

How To Design Programs, by Felleisen, Findler, Flatt, Krishnamurthi An excellent introductory text, but probably too long for this course.

Down load Dr. Scheme - http://www.plt-scheme.org/ This is the environment we will use for programming in Scheme. Install it and begin reading The Little Schemer.

Class Web Site:

http://csc.colstate.edu/woolbright (click on CPSC 5135 Resources) There are a number of on-line lectures on grammars, ANTLR, Scheme,and Java which are downloadable or which can be streamed over the internet. Additionally I will provide a WebCT site for the class to be used for dropping assignments.

Outcomes:

1) We will learn to build interpreters for small programming languages. Specifically, we will learn to build recursive descent parsers and interpreters. In doing so, we will learn a language building tool called ANTLR and a second grammar visualization tool called ANTLRWorks. We will also study the terminology that surrounds the description of programming languages. We will address questions like “How can a programming language be described?”, “What constructs does a given language support?, and “What paradigms does a specific language embody?”. We will learn about Finite state automata, regular grammars, BNF notation, scanners, lexers, parsers and interpreters.

2) A secondary goal is to broaden your experience with programming languages by writing programs in a language which may be new to you – Scheme. You will have to quickly learn the rudiments of Scheme – an experience which should build your confidence in your ability to master new languages. Scheme will also expand your notion of how computations can be accomplished.

Grading:

Your grade will be determined from a combination of scores from tests, programming assignments and an interpreter building project for a small language. Completion of the assignments is required as a prerequisite for taking the tests. We will have 2 tests covering the material in the Sebesta book and your knowledge of the assigned languages. Tests for graduate students will be slightly more demanding than tests for undergraduates.

MidTerm Test #1 25%

Final Exam 25%

Assignments 30%

Interpreter Project 20%

Grading for the course is on a 10 point scale (A : 100-90, …). A a rule, I do not give make-up tests, so if you need to miss a test, you should contact me before the test and explain why you must miss my test. I will work out an arrangement with you at that time. It is very inconvenient for you to miss a test unless it is an emergency.

If you are an online student you have two options for taking each of the three tests:

1)  You can take each test, here at CSU, along with the in-class students at the specified test time.

2)  You can find a proctor who will administer the exam and certify that the exam was taken by you under the prescribed conditions. If you plan to use a proctor, the proctor must be approved by me ahead of time. Do this in the first two weeks of the class so I can communicate by mail and phone with the proctor. Suitable proctors would be public librarians or college and university officials. Colleagues are not generally suitable to serve as proctors. Consult me if you have questions.

Assignments:

Descriptions of the assignments will be provided on my web site. You will be provided a “drop box” on my WebCT VISTA (https://d.view.usg.edu/webct/entryPage.dowebct)site for assignments. Due to the large number of assignments and the fact that most of the assignments build on previous work, I will not accept late assignments. If you miss an assignment date, there is a 20% reduction for each day the assignment is late. Check the course schedule or the WebCT assignments for due dates.

To drop an assignment, go to webct.colstate.edu and log in. Undergraduate Students: I have added your name to the graduate link in WebCT. Everyone: Go to the graduatel link to drop your assignments.

Attendance:

A record of your attendance will be kept. Persons with 5 or more absences will be dropped from the class. We will be covering a large amount of material in a short period, so you will not want to miss any classes.

Graduate Students:

If you are taking the graduate student section of this course you will be expected to complete all the requirements listed above. Tests for graduate students are more demanding than the undergraduate tests. Additionally, the interpreter project will implement a larger grammar than that required of the undergraduates.

ADA information

If you have a documented disability as described by the Rehabilitation Act of 1973 (P.L. 933-112 Section 504) and Americans with Disabilities Act (ADA) that may require you to need assistance attaining accessibility to instructional content to meet course requirements, we recommend that you contact the Office of Disability Services in the Academic Support Center, Tucker Hall 100 or at (706) 568-2330, as soon as possible. It is then your responsibility to contact and meet with the instructor. The Office of Disability Services can assist you and the instructor in formulating a reasonable accommodations plan and provide support in developing appropriate accommodations for your disability. Course requirements will not be waived but accommodations may be made to assist you to meet the requirements. Technical support may also be available to meet your specific need.