CIS 505: Programming Languages

Fall 2008 Edition


Location and Time: Nichols 122, TR 1:05 -- 2:20 Note that there will be several extra lectures throughout the semester. These will be primarily held to to make up for time lost due to the instructor's travel to conferences and to other universities for research visits and to supplement lectures.

Instructor and E-Mail: Anindya Banerjee (ab AT cis.ksu.edu)

Office and Phone: 324B Nichols Hall, ph. 532-7944

Office Hours: T: 2:30 -- 3:30 and by appointment. (This means please stop by anytime). My office is located in N324B.

Recommended readers for OCaml: Jason Hickey's notes on ML ; Developing Applications with Objective Caml

Course home page: http://www.cis.ksu.edu/~ab/Courses/505/fall08/index.html

Course objectives: The overarching goal of this course is to learn the principles of programming languages, by prototyping interpreters for reasonable subsets of imperative, functional, and object-oriented programming languages. Upon completion of the course, students will have:

In the process, students will learn a significant part of the functional language, Objective Caml (OCaml) and will use OCaml as a vehicle to implement interpreters for other languages.

Note that we will not be embarking on a tour of particular programming languages.

Prerequisites

If you are an undergraduate who has not earned a C or better in each of the prerequisite courses, the College of Engineering may drop you without warning.

Topics

Most of the above topics are also topics of intensive research in the programming languages and compilers community.

Lecture Notes and lectures

The material presented in CIS 505 is not neatly covered in any textbook or collection of textbooks. Please take detailed notes!.

Programming

All programming in this course will be done using the Objective Caml (OCaml) language, under Linux or MacOS (and not under Windows). Here is a comprehensive collection of OCaml resources. You must use the Emacs editor for programming in OCaml. The Emacs editor has an OCaml mode; Please see the course web page handout on how to install this (handout #06).

Homeworks, Quizzes, Class Participation and Exams

The approximate percentages are: Homeworks (30%), Exam 1 (35%), Exam 2 (35%). All exams are open-book, open-notes. I may choose to give substantial projects in lieu of in-class exams.

This is a required course. To pass the course, a student must score at least a C. There are no make-up quizzes or exams.

Your grade in this course will be based solely on your performance in the exams/projects and homeworks and your participation in discussions in class. No other considerations can be given when it comes to deciding the final grade.

Homework Assignments

Homework assignments will include pencil and paper problems and/or programming problems.

Each programming assignment should begin with your name, assignment number, and the date of submission. All programs should be syntactically correct and must compile. Submitting syntactically incorrect programs or programs that don't compile will automatically result in a failing grade for the assignment.

Please spend substantial time with paper and pencil before approaching a computer; you will spend much less time debugging, and better understand your programs. Remember: "An hour with a pencil is often worth several at the keyboard"!

Policy statements

Collaboration policy: I believe that collaboration fosters a healthy and enjoyable educational environment. For this reason, I encourage you to talk with other students about the course and to form study groups.

Because the programming assignments in this course are particularly challenging, you will be allowed on any assignment to form a "team" (exact number per team TBD) with a partner. The team members must work closely together on the assignment and turn in a single copy of the assignment for the team. The grade received on such a submission will be given to all team members.

This is a rather unusual collaboration policy, and it is only allowed subject to the following ground rules:

Incompletes: An incomplete (I) final grade will ve given only by prior arrangement in exceptional circumstances conforming to department policy in which the bulk of the course work has been completed in passing fashion.

Students with disabilities: If you have any condition, such as a physical or learning disability, which will make it difficult for you to carry out the work in this course, or which will require academic accommodations, please notify me in the first two weeks of the course.

Dropping this course: If you decide not to complete this course, it is your responsibility to drop.

Cell phones/pagers: Cell phones and pagers must be turned off during lectures.

Newspapers: Despite strong temptation, please do not read newspapers during a lecture.

Other official policies

Acknowledgements: To Franklyn Turbak and Shriram Krishnamurthi for their inspirational teaching and help regarding this course.


Anindya Banerjee