CIS505 Fall 2011

Syllabus for CIS505: Programming-Language Paradigms

Lecture: MWF 2:30pm, Nichols Hall, room 019

Instructor: David Schmidt. 219A Nichols Hall; 532-7912; das at ksu dot edu; office hours to be determined
Teaching Assistant: Ming Yang (yangming at ksu dot edu)

Course web page: http://www.cis.ksu.edu/~schmidt/505f11

K-State Online is used to upload assignment work and report grades

Textbook: The course uses an on-line text, found at the Lectures page at http://www.cis.ksu.edu/~schmidt/505f09.

Course Structure and Grading: We meet for lecture Mon-Wed-Fri. There will be about 6-8 programming exercises and (probably) a mid-term and a final exam. Final letter grades are based on the exercise work, exam scores, and attendance. (I take attendance from time to time.) Letter grades are not fixed to 90-80-70 cutoffs but are ``curved'' by taking into account the difficulty of the coursework.

Prerequisites: CIS300 and CIS301 or equivalent experience. You should already be skilled at designing and coding component (object) programs in C# or Java. 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 objective is to master the fundamental programming paradigms. Along the way, we will learn 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 programming paradigms
  2. syntax and grammar notation; introduction to parser and interpreter construction
  3. characteristic semantic domains; control, data, and component structures
  4. the imperative programming paradigm; parser and interpreter construction in an imperative language
  5. the functional paradigm; parser and interpreter construction in a functional language
  6. the logical paradigm; query- and puzzle-solving in a logical language
  7. domain-specific modelling and domain-specific programming languages; designing one's own domain-specific language
Class conduct: 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.

Provost's requirements: Please read http://www.k-state.edu/provost/resources/teaching/course.htm for the Provost's requirements regarding course structure and conduct. Please read Items 1-3 on that page and treat them as part of this syllabus.

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. September 12 is the last day to drop a course and get 100 % refund; September 26 is the last day to drop a course without a "W" recorded on your transcript; October 28 is the last day 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.