CIS505 Fall 2009, Syllabus

CIS505: Programming-Language Paradigms

Lecture: MWF 2:30pm, Nichols Hall, room 122
Instructors:
Torben Amtoft
219C Nichols Hall; 532-7917; tamtoft at ksu dot edu;
office hours (tentatively): 1-2pm, Mon & Wed, and by appointment
David Schmidt
219A Nichols Hall; 532-7912; das at ksu dot edu;
office hours ???pm, ??? & ???, and by appointment
Teaching Assistant: Vijay Sankar Kolli; vijayk at ksu dot edu;

Course web pages:
Amtoft: http://www.cis.ksu.edu/~tamtoft/CIS505/09Fall
Schmidt: http://www.cis.ksu.edu/~schmidt/505f09

Mailing list: cis505-l@listserv.ksu.edu serves for class announcements, as well as questions and issues of general interest (note that you cannot mail attachments).
K-State Online: is used to report grades, and to upload material relevant for the course (slides, assignments, model solutions, etc.)

Important: Schmidt will teach the first quarter of the course, Amtoft will teach the middle half, and Schmidt will finish. Please consult the course web page of the instructor in charge for assignments and announcements.

Textbook: The course uses an on-line text, found at the Lectures page at http://www.cis.ksu.edu/~schmidt/505f09. There is also a hard-copy text, ML for the working programmer by Larry Paulson, Cambridge Univ. Press, 1996.

Course Structure: We meet for lecture Mon-Wed-Fri.
There will be regular homeworks, usually programming exercises. Assignments that are late will not be graded, unless in case of documented medical or family emergencies.
During the semester, there will be two written in-class exams, tentatively on Wednesday, September 30, and on Wednesday, November 11. We may decide to replace the final exam by a major project.

Grading: Final grades are not based on strict percentage cutoffs but are ``curved'' by taking into account the difficulty of the exercises and exams. Our approach to grading is expressed well by this piece by S.A. Miller.

Prerequisites: CIS300 and CIS301 or equivalent experience. Please see the instructor if you have questions. A computer is not required for the course; you may do the exercises in any of the CIS labs.

Objectives and Topics: The primary objectives are to understand the fundamental programming paradigms and to understand why it is important to understand them. Along the way, we will master parser and interpreter construction with an eye towards designing and implementing our own domain-specific languages.
Here is a summary of the topics to be covered:

  1. survey of software architectures and domain-specific languages
  2. survey of programming paradigms
  3. syntax and grammar notation; introduction to parser and interpreter construction
  4. characteristic semantic domains; control, data, and component structures
  5. the imperative programming paradigm; parser and interpreter construction in an imperative language
  6. the functional paradigm; parser and interpreter construction in a functional language
  7. the logical paradigm; query- and puzzle-solving in a logical language
  8. domain-specific modelling and programming languages; designing one's own domain-specific language
Class conduct: Because of past problems with cell phones and noise-making devices, you must silence phones, pagers, and computers before lecture starts. If any device sounds an alarm during lecture, then the instructor can choose to end lecture immediately for that day.
Academic honesty policy: Please read http://www.ksu.edu/Honor for the University's policy regarding academic honesty; it is based on personal integrity which is presumed to be sufficient assurance that one's academic work is performed honestly and without unauthorized assistance. The homework exercises are meant to develop your skills; it is OK to discuss them with others and to ask for help with the tricky bits, but what you submit must be written/typed by you, and you must be able to reproduce it from memory, from scratch, whenever asked. That is, whatever you submit on paper must be saved in your brain as well. If you are in doubt about what is permissible, please ask an instructor.
Attendance policy: You are responsible for the material presented in class. If you miss a lecture, consult a fellow student or the instructor to learn what you missed.
Drop policy: It is your responsibility to drop the course if you are enrolled but decide not to complete the course --- there are no ``automatic'' drops due to nonattendance. Deadlines are: September 13 to drop a course and get 100 % refund; September 28 to drop a course without a "W" recorded on your transcript; October 30 to drop a course (with a "W"). KSU allows a retake of a course with removal of the prior grade, at most once per course, for a maximum of five courses.
Academic accommodation for students with disabilities: If you have a physical or learning disability that requires special accommodation, please notify the instructor(s) within the first two weeks of the course.
Grievances: If you think an instructor or TA made an oversight when grading your test or homework, you are very welcome to ask for clarification. But complaints about judgment calls, like how much credit to give for a partially correct solution, are not encouraged---it is like arguing balls and strikes. In particular this holds for homeworks (since each question contributes very little towards the final grade).
Notice of Copyright: During this course students are prohibited from selling notes to, or being paid for taking notes by, any person or commercial firm without the express written permission of the professor teaching this course.