To introduce students to a wide variety of data structures and algorithms. To provide students with a coherent knowledge of techniques for implementing data structures and algorithms. To discuss the complexity, advantages and disadvantages of different data structures and algorithms. To introduce the main algorithms for fundamental tasks such as sorting and searching.
A. To understand and to be able to apply a wide variety of data structures, together with their internal representation and algorithms;
B. To be able to make informed choices between alternative ways of implementation, justifying choices on grounds such as time and space complexity;
C. To be able to select, with justification, appropriate data structures to ensure efficient implementation of an algorithm.
Students will be expected to attend two hours of formal lectures as well as to participate in one hour of supervised tutorials and practicals in a computer lab in a typical week. Lectures will introduce students to the academic content and practical skills which are the subject of the module, while tutorials and computer practicals will allow students to practice those skills. In addition, students will be expected to devote at least three hours of unsupervised time to solving continuous assessment tasks and private study. Private study will provide time for reflection and consideration of lecture material and background reading. Continuous assessment will be used to test to what extent practical skills have been learnt, in particular, assessment tasks will be solved individually and each solution comprises the resolution, using sound programming and software engineering techniques, of the given problems expressed in terms of a requirements statement.