Learning objectives
By the end of the course the students are expected to:
(1) Understand that building large or complex software systems is essentially different from programming small applications.
(2) Understand the fundamentals concerning the construction of functional specifications of software systems.
(3) Should be fluent in using the Z formal notation as a formal specification language.
(4) Understand the basics of about formally proving specification properties.
Knowledge and understanding
Using formal specification languages for the construction of large or complex software systems is one of the key tools to produce reliable software.
Applying knowledge and understanding
Solve many real-world problems concerning the formal specification of software systems.
Making judgements
Decide what part of a software are critical or complex enough as to be formally specified; decide what properties a given specification should enjoy.
Communication
Think and understand that formal specifications are a key communication vehicle among a development team. Be able to write clear, understandable and clearly correct formal specifications.
Lifelong learning skills
Students will learn a key tool of Computer Science, i.e. using logic and mathematics to describe software, which will let them approach their professional work in a essentially different way compared to those who have not been exposed to this knowledge.