This module will introduce the principal fundamental data structures and algorithms used in computer science. Data structures will be formulated to represent information in such a way that it can be conveniently and efficiently manipulated by the algorithms that are developed. The ideas will be presented abstractly, although examples will be given in the language used in the programming workshop module.
Learning Outcomes
By the end of the module students should be able to:
demonstrate understanding of the principles of algorithm development
demonstrate understanding of abstract models of data and computation
make informed choices between alternative ways of implementation, justifying choices on grounds such as time and space complexity
explain and apply data structures such as binary trees, heap-trees, graphs and tables, together with their
internal representations and relevant algorithms
select, with justification, appropriate data structures to ensure efficient implementation of an algorithm (e.g., searching, insertion, deletion or sorting)
explain the differences between basic complexity classes of algorithms (constant, linear, quadratic, logarithmic, exponential)
argue that algorithms are correct, and derive their time complexity
select, with justification, appropriate algorithms for basic tasks such as searching and sorting, including reference to the algorithm's complexity class