Teaching Software Engineering in a Compiler Project Course

William G. Griswold
September 12, 2000

A compiler course with a term-long project is a staple of many undergraduate computer science curricula and often a cornerstone a program's applied-engineering component. Software engineering expertise can help a student complete such a course, yet that expertise is often lacking. This problem can be addressed without detracting from the core class material by integrating a few simple software engineering practices into the course. A domain-specific, risk-driven approach minimizes overhead and keeps the compiler material in focus, while treating the project as a ``real world'' enterprise reinforces key engineering lessons. The method might be called ``syntax-directed software engineering'', being driven by a specification centered around a BNF-style grammar. Engineering lessons are reinforced with general engineering principles and contextualization of the subject matter. The approach can be taught without substantial software engineering background. The approach of domain-specific risk-driven software engineering can be applied in courses such as operating systems by redesigning the practices around the its domain.

How to view this document

The authors of these documents have submitted their reports to this technical report series for the purpose of non-commercial dissemination of scientific work. The reports are copyrighted by the authors, and their existence in electronic format does not imply that the authors have relinquished any rights. You may copy a report for scholarly, non-commercial purposes, such as research or instruction, provided that you agree to respect the author's copyright. For information concerning the use of this document for other than research or instructional purposes, contact the authors. Other information concerning this technical report series can be obtained from the Computer Science and Engineering Department at the University of California at San Diego, techreports@cs.ucsd.edu.

[ Search ]

This server operates at UCSD Computer Science and Engineering.
Send email to webmaster@cs.ucsd.edu