CIS705 Spring 2012

Syllabus for CIS705: Programming-Language Design

Lecture: TU 2:30-3:45pm, Nichols Hall, room 19

Instructor: David Schmidt
219A Nichols Hall; 532-7912; das at ksu dot edu;
office hours (to come); you can always email me for an appointment

Course web pages: All course materials are found at http://www.cis.ksu.edu/~schmidt/705s12.
K-State Online is used to collect assignments and report grades.


Textbook: The course-text materials are found at the Text Materials page at the course website.

Course Structure: We meet for lecture each Tuesday and Thursday. There will be several programming exercises and a project where you will design and implement a domain-specific language. There will also be paper-and-pencil assignments and 1-2 in-class exams. I might take attendance and factor it into the final grade. Cut-offs for final letter grades are "curved" based on the difficulty of the assignments and exams.

Prerequisites: (CIS505 and MATH 510) or (equivalent experience, namely, you can do algebra; you have significant experience with an object language; and you have programmed an interpreter). Please see the instructor if you have questions.

Objectives and Topics:

We will learn about standard models of programming languages and how to design and implement our own domain-specific programming languages (DSLs) using dynamic data-structures languages (specifically, Python and Prolog). We will study calculi for language definition: the lambda-calculus, for certain, and probably the Calculus for Communicating Systems (CCS).

Here is a list of topics to be covered:

  1. review of language paradigms
  2. review of syntax notation and interpreter/compiler construction
  3. linear-storage-based and namespace-based runtime models
  4. language design: the language core and its extension via abstraction, parameterization, and qualification
  5. interpreter implementation in Python, a dynamic data-structure language
  6. top-down and bottom-up domain-specific-language design; macroprocessors
  7. introduction to lambda-calculus and CCS
  8. using Prolog (or a logical framework) for language prototyping
  9. student presentations of DSL projects.
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 and http://www.k-state.edu/provost/resources/teaching/course.htm for the University's policies regarding academic honesty.

Some of our assignments give you the option of working in instructor-approved two-person teams. It is OK to discuss an assignment with others and even to ask for help with the tricky bits, but each and every word of what you submit must be typed by you (and your approved team partner), and you must be able to explain and reproduce your work, whenever asked --- whatever you submit must be saved in your brain as well.

If you are in doubt about what is permissible, please ask the instructor.

Attendance policy: You are responsible for the material presented during the lectures. I do take attendance occasionally.

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. February 6 is the last day to drop a course and get 100 % refund; February 21 is the last day to drop a course without a "W" recorded on your transcript; March 26 (the first day after spring-break week!) is the last day to drop a course (with a "W" grade).

Academic accommodation for students with disabilities: If you have a physical or learning disability that requires special accommodation, please notify the instructor within the first two weeks of the course.