# COMP108

## Data Structures and Algorithms

### Aims

- To introduce the notation, terminology, and techniques underpinning the study of algorithms.
- To introduce basic data structures and associated algorithms.
- To introduce standard algorithmic design paradigms and efficient use of data structures employed in the development of efficient algorithmic solutions.

### Syllabus

- Basics of algorithms (6 lectures)
- What is an algorithm, design of pseudo code algorithm, basic notion of asymptotics and worst case analysis of running time

- Basic data structures and associated algorithms (12 lectures)
- Arrays and linked lists
- Stacks and queues
- Trees and graphs
- Hash table

- Algorithmic design techniques and efficient use of data structures (18 lectures)
- Basic top down approach - searching and sorting
- Divide-and-conquer approach - searching and sorting
- Greedy approach - graph algorithms
- Dynamic programming approach

### Learning Outcomes

- Be able to describe the principles of and apply a variety of data structures and their associated algorithms;
- Be able to describe standard algorithms, apply a given pseudo code algorithm in order to solve a given problem, and carry out simple asymptotic analyses of algorithms;
- Be able to describe and apply different algorithm design principles and distinguish the differences between these principles;
- Be able to choose and justify the use of appropriate data structures to enable efficient implementation of algorithms;