University of Surrey - Guildford
Registry
  
 

  
 
Registry > Module Catalogue
View Module List by A.O.U. and Level  Alphabetical Module Code List  Alphabetical Module Title List  Alphabetical Old Short Name List  View Menu 
2010/1 Module Catalogue
 Module Code: COM1020 Module Title: DATA STRUCTURES AND ALGORITHMS
Module Provider: Computing Short Name: COM1020
Level: HE1 Module Co-ordinator: BISH DR Mr (Computing)
Number of credits: 10 Number of ECTS credits: 5
 
Module Availability
Spring
Assessment Pattern

Assessment Pattern

 

Unit(s) of Assessment

 

Weighting Towards Module Mark( %)

 

Exam: written examination. 30% of the examination will be devoted exclusively to testing students' understanding of the non-assessed coursework (see following).

 

100%

 

Non-assessed coursework (individual): students will be given assignments which they will be expected to tackle but which will not be for handing in. These assignments will be discussed in selected lectures. In due course solutions will be issued. Students' understanding of these assignments and the solutions will be tested in the exam as described above.

 

This coursework is not assessed directly. But 30% of the exam marks will be attributed solely to students' understanding of this coursework.

 

Qualifying Condition(s) 

 

     

 

Module Overview

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.

 

Prerequisites/Co-requisites
COM1007 Programming Fundamentals
Module Aims

 

Module Aims

 

To discover and examine various abstract data types (ADT).

 

To explore data structures based on those ADTs, including implementation and applications of  such data structures.

 

To explore algorithms as abstractions - independent of any computing facility.

 

To examine what is involved in creating algorithms and quantifying their efficiency.

 

To examine the importance of algorithm efficiency.

 

To examine the action of a small number of specific algorithms particularly in the areas sorting and searching.

 

To explore various strategies for algorithm design.

 

To classify algorithms.

 

To question what the future holds in terms of algorithm development and classification.

 

Learning Outcomes

Learning Outcomes

 

At the end of the module you should:

 

Be able to describe and handle the taught data structures of linked lists, stacks, queues, trees, graphs.

 

Be able to describe and handle a number of applications of the taught data structures.

 

Be familiar with the big Oh measure of algorithm efficiency.

 

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

 

Be able to describe a number of searching strategies and trace any of the taught hashing schemes.

 

Be able to describe any of the taught sorting methods.

 

Be able to distinguish between different algorithm design strategies.

 

Be able to discuss the classification of algorithms and problems.

 

Module Content

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.

 

Methods of Teaching/Learning

Methods of Teaching/Learning

 

Three lectures per week: some of these will take the form of seminars. 

 

 

The course is conceptual. Much of the material is independent of any computer language. Much of your coursework will be pen and paper (or word processor) based. But at the practical level you will also be handling Java programs which implement various data structures such as linked lists and algorithmic strategies such as recursion.

 

Selected Texts/Journals

Selected Texts/Journals

 

All of the material you need for the module will be provided. However, if you also wish to purchase a book you may find the following useful.

 

 

Main course text      Title:               Data Structures and Algorithm Analysis in Java. (2nd Edn)

 

                              Author:            Mark Allen Weiss

 

                              Publisher         Pearson International

 

                              ISBN               0-321-37319-7   Date: 2007

 

 

Other Books            Title                Algorithmics:  The Spirit Of Computing  (2nd or 3rd Edn)

 

                              Author:            David Harel (with Yishai Feldman for 3rd Edn only)

 

                              Publisher         Addison-Wesley Publishing Co

 

                              ISBN               2nd Edn:  0-201-50401-4   Date: 1996

 

                              ISBN               3rd Edn:  0-321-11784-0   Date: 2004

 

Last Updated

AUG 2010