Testing, Debugging and Verification
About
The main aim of the course is to provide a basic understanding of techniques that cope with errors in programs. Recurring themes are a) the identification of errors, b) their analysis, and c) their removal. The course also provides an understanding of systematic ways to convince oneself that a program unit really does what it should.
The course covers formal and informal methods, testing (terminology, coverage, unit tests, a unit test framework), debugging (control, workflow, localisation, tools), formal specifications (pre-/postconditions, invariants), formal verification (logics, tool support). Throughout, the course is concerned with imperative programs in general, and objectoriented programs in particular.
After the course, student have understood - and are able to employ - the methods testing (trying to reveal the presence of errors in a systematic way), debugging (the act of isolating and fixing errors), and verification (reasoning about programs in order to guarantee correctness). All these methods only make sense in the presence of a specification of what the program is supposed to do.
Prerequisites and selection
Entry requirements
To be eligible for the course students should have successfully completed 45 hec of an education aiming at a bachelor degree within Computer Science, Software Engineering or equivalent. Within these 45 hec, the student should have successfully completed:
A 7.5 hec course in discrete mathematics (such as DIT980)
A 7.5 hec course in imperative/object-oriented programming (such as DIT012 or DIT953)
Selection
Selection is based upon the number of credits from previous university studies, maximum 165 credits.