After the first two courses a number of domain specific options can be taken. The working group considered that domain-specific developments would have progressed to the extent that in many domains it would be appropriate to take a course in construction of software in that domain. For example, many compiler courses explain the principles of compiler theory and allow the students to build simple compilers using meta-compiler tools such as LEX and YACC. We envisage this approach to toolkit development extending. In domains where the technology has not advanced to the level of providing toolkits then appropriate generic frameworks and architectures for software construction from suitable components will be likely. The majority of software engineers will be engaged in the construction of these components into systems rather than with a ``start from scratch'' implementation. There are a number of domains where this is already possible; these include: compilers; database systems; real-time control systems, business systems.
In addition these courses would cover appropriate aspects of: