Latest Module Specifications
Current Academic Year 2025 - 2026
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Description The aim of this module is two-fold (1) to develop the student’s theoretical knowledge and practical implementation skills in data structures and algorithms. Students will develop an understanding of a range of abstract data types (arrays, sets, lists, stacks, queues, trees, graphs) and algorithms (searching, sorting, tree and graph traversals, computational methods) and gain practical experience in their implementation using C++. Students will learn how to use advanced OOP language features to achieve generic algorithm implementations of practical value. Students will gain an understanding of selection criteria for different data structures and algorithms, suitable for a given application, and develop a well-founded approach to design and evaluation of algorithms based on computational complexity analysis. (2) Students will integrate their knowledge and skills from across second year topics (circuits, electronics, datacomms, embedded systems, programming and algorithms) to design and integrate a complete electronic/comms/software system (an “AI Bot”) which plays a game of strategy against another similar system in real-time. This will develop problem-reduction and problem-solving ability, from abstract solution concept to concrete implementation and by designing and evaluating solutions to open-ended problems. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Learning Outcomes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
All module information is indicative and subject to change. For further information,students are advised to refer to the University's Marks and Standards and Programme Specific Regulations at: http://www.dcu.ie/registry/examinations/index.shtml |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Indicative Content and Learning Activities
Introduction The place of algorithms in engineering applications. Problem formulation and reduction to machine-solvable form. Computational complexity as a key algorithm evaluation criterion. Exploring and evaluating solution approaches to a non-trivial example problem. Elements of Algorithm Implementation C++ Review. Primitive types, number representation, promotion and casting, computational pitfalls, machine epsilon. Class types, references, memory management, elementary data structures. Generic types and generic algorithm implementation – C++ templates and the Standard Template Library. Abstract Data Types & Data Structures Introduction to ADTs. Sets, Bags, Lists, Stacks, Queues, Graphs, Trees. ADTs versus Data Structures. Sets and Stacks as array-backed data structures. Linked Lists. Stacks and Queues as Linked Lists. Sorting Characterisation of sorting algorithms: integer vs comparison sort, in-place, stability. Pigeonhole sorting. Set comparability, partial and total ordering. Review of simple comparison sorting methods. Efficient sorting methods Quick Sort, Merge Sort and their complexity analysis. Binary Search Trees Lower bound on searching complexity and relation to Binary Search Trees. BST implementation in C++. BST searching, insertion, deletion. BST Computational Complexity. Full tree traversals. Graphs and Graph Traversals Graphs: notation, definitions, and applications. Graph ADT implementation choices. Graph traversal. Depth First Search, spanning trees and DFS recursive implementation in C++. Maze search with DFS. Breadth First Search, Minimum Spanning Trees. BFS implementation with a queue. Prim’s Algorithm (MST of weighted graph) and relation to Dijkstra. Tractable and intractable problems. Travelling Salesman Problem (TSP). Exhaustive search method, TSP complexity. Nearest Neighbour heuristic. Games and Game Trees Strategic-form games vs extensive-form games, game trees and utilities. Nim example. Backwards induction, Minimax algorithm as depth-first-search, game tree construction (tic-tac-toe), game complexity, tree pruning. Project Technical Background Near-field communications. Review of resonant LC circuits, signal demodulation. Data transmission and encoding, communications protocols and state machines. Real-time programming on microcontrollers in C/C++. Managing complex engineering projects - systems engineering overview – requirements analysis, system architecture and component integration, modelling, testing, risk management. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Indicative Reading List Books:
Articles: None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Other Resources
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||