Data Structures and Algorithms
Run by School of Computer Science and Electronic Engineering
10 Credits or 5 ECTS Credits
Organiser: Dr Ik Soo Lim
Overall aims and purpose
To allow students to use, select, implement and analyse a range of common abstract data types and algorithms.
• Data Types, Abstract Data Types, Theory, implementations and uses of stacks, queues, lists, trees, graphs, hash tables, binary search trees. Constraints and Trade offs (time vs. space).
• Criteria for algorithms. Recursive algorithms: Towers of Hanoi. Data processing algorithms: sorting and searching. Graph theoretic algorithms: traversal, shortest path.
• Efficiency measures for time and space: rates of growth; asymptotic behaviour, big-O notation. Algorithm complexity classes (P, NP, NP-complete).
• New versions of algorithms, moral problems and dilemmas of updating an algorithm, moral responsibility of correctness. And understanding how to result ethical problems of algorithm and data structure development.
Learning outcomes mapped to assessment criteria
Show an understanding of a selection of common Abstract Data Types (ADTs) by appropriate selection and manipulation.
|Can state basic definitions of DT and ADT. Can describe the structures of the given ADTs and their basic uses. Knows the difference between static and dynamic implementations.||Can select an appropriate ADT and implementation for a given problem taking into account the trade offs involved. Can implement the given data structures.||Can design and implement new data structures based on the given ones.|
Show an understanding of the design and implementation of a selection of common algorithms.
|Can describe the basic operation of the given algorithms.||Can select and implement an appropriate algorithm for a problem.||Can design and implement new algorithms based on the given ones.|
Use complexity analysis to assist in the selection and design of algorithms.
|Can rank big-O complexity classes correctly. Can state the complexity of basic algorithms. Can select algorithms appropriately.||Can calculate complexity for simple cases. Understands the nature of NP-complete and computationally impossible problems.||Can calculate complexity for complex cases (divide and conquer).|
Understand the ethical issues of algorithms and the responsibility of the developer.
|Explain areas where moral dilemmas may occur, such as updating an underlying data structure or locating an error in a current algorithm.||Able to discuss various issues and provide realistic solutions and well formed argument.||Able to discuss various ethical issues, where they may occur.|
A programming assignment.
A programming assignment.
Teaching and Learning Strategy
Interactions via questions-and-answers.
ASSESSED assignments, including tutorial questions, problems, essays etc.
- Numeracy - Proficiency in using numbers at appropriate levels of accuracy
- Computer Literacy - Proficiency in using a varied range of computer software
- Self-Management - Able to work unsupervised in an efficient, punctual and structured manner. To examine the outcomes of tasks and events, and judge levels of quality and importance
- Exploring - Able to investigate, research and consider alternatives
- Critical analysis & Problem Solving - Able to deconstruct and analyse problems or complex situations. To find solutions to problems through analyses and exploration of all possibilities using appropriate methods, rescources and creativity.
- Presentation - Able to clearly present information and explanations to an audience. Through the written or oral mode of communication accurately and concisely.
- Argument - Able to put forward, debate and justify an opinion or a course of action, with an individual or in a wider group setting
- Self-awareness & Reflectivity - Having an awareness of your own strengths, weaknesses, aims and objectives. Able to regularly review, evaluate and reflect upon the performance of yourself and others
Resource implications for students
Hard copies of the main course text are available at the library. On-line access to the highly recommended book is available.
Talis Reading listhttp://readinglists.bangor.ac.uk/modules/icp-2027.html
Main Course text: Java collections: an introduction to abstract data types, data structures, and algorithms - David A. Watt, Deryck F. Brown c2001
Highly Recommended: Introduction to algorithms - Thomas H. Cormen 2010, c2009
Recommended: Probability and Computing, by Michael Mitzenmacher and Eli Upfal, Cambridge University Press.
Pre- and Co-requisite Modules
Courses including this module
Compulsory in courses:
- H612: BEng Computer Systs Eng (3 yrs) year 2 (BENG/CSE)
- H61B: BEng Computer Sys Engineering (4yr with Incorp Foundation) year 2 (BENG/CSE1)
- G400: BSC Computer Science year 2 (BSC/CS)
- G40B: BSc Computer Science (4 year with Incorporated Foundation) year 2 (BSC/CS1)
- H64B: BSc Computer Sys Engineering (4yr with Incorp Foundation) year 2 (BSC/CSE1)
- H603: BSc Computer Systems Engineering year 2 (BSC/CSENG)
- GN41: BSC Computer Science for Business year 2 (BSC/CSFB)
- GN4B: BSc Computer Science for Business (4 year with Incorp Found) year 2 (BSC/CSFB1)
- I102: BSc Computer Science (with International Experience) year 2 (BSC/CSIE)
- GW49: BSC Creative Technologies year 2 (BSC/CT)
- H661: MEng Control and Instrumentation Engineering year 2 (MENG/CIE)
- H660: MEng Critical Safety Engineering year 2 (MENG/CRSEN)
- H617: MEng Computer Systs Eng (4 yrs) year 2 (MENG/CSE)
- H619: MEng Computer Systems Engineering (with International Exper) year 2 (MENG/CSEIE)