DATA STRUCTURES AND ALGORITHMS - 2020/1
Module code: COM1029
Appropriate choices of data structures can expedite algorithm efficiency and also aid clear thinking when designing algorithms. It is thus natural for data structures to be studied with algorithms. An algorithm is a sequence of steps for performing some process. A computer program is not an algorithm but a representation of an algorithm. There is a need to be able to create effective algorithms, quantify their efficiency and classify them independently of any computing system or language.
MANULIS M Dr (Computer Sci)
Number of Credits: 15
ECTS Credits: 7.5
Framework: FHEQ Level 4
JACs code: I260
Module cap (Maximum number of students): N/A
Prerequisites / Co-requisites
This module considers various data structures such as lists, stacks, queues, trees and graphs and the abstract data types on which they are based. The module also discusses algorithms. It defines a scheme for quantifying algorithm efficiency, devoid of any computing system or language. Several approaches for algorithm design are studied such as recursion, divide and conquer, brute force and greedy strategies. Towards the end of the module the classification of algorithms and the problems they solve is explored. The module finally concludes by asking how future technological developments could change the way we perceive algorithms.
Abstract data types: discussed in general.
Basic data Structures: lists, linked-lists, stacks, queues, implementation/applications of these.
Trees: general trees ordered trees, multiway trees, implementations of trees, tree traversal, path lengths.
Binary trees: internal and external nodes, binary tree depth, logs.
Binary tree applications: expression trees, binary search trees, heaps, Huffman data compression.
Graphs: undirected/directed, connected, weakly/strongly connected, complete), adjacency matrix/list, topological ordering, weighted graphs/networks, path lengths, Dijkstra’s Algorithm, depth/breadth-first, traversals, minimum spanning trees, Prim’s Algorithm, Kruskal’s Algorithm.
Algorithm Efficiency: Big ‘Oh’, common time complexities, log time, binary search v linear search Recursion: why use it, the ground rules, Merge Sort in detail, Towers of Hanoi in detail.
Sorting: Bubble-, Selection-, Insertion-, Shell-, Bucket-, Radix-, Heap-, Quick-, external sorting.
Hashing: searching, hash function & table, collisions, separate chaining and open addressing.
Algorithm design strategies: brute force, greedy, divide and conquer, dynamic programming, incremental, probabilistic.
Algorithm and problem classification: polynomial and exponential time, reasonable and unreasonable algorithms, tractable and intractable problems, the future.
You should be clear that the Algorithms material in the module is NOT intended to be a review of a comprehensive range of specific algorithms. Nevertheless, a limited number of specific algorithms within the areas of searching and sorting will be examined
|Assessment type||Unit of assessment||Weighting|
|School-timetabled exam/test||IN-SEMESTER TEST (INDIVIDUAL) (1.5 HOURS)||40|
|Examination||EXAM 2 HOUR UNSEEN EXAMINATION||60|
Units of Assessment Weighting towards Module Mark (%) In-semester test (individual) An end of semester computer-based test to prepare the students for the exams on a wider range of topics examined in data structures and algorithms. This test will ensure that students can apply their understanding of recursion, data structures, and algorithms and be able to quantify their efficiency. 40% Exam: 2 hour unseen examination 60% Alternative Assessment: Not applicable
The assessment strategy is designed to provide students with the opportunity to demonstrate
Thus, the summative assessment for this module consists of:
Grades on the test against previously published assessment criteria
Computer-based test (up to 2 hours) tentatively due in Week 10/11
The test is designed to address the following learning outcomes:
Describe and handle some of the taught data structures of linked lists, stacks, queues, trees, graphs.
Choose the appropriate data structure for a particular application.
Know what is meant by recursive and non-recursive algorithms.
Quantify algorithm efficiency.
A 2-hour examination testing all learning outcomes
Formative assessment and feedback
The use of electronic voting handsets offers formative feedback opportunities throughout the module. Verbal feedback is also given in lab sessions as the students attempt the lab exercises. Feedback will also be provided on the in-semester test.
- Discover and examine various abstract data types (ADT).
- Explore data structures based on those ADTs, including implementation and applications of such data structures.
- Explore algorithms as abstractions - independent of any computing facility.
- Examine what is involved in creating algorithms and quantifying their efficiency.
- Examine the importance of algorithm efficiency.
- Examine the action of a small number of specific algorithms particularly in the areas sorting and searching.
- Explore various strategies for algorithm design and argue about their correctness.
- Classify algorithms.
|1||Choose the appropriate data structure for a particular application.||CP|
|2||Be familiar with the big Oh measure of algorithm efficiency.||K|
|3||Know what is meant by recursive and non-recursive algorithms.||K|
|4||Describe a number of searching strategies and trace any of the taught hashing schemes.||KC|
|5||Use any of the taught sorting methods.||KCP|
|6||Understand recursion and polymorphism and be able to use them in simple algorithm design.||CP|
|7||Distinguish between different algorithm design strategies.||CP|
|8||Discuss the classification of algorithms and problems.||KP|
C - Cognitive/analytical
K - Subject knowledge
T - Transferable skills
P - Professional/Practical skills
Overall student workload
Independent Study Hours: 106
Lecture Hours: 22
Laboratory Hours: 22
Methods of Teaching / Learning
The learning and teaching strategy is designed to provide students with the knowledge, skills and practical experience covering the module aims and learning outcomes.
The learning and teaching methods include:
44 contact hours in weeks 1-11, consisting of:
2 hours of lectures per week
2 hour lab session per week, including one lab session for the in-semester test
The lab sessions will put into practice the theoretical concepts covered in the lectures.
A test will be used during the course to ensure the student has assimilated the material during the course.
Students will be expected to spend a minimum of 2 hours a week on self-study
Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.
Reading list for DATA STRUCTURES AND ALGORITHMS : http://aspire.surrey.ac.uk/modules/com1029
Programmes this module appears in
Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2020/1 academic year.