# Module Support and Assessment

- Assessed Via:
	- Written Exam (100%)

# Specific Objective

- Data Structures - How data organised.
- Algorithms - Unambiguous sequence of events / steps to compute.

# Why Data #Structures Are Useful

- DSA demonstrates:
	- Problem-solving ability
	- Analytical Skills
		- Which algo, data type would be best to efficiently solve problems
	- Fundamentals of Software Dev
		- Remain constant no matter the technology or language
- Programs solve problems, and process information
- Information needs to be organised in certain ways, and must be correct and efficient.
- We organise data to attain faster access to data, using both the correct data structure, and correct algorithm.
- Examples of data types / structures on the module:
	- Arrays
	- Linked Lists
	- Stacks
	- Queues
	- Trees
	- Hash Tables
	- Graphs

## Examples

- ![](Pasted%20image%2020240918092145.png)
- ![](Pasted%20image%2020240918092203.png)
- ![](Pasted%20image%2020240918092221.png)
- N is linear, log2(n) is logarithmic.

# Why #Algorithms Are Useful

- Important for all branches of CS
- Plays a role in modern innovation
	- ex. Search Engines (Page Rank)
- Give estimates for running time (using Big O notation)
- Help to decide hardware requirements

# Module Objectives

- Necessary to understand most important data structures used when designing / implementing software
	- Allows discussion and comparison of data structures and assessment of usage circumstances.
- Concept of algorithms is fundamental
	- Variety of possible approaches can lead to competing algorithms
	- Each algorithm is likely to have different resource requirements, time usage or use case.
- Analyse requirements and provide understanding for usage of choices.

# Module Aims

- Introduce important data structures
- Understand abstract data types
- Show variety of implementations of ADTs
- Introduce detailed appreciation of data structures, including:
	- Linear Lists
	- Stacks
	- Queues
	- Trees
	- Graphs
- Appreciate relationship between ADTs and Data Structures
- Develop Skills required to express methods for solving problems precisely
- Analyse complexity of implementation
- Develop deeper understanding of recursion

## End Goals

- Describe and contrast algorithmic strategy
- Demonstrate understanding of recursion
- Utilise standard notation for computational complexity
- Demonstrate precise and formal understanding of resource requirements of algorithms, and their inner workings.

# Mathematical Requirements

- Basic Algebra
- Indices
- Log
- Graphs
- Limits and Asymptotic Notations (Big O)
- Summations of series, including arithmetic and geometric series
- Recurrence relations
