This module provides an introduction to data structures and algorithms for computer scientists. The module covers a number of fundamental and advanced data structures, including arrays, linked lists, stacks, queues, trees, hash tables and graphs. These are presented both abstractly, via the notion Abstract Data Types, and concretely in terms of their implementation in programming framework. The data structures are discussed and analysed in terms of efficiency of the basic operations they support and their application to program design problems. Consideration is given to important, fundamental algorithms for searching, organizing, manipulating and sorting data also discovery of algorithms so as to solves Hard and  Intractable Problems.