Note that this unit is available only to certain students, for whom it may be a core component of their course. COMP331 Software Engineering 3 credit points Software engineering is the application of engineering principles and methods to the design, implementation and operation of large software systems. This unit provides an introduction to the subject, describing the software life-cycle and the techniques that can be applied in each of its stages. Approximately half of the material is concerned with methods for analysis, specification and design, including the functional and object-oriented approaches. The remainder addresses issues of management and quality assurance.
Practical work includes a substantial group project.
The study of programming languages is important because of the central role that programming of one form or another plays in computing. In one half of the unit scripting languages and functional-programming languages are introduced using practical exercises. In the other half the design and implementation of programming-language compilers is covered with an emphasis on practical exercises where students build a compiler for a real language and a real machine. The unit will cover some general issues of the theory of computation and algorithm design, including computability and complexity. The general principles will be illustrated by designing several very efficient algorithms with applications in telecommunication networks, cryptography and other important fields.