DCU Home | Our Courses | Loop | Registry | Library | Search DCU
<< Back to Module List

Module Specifications.

Current Academic Year 2024 - 2025

All Module information is indicative, and this portal is an interim interface pending the full upgrade of Coursebuilder and subsequent integration to the new DCU Student Information System (DCU Key).

As such, this is a point in time view of data which will be refreshed periodically. Some fields/data may not yet be available pending the completion of the full Coursebuilder upgrade and integration project. We will post status updates as they become available. Thank you for your patience and understanding.

Date posted: September 2024

Module Title Algorithms for Engineers
Module Code EE324 (ITS) / EEN1033 (Banner)
Faculty Engineering & Computing School Electronic Engineering
Module Co-ordinatorConor Mcardle
Module Teachers-
NFQ level 8 Credit Rating 5
Pre-requisite Not Available
Co-requisite Not Available
Compatibles Not Available
Incompatibles Not Available
Repeat examination
Description

The aim of this module is 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++. The use of advanced OOP language features will be introduced 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 and run-time measurements. Problem-reduction and problem-solving ability will be developed by working through problems, from abstract solution concept to concrete implementation and by designing and evaluating solutions to open-ended problems.

Learning Outcomes

1. Implement abstract data types including lists, stacks, queues, trees and graphs and implement elementary sorting, searching and traversal and path-finding algorithms
2. Implement solution methods using iterative or recursive approaches
3. Translate abstract solution concepts to concrete programming language implementations
4. Implement and evaluate appropriate data structures and algorithms for given application problems
5. Analyse and measure algorithm time complexity
6. Apply object-oriented programming principles to develop reusable implementations of abstract data types and general-purpose algorithms



Workload Full-time hours per semester
Type Hours Description
Lecture24Theory and worked application examples
Laboratory12Data structures and algorithms programming labs and class tests
Directed learning16Project assignment
Independent Study73Reviewing lecture material
Total Workload: 125

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
Importance of algorithms to 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 – convex hulls and robot path-finding.

C++ Elements of Algorithm Implementation
C++ Review. Primitive types, number representation, promotion and casting, computational pitfalls, and 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 and Searching
Characterisation of sorting algorithms: integer vs comparison sort, in-place, stability. Pigeonhole sorting. Comparison sorting: set comparability, partial and total ordering. Selection sort, Insertion sort and their computational complexities. Quick Sort and its complexity. Binary Search and heuristic searches.

Binary Search Trees
Lower bound on searching complexity and relation to Binary Search Trees. BST implementation in Java. BST searching, insertion, deletion. BST Computational Complexity. Full tree traversals.

Graphs
Graphs: notation, definitions and applications. Graph ADT implementation choices. Graph traversal. Depth First Search, spanning trees and DFS recursive implementation in Java. 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.

NP-Hardness, TSP and Heuristic Methods
Tractable and intractable problems. Travelling Salesman Problem (TSP). Exhaustive search method, TSP complexity. Nearest Neighbour heuristic. 2-opt tour improvement method and its complexity.

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. Nash Equilibrium.

Assessment Breakdown
Continuous Assessment40% Examination Weight60%
Course Work Breakdown
TypeDescription% of totalAssessment Date
AssignmentData structures and algorithms lab report3%Week 2
In Class TestData structures and algorithms test6%Week 4
AssignmentData structures and algorithms lab report3%Week 5
In Class TestData structures and algorithms test6%Week 7
AssignmentData structures and algorithms lab report3%Week 8
In Class TestData structures and algorithms test6%Week 10
ProjectSelection, design, implementation, testing and performance evaluation of algorithm solution to an open problem13%Week 11
Reassessment Requirement Type
Resit arrangements are explained by the following categories:
Resit category 1: A resit is available for both* components of the module.
Resit category 2: No resit is available for a 100% continuous assessment module.
Resit category 3: No resit is available for the continuous assessment component where there is a continuous assessment and examination element.
* ‘Both’ is used in the context of the module having a Continuous Assessment/Examination split; where the module is 100% continuous assessment, there will also be a resit of the assessment
This module is category 1
Indicative Reading List

  • Robert Sedgewick: 0, Algorithms in C++, 4th Edition, Parts 1-4, 9780201350883
  • Thomas H. Cormen, et al.: 2009, Introduction to Algorithms, MIT Press, 9780262033848
Other Resources

None

<< Back to Module List