The module aims to introduce students to a wide variety of data structures and algorithms. It provides students with a coherent knowledge of techniques for implementing data structures and algorithms. It also discusses the complexity, advantages and disadvantages of different data structures and algorithms. Finally, it introduces the main algorithms for fundamental tasks such as sorting and searching.
A. apply a wide variety of data structures, together with their internal representation and algorithms; B. make informed choices between alternative ways of implementation, justifying choices on grounds such as time and space complexity; C. select, with justification, appropriate data structures to ensure efficient implementation of an algorithm.
The teaching philosophy of the module follows very much the philosophy of Syntegrative Education. This has meant that the teaching delivery pattern, which follows more intensive block teaching, allows more meaningful contribution from industry partners. This philosophy is carried through also in terms of assessment, with reduction on the use of exams and increase in coursework, especially problem-based assessments that are project focused. The delivery pattern provides space in the semester for students to concentrate on completing the assessments. Students will be expected to attend lectures, seminars, tutorials and practicals in a computer lab. 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 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.