Schedule

The table below shows the topics intended to be covered in each week of semester. The order or delivery date of lectures on this page may change during the semester.

The schedule gives recommended readings for each topic: either chapters from the textbooks, or extracts from other books.

Online copies of the textbooks and the extracts are available via the LMS (look under “Unit Readings”). The readings may be added to or modified as the semester progresses.

Your understanding of the lecture and workshop material will be greatly enhanced if you work through these readings prior to attending.

Java resources

The unit assumes you are familiar with at least one statically type-checked language (e.g. Java or C). If you are not already familiar with Java, you should make sure you have access to a Java textbook which covers the language.

One recommended textbook is:

It not only introduces the the Java language and object-oriented programming, but also explains the basics of design, testing and debugging in Java (see ch. 9, “Well-behaved Objects”).

You may also want to take a look at the following (very brief) revision document on Java language concepts, available here (PDF). In addition to basic language concepts, it provides references to books and resources that may be useful.

Week Lecture Lab Reading Assessment
1
22 Jul
  • Unit info
  • testing and QA concepts

No labs this week

  • Amman & Offutt, ch 1
  • Pressman, ch 8 (“Understanding Requirements”), ch 19 (“Quality concepts”)
  • Bruegge and Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java (3rd edn), ch 11 “Testing” (extract available here)
2
29 Jul

Introduction to testing

Introduction to testing

  • Pressman, ch 14 (“Component-level design”), ch 22 (“Software Testing Strategies”), ch 28 (“Formal modeling and verification”)
  • Horstmann, Object-Oriented Design and Patterns (2nd edn), ch 3 “Guidelines for Class Design” (extract available here)
  • Barnes and Kölling, Objects First With Java: A Practical Introduction Using BlueJ (5th edn), ch 7 “Well-behaved objects” (extract available here)
3
5 Aug

Test automation

Test case selection

  • Amman & Offutt, ch 3
  • Pressman, ch 23 (“Testing conventional applications”)
4
12 Aug
  • Input space partitioning
  • Graph testing

Test automation

  • Amman & Offutt, chs 6-7
  • Pressman, ch 23 (“Testing conventional applications”)
5
19 Aug
  • Logic testing
  • Mutation testing
  • Property-based testing

Graph-based testing

  • Amman & Offutt, chs 8–9
6
26 Aug

Quality assurance, software reviews, performance testing

Property-based testing and mutation testing

  • Pressman, ch 20 (“Review techniques”), ch 22 (“Software testing strategies”)

2 Sep

no class – non-teaching week

7
9 Sep

Systems and standards, risk management

Software reviews

  • Amman & Offutt, chs 10-12
  • Pressman ch 19 (“Quality concepts”), ch 21 (“Software quality assurance”)
8
16 Sep

Risk management
software metrics

Systems and standards

  • Pressman, ch 30 (“product metrics”), ch 32 (“process and project metrics”), ch 35 (“Risk management”)
9
23 Sep

Formal methods & program verification

Risk management and QA strategies

  • Pressman, ch 28 (“Formal modeling and verification”)
  • Project: Available 5:00 pm Thu 26 Sep
10
30 Sep

Formal specifications

Simple specifications

11
7 Oct

Specifications in Alloy

Specifications in Alloy

12
14 Oct

revision

no workshop