Indicative Content
This module covers topics of:
Algorithm Analysis (e.g. Time Complexity)
Algorithm Design and Strategies (e.g. Brute Force, Best-first, Breadth-First), and Dynamic Programming
Data structure (e.g. List, Stack, Tree traversal, and Queue)
Sorting (e.g. Merge Sort, Quick Sort, and Selection Sort)
Search algorithms, and Graph
Hash tables, Priority Queues, and Advance Tree structure
Additional Assessment Details
Practical Assessment - Students will be expected to solve a problem algorithmically using the theories and practices covered in the module which will be assessed by a presentation of their findings. As background work students are required to carry out research, practically design and code, and show clear understanding of the whole investigation process in their proposed solution(s) (Learning Outcomes 1 to 3).
Learning Strategies
Theory will be delivered via lectures and supported by practical classes, seminars and discussion groups. In addition, you will be provided with a range of resources for independent study such as case studies, academic papers and industry stories. There will be a mixture of practical and theoretical formative exercises which will help you build your knowledge and confidence as well as preparing you for the summative assessment.
Learning Outcomes
1. Demonstrate an understanding of common data structures, algorithms and derive time and space complexity measures
Knowledge and Understanding, Learning
2. Be able to solve a problem algorithmically, and present logical and coherent written/verbal arguments for choices made in relation to data structures and algorithms
Problem Solving, Reflection, Communication, Application
3. Understand how to code and evaluate data structures and algorithms for efficiency
Knowledge and Understanding,
Resources
JetBrains PyCharm (IDE for Python)
Numpy (Python library)
Pandas (Python library), RapidMiner, Microsoft Azure Portal
Scikit-learn API, or similar API
Datasets from Kaggle, Weka, MIMIC or similar sources
Texts
These are indicative only. Texts are updated on an annual basis and when you start to study this module, you will be referred to an online reading list, currently provided through Keylinks. You are advised not to buy any textbooks for this module without checking the online reading list.
Rocca, L, M. (2021), Algorithms and Data Structures in Action, Manning Publications; 1st edition
Skiena, S. (2020), The Algorithm Design Manual (Texts in Computer Science), Springer; 3rd ed. 2020 edition
Wengrow, J. (2020), A Common-Sense Guide to Data Structures and Algorithms, 2e: Level Up Your Core Programming Skills, The Pragmatic Programmers; 2nd ed. edition
Theobald, A. (2021), Machine Learning for Absolute Beginners: A Plain English Introduction (Third Edition): 1 (Machine Learning with Python for Beginners), Independently published
Geron, A. (2022), Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 3e: Concepts, Tools, and Techniques to Build Intelligent Systems, O'Reilly Media; 3rd edition
Huyen, C. (2022), Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications, O'Reilly Media; 1st edition
Tombs, N. (2022), Reflections of a Robot: Dialogues on Artificial Intelligence, Independently Published
Bramer, M.A. (2016)¿Principles of data mining.¿3rd edn. London: Springer
Engelbrecht, A.P. (2007) Computational intelligence: an introduction. 2nd edn. Hoboken, N.J: John Wiley
Witten, I.H., Frank, E. and Hall, M. (2011)¿Data mining: practical machine learning tools and techniques.¿3rd edn. London; Amsterdam: Morgan Kaufmann
Raschka, S. (2017) Python machine learning: machine learning and deep learning with Python, scikit-learn, and TensorFlow
Web Descriptor
As a student on this module, you will learn theory behind and about fundamentals of data structures and algorithms as these are two of the most important parts in AI required to understand and therefore solve problems algorithmically. Without this knowledge it is impossible to work in the field to any beneficial level, or with any efficiency being shown. The module also teaches the practical side of the discipline through the key principles of algorithms and data structures and how to specifically code for these.