CIS705a Fall 2014

Syllabus for CIS705a: Programming-Language Design

Lecture: to be determined

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
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: to be determined There will be several programming exercises and one or two projects where you learn and then design and implement a domain-specific language. There might also be several "pencil and paper" homeworks.

Prerequisites: CIS505 (absolutely) and MATH 510 (or equivalent, namely, you can do algebra).

Objectives and Topics:

We will learn standard models of programming languages and how to design and implement our own domain-specific programming languages (DSLs) using script and Scala. We will study calculi for language definition: the lambda-calculus, for certain, and possibly Scott-Strachey-style denotational semantics.

Here is a list of topics to be covered:

  1. review of syntax notation and interpreter/compiler construction
  2. the C virtual machine
  3. namespace algebra and its heap virtual machine
  4. language design: the language core and its extension via abstraction, parameterization, and qualification
  5. top-down and bottom-up domain-specific-language design
  6. introduction to lambda-calculus
  7. presentation of DSL projects

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.

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.