CIS505 Fall 2014

Syllabus for CIS505: Programming-Language Paradigms

Lecture: MWF 10:30am, Nichols Hall, room 019

Instructor: David Schmidt. 219A Nichols Hall; 532-7912; das at; office hours to be determined
Teaching Assistants: Pavel Janovsky (janovsky at and Hari Thiagarajan (thari at

Course web page:

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

Textbook: The course uses an on-line text, found at the Lecture-notes page at

Course Structure and Grading: We meet for lecture Mon-Wed-Fri. There will be 6-8 programming exercises and two or three in-class exams. Final letter grades are based on the exercise work (about 45%), exam scores (about 40%), and in-class exercises (about 15%). Letter grades are not fixed to 90-80-70% cutoffs but are ``curved'' by taking into account the difficulty of the coursework. Please contact me at any time during the semester if you want an indication of your performance.

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 three of the fundamental programming paradigms (dynamic-object-based, function-based, logic-based) via programming in Python, SML, and Prolog. Along the way, we will learn parser and interpreter construction.

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. the dynamic-object programming paradigm; parser and interpreter construction of an object language in a scripting language
  4. the functional paradigm; application of a functional language to database problems and interpreter construction
  5. the logical paradigm; query-solving in a logical language and interpreter construction
  6. if time allows: 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.

University policies: The Provost has requested that the information at be added to every course syllabus. Consider it done. Also, see for the University's policy regarding academic honesty.

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