Module description:
This module introduces students to theoretical tools and techniques important in software development. The first half of the module is concerned with automata in the form of labelled transition systems and will enable the student to understand their role in modelling computing systems. The second half of the module is concerned with algorithms and data structures and will enable the student to understand how the selection of different algorithms and data structures affects the performance and efficiency of a program.