COMPM023 - Validation and Verification

This database contains the 2017-18 versions of syllabuses. Syllabuses from the 2016-17 session are available here.

Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).

CodeCOMPM023 (Also taught as COMPGS03)
Year4 (Masters)
PrerequisitesSuccessful completion of years 1 and 2 of the Computer Science programme.
Term2
Taught By

Earl Barr (100%)

AimsThe module will train students in the principles and techniques of validating and verifying software systems. The training will be intellectually demanding and will cover not only the state-of-the practice in validation and verification, but also the most significant trends, problems and results in validation and verification research.
Learning OutcomesOn completion of the module, the successful student should have a good knowledge and understanding of correctness, consistency, faults and failures, static analysis and testing. The student should be able to understand the use of logic as a formal language for the specification of systems, to understand the use of symbolic execution, and the main verification techniques used in symbolic model checking, and be able to verify simple systems. In addition, students should have a good understanding of the range of approaches to testing that can be applied to software systems and be able to undertake both black-box and white-box (unit-level) testing. Further, successful students will be able to appreciate the limitations of the current tools and have insights in ongoing research topics to overcome them.

Content

Basic concepts:
- Software engineering lifecycle context 
- Correctness
- Soundness and completeness
- Faults
- Errors
- Failures
- Static and dynamic analysis

Validation:
- Kinds of testing (unit, functional, integration, system, acceptance, regression) 
- Black Box Testing: input partitioning and combinatorial testing
- Coverage and Structural Testing
- Mutation Testing
- Regression Testing

Verification:
- Propositional and Predicate Logic 
- Specifying and verifying programs
- Symbolic Execution
- Hoare Logic
- Model Checking
- Temporal Logic:  NuSMV, Computational Tree Logic (CTL)
- Abstract Interpretation

Reading: 
- Selected surveys and research papers

Method of Instruction

Lectures, coursework. There are two pieces of equally weighted coursework.

Assessment

The course has the following assessment components:

  • Written Examination (2.5 hours, 80%) 
  • Coursework Section (2 pieces, 20%)

To pass this module, students must:

  • Obtain an overall pass mark of 50% for all components combined;
  • Obtain a minimum mark of 40% in each component worth ? 30% of the module as a whole.

Resources

Reading list available via the UCL Library catalogue.