# DATA STRUCTURES AND ALGORITHMS - 2021/2

Module code: COM1029

## Module Overview

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.

### Module provider

Computer Science

CHOCKLER Gregory (Elec Elec En)

### Module cap (Maximum number of students): N/A

Independent Learning Hours: 95

Laboratory Hours: 22

Guided Learning: 11

Captured Content: 22

Semester 2

None.

## Module content

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.

Main topics

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 pattern

Assessment type Unit of assessment Weighting
School-timetabled exam/test ONLINE (OPEN BOOK) MIDTERM TEST WITHIN 24HR WINDOW 20
Examination ONLINE (OPEN BOOK) EXAM WITHIN 24HR WINDOW 80

## Alternative Assessment

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

## Assessment Strategy

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:

1. Describe and handle some of the taught data structures of linked lists, stacks, queues, trees, graphs.

2. Choose the appropriate data structure for a particular application.

3. Know what is meant by recursive and non-recursive algorithms.

4. 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.

## Module aims

• 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.

## Learning outcomes

 Attributes Developed 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

Attributes Developed

C - Cognitive/analytical

K - Subject knowledge

T - Transferable skills

P - Professional/Practical skills

## 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.