Core Module Information
Module title: Algorithms and Data Structures

SCQF level: 08:
SCQF credit value: 20.00
ECTS credit value: 10

Module code: SET08122
Module leader: Christos Chrysoulas
School School of Computing
Subject area group: Software Engineering

Module Code: Either SET07109 or SET07110 & CSN07101.
Examples of Equivalent Learning: Any introductory programming module (ideally with a C syntax oriented language) and basic knowledge of computer organisation & architecture.

Description of module content:

Whilst we can write software without paying any real attention to the way we structure our data, or the algorithms that we use to manipulate that data, our programs are likely to perform quite poorly. For example, they might run slowly, or use a lot of memory, or the problem we are trying to solve might not actually have a solution, or else it could take 10,000 years or longer to calculate a solution. In this module we will study a variety of data structures & algorithms, as well as some related topics such as how to reason about when a data structure is appropriate to use, or whether an algorithm is better (or worse) than another in a give situation.
We’ll cover fundamental concepts of data structures & algorithms starting with linear data structures such as Arrays, Lists, Queues, & Stacks then looking at associative data structures such as Sets, Dictionaries, Hash Tables, Graphs, & Trees. Our study of these data structures will cover their capabilities, performance characteristics, and applications. Once we are able to store data we’ll consider how to perform operations on it using algorithms. We’ll study iterative and recursive algorithms and their applications to searching and sorting data, as well as specific applications such as the cryptographic uses of Hashing. The space and time complexity of algorithms will be studied from a practical perspective enabling us to approximate how a given algorithm will perform then communicate and compare that approximation using Big “O Notation.

Learning Outcomes for module:

Upon completion of this module you will be able to
LO1: Design, develop and evaluate data structures and algorithms
LO2: Demonstrate a working knowledge of a relevant data structures API
LO3: Evaluate and discuss the capabilities of data structures to applicable problems
LO4: Examine and evaluate the algorithms that work on various data structures
LO5: Evaluate the performance of an algorithm based on the size of a problem input

Full Details of Teaching and Assessment
2020/1, Trimester 2, Face-to-Face,
Occurrence: 001
Primary mode of delivery: Face-to-Face
Location of delivery: MERCHISTON
Member of staff responsible for delivering module: Christos Chrysoulas
Module Organiser:

Learning, Teaching and Assessment (LTA) Approach:
The module is presented via a combination of lectures (covering LOs 1- 5) and supporting practical sessions (also covering LOs 1-5). The practical sessions are “hands-on” which is reflected throughout the teaching of the module. The lectures will therefore cover both the theory and implementation of concepts related to data structures and algorithms. Students are expected to do further reading, significant amounts of directed study and practical work, and substantial independent learning using the detailed study guide and web-based resources in relation to all learning outcomes.

Formative Assessment:
Students will receive formative feedback on their progress throughout the module via the practical sessions and tutorial sessions. To support formative feedback, the Software Engineering subject group utilise a lab-based teaching approach across their provision. During these lab sessions, staff will discuss and evaluate student progress and provide feedback on how well they are progressing with their work. All modules in the subject group also require students to demonstrate their coursework on submission to provide further formative feedback on how the work could be improved. This module provides formative feedback during the lab assessment. Students will receive feedback via face-to-face demo sessions and electronically at the end of the module.

Summative Assessment:
The module has two assessments; a project and a centrally timetabled exam.
The project requires the students to undertake the development of a significant piece of software in which they pay careful attention to their choice of data structures & algorithms. The students will have to provide a specification for their application that incorporates key concepts covered in the module. The project forms a formative assessment built up during the module, covering aspects of all learning outcomes. Students will receive feedback via face-to-face demo sessions and electronically at the end of the module.
The second assessment is a formal exam which will assess the students’ understanding of the concepts and concerns when undertaking systems programming. The exam is a summative assessment covering LOs 3-5.

Student Activity (Notional Equivalent Study Hours (NESH))
Mode of activityLearning & Teaching ActivityNESH (Study Hours)
Face To Face Lecture 24
Face To Face Practical classes and workshops 24
Independent Learning Guided independent study 150
Face To Face Centrally Time Tabled Examination 2
Total Study Hours200
Expected Total Study Hours for Module200

Type of Assessment Weighting % LOs covered Week due Length in Hours/Words
Project - Practical 40 1,2,3,4,5 10 HOURS= 40, WORDS= 0
Centrally Time Tabled Examination 60 2,3,4,5 14/15 HOURS= 2, WORDS= 0
Component 1 subtotal: 40
Component 2 subtotal: 60
Module subtotal: 100

Indicative References and Reading List - URL:
Contact your module leader