Aims: To ensure students appreciate the concept of an algorithm as an effective procedure, To introduce the criteria by which algorithms may be chosen, and to demonstrate how algorithms may be used in conjunction with data structures for tasks such as sorting and searching.
Learning Outcomes: A student will be able to:
* use a variety of approaches to algorithm design;
* understand the importance of space and time complexity in choosing algorithmic solutions;
* evaluate and choose appropriate data structures and algorithms for a range of programming problems.
Content: Brief introduction to the C programming language for implementing algorithms. Introduction to algorithmic complexity and efficiency: O() notation, growth rate, estimating complexity, space/time trade offs. Classes of algorithm: for example, divide and conquer, greedy algorithms. Storage and retrieval by key: linear and binary searching, linked representations, hashing and binary search trees, introduction to other types of tree. String matching algorithms. Sorting algorithms: insertion sort, selection sort, heapsort, quicksort.
| |