On successful completion of the module, students should be able to:
- Explain the limitations of testing as a means to ensure correctness and evaluate the role of verification in software engineering
- Create mathematically precise specifications and designs using logic-based specification languages
- Prove the correctness of programs with respect to a specification using Hoare logic
- Analyse the properties of formal specifications and designs
- Use tools to verify properties of specifications and designs