Data Structures, Algorithms and Mathematics

These are the full notes for the Data Structures, Algorithms and Mathematics module.

Introduction

When developing software, it is necessary to use data structures to handle collections of data, and it is also necessary to select the most appropriate data structure for a particular problem. Programming also involves the need to solve real-world problems, and to design algorithms to solve these problems. An algorithm is a well-defined, clearly-specified approach to solve a problem.

This module will cover a range of common data structures, such as linked lists, hash tables, trees, stacks and queues, and explain in detail how they work. You will get the chance to appreciate these data structures by coding them yourself from first principles in the lab sessions.

The module will also cover a selection of existing algorithms, including how to efficiently search for, and sort, data. Via examination of these existing algorithms, you will gain appreciation of how to solve computing problems by designing your own algorithms.

Contents

Please note that contents are subject to change if accessed earlier than the week for which that topic is scheduled.

  1. Intro to Data Structures: Arrays and Lists
  2. Further Data Structures: Linked Lists and Stacks
  3. Intro to Object-Oriented Programming
  4. Stack and Linked List Implementation
  5. Queues
  6. Hash Tables
  7. Introduction to Algorithms: Big O notation, basic sorting and searching
  8. Trees
  9. Futher Sorting Algorithms
  10. Graphs and Path Finding - Dijkstra and A*
  11. Presentations will take place in Week 12 class time