reliable information on all the relevant topicsbut you hopefully shouldn' need reminding that not everything you read on the internet is necessarily true it is also worth pointing out that there are often many different equally-good ways to solve the same taskdifferent equally-sensible names used for the same thingand different equally-valid conventions used by different peopleso don' expect all the sources of information you find to be an exact match with each other or with what you find in these notes overview these notes will cover the principal fundamental data structures and algorithms used in computer scienceand bring together broad range of topics covered elsewhere into coherent framework data structures will be formulated to represent various types of information in such way that it can be conveniently and efficiently manipulated by the algorithms we develop throughoutthe recurring practical issues of algorithm specificationverification and performance analysis will be discussed we shall begin by looking at some widely used basic data structures (namely arrayslinked listsstacks and queues)and the advantages and disadvantages of the associated abstract data types then we consider the ubiquitous problem of searchingand how that leads on to the general ideas of computational efficiency and complexity that will leave us with the necessary tools to study three particularly important data structurestrees (in particularbinary search trees and heap trees)hash tablesand graphs we shall learn how to develop and analyse increasingly efficient algorithms for manipulating and performing useful operations on those structuresand look in detail at developing efficient processes for data storingsortingsearching and analysis the idea is that once the basic ideas and examples covered in these notes are understooddealing with more complex problems in the future should be straightforward