CSci 658-01: Software Language Engineering
Spring 2018 Assignment #4 (Final Project)

H. Conrad Cunningham

4 May 2018

Revised Deadline Saturday, 5 May, 11:59 p.m.

Original deadline was Friday, 4 May, 11:59 p.m.

General Instructions

All homework and programming exercises must be prepared in accordance with the instructions given in the Syllabus. Each assignment must be submitted to your instructor by its stated deadline.

Assignment #4 (Final Project) Description

This is the final project. It is an individual assignment.

This assignment requires you to design a domain-specific language (DSL) using the techniques we have discussed this semester.

Complete the following steps:

  1. Choose an interesting problem – perhaps one related to your research or other professional interests. Do not choose a problem that you have solved for a previous assignment in this class, that the instructor provided you as a case study, etc. Discuss your idea with the instructor if you have any questions.

    You may choose to implement a DSL for the adventure game problem we are discussing in class, but please discuss that with your instructor before doing so.

  2. Write a careful description of your problem using appropriate techniques (e.g. using one or more paragrams, user stories, etc).

  3. Analyze your problem using appropriate techniques (e.g. using SCV analysis, domain analysis, object-oriented analysis/design, etc).

  4. Choose to design either an external or an internal DSL (or perhaps some combination).

  5. Describe the syntax and semantics of your DSL precisely.

  6. Implement the DSL in an appropriate manner (e.g. using DSL patterns and other techniques we discussed, using other techniques arising from your own investigation, etc).

    Normally you will want to separate the parsing from the semantic model and interpretation or code generation as we have done in the DSL case studies.

    You may use whatever language or library you wish, but be sure that your instructor can your DSL implementation to evaluate your work.

    Be sure to document your program appropriately (with internal comments, external documents, diagrams, etc). Also document what resources you used in constructing your solution.

  7. Test your DSL implementation thoroughly.

  8. Submit the following to Blackboard by the due date:

    1. Description of your problem

    2. Description of the syntax and semantics of your internal or external DSL

    3. Implementation of your DSL (e.g. programs, scripts, data filed, etc.)

    4. Testing infrastructure for your implementation

    5. Documentation of your implementation (as internal program comments or separate documents)

Remember that the instructor prefers to compile and execute your solutions on his MacOS systems. Make it easy for him by identifying what software is needed.