Project (Term Project): 3 hours
Summary of Course Content
This course will address the issues involved in software development for reuse. The course will expose
students to technical topics relating to software reuse: design patterns, component-based development,
domain-specific languages, and code generation techniques such as: syntactic and scoping hygene,
partial evaluation, de-forestation. Concepts will be re-enforced via the case-study of specific languages
Students will undertake 2 assignments and a project. The project, which will carry the bulk of the credit,
will involve implementing a domain-specific platform which enables the rapid development of a class of
applications for a specific domain.
ECS 260 students will undertake a significant project, counting for 50% of the credit of the course, where
they will design a domain-specific language (or extensions thereof) and an implementation of the
language by writing a compiler. This project will require the students to exercise design judgement,
balancing such goals as ease-of-use, evolvability, and performance. Examples from the past include: a
policy language for security policies, and compiler that generates wrappers to enforce such policies; a
language to specify curriculum requirements and a compiler that generates a checker to validate an
individual student's academic plans.
ABET Category Content
Engineering Science: 1 unit
Engineering Design: 2 units
A collection of papers and notes that will be distributed by the instructor.
Potential Course Overlap
The course does not have a significant overlap with any other course. It does however, complement the
material in 240, since we describe the use of high-level programming languages to improve software
productivity in narrow domains. The primary focus of the course is on techniques to achieve higher
levels of software reuse in narrow application domains: techniques include design patterns, distributed
object systems, software architectures, and domain-specific and other transformational techniques.