Unit 19 - Data Structure & Algorithms
Unit 19 - Data Structure & Algorithms
Algorithms
Introduction
The knowledge to implement algorithms and data structures that solve real
problems, and knowing the purpose, complexity and use of algorithms is part of an
essential toolkit for software engineers. An algorithm is a sequence of instructions
used to manipulate data held in a structured form and together constitute design
patterns for solving a diverse range of computer problems, including network
analysis, cryptography, data compression and process control.
This unit introduces students to data structures and how they are used in
algorithms, enabling them to design and implement data structures. The unit
introduces the specification of abstract data types and explores their use in
concrete data structures. Based on this knowledge, students should be able to
develop solutions by specifying, designing and implementing data structures and
algorithms in a variety of programming paradigms for an identified need.
Among the topics included in this unit are abstract data types specification, formal
data notations, data encapsulation, complex data structures, programming
language implementations using handles, pointers, classes and methods, algorithm
types, data structure libraries, algorithm complexity, asymptotic testing and
benchmarking.
On completion of this unit the student should be able to identify program data
requirements, specify abstract data types using a formal notation, translate into
concrete data structures and be able to develop, using a programming paradigm,
different sorting, searching and navigational algorithms that implement complex
data structures and evaluate their effectiveness.
As a result of studying this unit students will develop skills such as communication
literacy, critical thinking, analysis, synthesis, reasoning and interpretation, which
are crucial for gaining employment and developing academic competence.
Learning Outcomes
By the end of the unit students will be able to:
LO1. Examine abstract data types, concrete data structures and algorithms.
LO2. Specify abstract data types and algorithms in a formal notation.
LO3. Implement complex data structures and algorithms.
LO4. Assess the effectiveness of data structures and algorithms.
LO1 Examine abstract data types, concrete data structures and algorithms
Data structures:
Array; set; stack; queue; list; tree; types e.g. active, passive, recursive.
Algorithm types:
Recursive, backtracking, dynamic, divide & conquer, branch & bound, greedy,
randomised, brute force.
Algorithms:
Sort; insertion, quick, merge, heap, bucket, selection; search linear, binary,
binary search tree, recursive e.g. binary tree traversals; find path; travelling
salesman.
Design specification:
Specify ADTs using formal notation e.g. ASN.1; use non-executable program
specification language e.g. SDL, VDM; issues e.g. complexity in software
development; design patterns, parallelism; interfaces; encapsulation,
information hiding, efficiency.
Creation:
Pre-conditions, post-conditions, error-conditions.
Implementation:
Data structures; multidimensional arrays, linked lists, stacks, queues, trees,
hash table, heap, graph Algorithms; sorting, searching, tree traversal, list
traversal, hash functions, string manipulation, scheduling and recursive
algorithms; using handle, pointer, class, methods; using an executable
programming language.
Algorithm effectiveness:
Run time benchmark, compiler/interpreter dependencies, resource usage,
degree of parallelism, time, space, power performance, efficiency of garbage
collection.
Textbooks
Cormen, T. (1990) Introduction to Algorithms. MIT Labs.
Cormen, T. (2002) Instructors Manual: Introduction to Algorithms. MIT Labs.
Heineman, G. (2009) Algorithms in a Nutshell. O’Reilly Publishing.
Larmouth, J. (1999) ASN.1 Complete. Kaufman Publishing.
Leiss, E. (2007) A Programmer’s Companion to Algorithm Analysis. Chapman &
Hall.
Sedgewick, R. (1983) Algorithms. Addison-Wesley.
Wirth, N. (2004) Algorithms and Data Structures. Oberon.
Links
This unit links to the following related units:
Unit 1: Programming
Unit 20: Advanced Programming
Unit 23: Cryptography