F20RS Rigorous Methods for Software Engineering

Prof Andrew IrelandDr Hind Zantout

Course co-ordinator(s): Prof Andrew Ireland (Edinburgh), Dr Hind Zantout (Dubai).

Aims:

To provide knowledge and understanding of tools and techniques which support rigorous software engineering

Detailed Information

Course Description: Link to Official Course Descriptor.

Pre-requisite course(s): F28SD Introduction to Software Design or equivalent.

Location: Dubai, Edinburgh.

Semester: 1.

Syllabus:

The course addresses the challenges of engineering and modelling safe and secure software systems. It covers a range of rigorous processes and formal methods that support the development of high integrity software systems. From modelling and reasoning about designs through to code, students will experience a range of state-of-the-art static analysis tools and techniques. While theory based, the course has a strong practical element, drawing upon industrial case study material where appropriate.

Learning Outcomes: Subject Mastery

Understanding, Knowledge and Cognitive Skills Scholarship, Enquiry and Research (Research-Informed Learning)

  • Knowledge and understanding of a range of rigorous processes and formal methods that support the development of high integrity software systems.
  • Critical understanding of the relationship between code level annotations and high-level formal specifications.
  • Knowledge of the mechanisms that underlie advanced modelling and static analysis techniques.
  • To be able to demonstrate a critical understanding of the relationship between code level annotations and flow analysis techniques.
  • To be able to demonstarte a critical understanding of program proof and how it can be used to provide strong formal correctness guarantees

Learning Outcomes: Personal Abilities

Industrial, Commercial & Professional Practice Autonomy, Accountability & Working with Others Communication, Numeracy & ICT

  • Conceptualize and define new abstract problems within the context of automated software development.
  • Make informed judgements in situations in the absence of complete or consistent data.
  • Exercise autonomy, initiative and creativity in the application of software engineering techniques.
  • Demonstrate critical reflection. (PDP)
  • Communicate with professional level peers, senior colleagues and specialists. (PDP)

SCQF Level: 10.

Credits: 15.