For the midterm exam the students should:

- Know definitions of correctness, robustness, reliability

- Be able to define assertions for a given implementation (including pre and post conditions)

- Be able to produce sets of testcases and/or paths that satisfy the coverage criteria described in class 

- Be able to reason about subsumption relationship between coverage criteria

- Know the data flow coverage criteria

- Know the dependency analysis terminology

- Know the purpose and principle of mutation testing

- Be able to describe why both black box and white box testing might be needed

- Know the notion of coincidental correctness

- Know the RELAY fault-based model