This module aims to provide you with a strong formal methods underpinning for usage inreal world software development problems. By integrating an industrial tool andtechnique into your existing software development skills, you will learn to reason aboutand develop your software in a more correct and reliable manner. The module itselfforms around a technology which can be integrated into a software developmentprocess. Ada-SPARK is a formal language of component / object based systems, withan underpinning in formal mathematical models. Various levels of formality are providedwithin Ada-SPARK, from absence of runtime errors (AoRTE), through to full proof offunctional specifications. You will experience the differing amount of effort toachieve each level. The module covers two main streams. A mathematical underpinningfor software development is provided via material presented on logic, set theory, andproof. Ada-SPARK, used in safety-critical industrial applications, is introduced, andforms the basis of the coding instruction. The module covers the following topics: • Formal methods and their usage in industry and software development in general • Ada as a programming language• Ada-SPARK to support reliable and correct software development • Logic, set theory, and proof theory • Structuring complex software • Proving program correctness via preconditions and proof obligations