**Data **(plural of “datum”), refers to qualitative or quantitative attributes of a variable or set of variables. Typically, data are the results of measurements and can be the basis of graphs, images or observations a set of variables.

**Metadata **is a data containing the description of other data. Earlier term for metadata is ancillary data.

**Data Structure: **Data may be organized in many different ways. The logical or mathematical model of a particular organization of data is called data structure.

**Classification: **Data structure can be classified as linear and non-linear.

**Linear data structure:** The data structure is said to be linear, if its element forms a sequence or linear list. Linear data structures organize their data elements in a linear fashion.

**Non-linear data structure: **In non-linear data structures, data elements are not organized in a sequential fashion. A data item in a non-linear data structure could be attached to several other data elements to reflect a special relationship among them and all the data items cannot be traversed in a single run.

Various operations can be performed on data structure. List on some frequently used operations are given bellow:

**Traversing:**sometimes also called as visiting, means accessing the required record so as to process the data.**Searching:**finding the location of record to be processed.**Inserting:**adding a new record to the structure.**Deleting:**removing the record from the structure.**Sorting:**arranging the record in some logical order.**Merging:**combining two defferent sets of records to form a final set of records.

**Abstract data type (ADS): **Abstract data types are a set of data values and associated operations that are precisely independent of any particular implementation. The term abstract signifies that the data type will only set the rule of it’s usage but how it will be used depends on the implementation. For example stacks and queues are called abstract data types. The stack data type defines two abstract methods PUSH and POP.

**The basic properties of an algorithm are:**

**Input: **Each algorithm is supplied with a zero or more external quantities.

**Output**: Each algorithm must produce atleast one quantity.

**Definiteness: **Each instruction must be clear and unambiguous.

**Finiteness: **The algorithm must terminate after a finite number of steps within finite time.

**Effectiveness: **Each instruction must be sufficiently basic and also be feasible.

**Analysis of an algorithm** means, to determine the amount of resources (such as time and storage) necessary to execute it. Most algorithms are designed to work with inputs of arbitrary, length. Usually the efficiency or running time of an algorithm is stated as a function relating the input length to the number of steps (time complexity) or storage locations (space complexity).

**In theoretical** analysis of algorithms it is common to estimate their complexity in the asymptotic sense, i.e. to estimate the complexity function for arbitrarily large input. **Big O **notation, **omega** notation and **theta** notation are used for this. Usually asymptotic estimates are used because differen implementations of the same algorithm may differ in efficiency. However the efficiencies of any two “reasonable” implementations of a given algorithm are related by a constant multiplicative factor called a *hidden constant*.

**Complexity: **There are two types of complexities of an algorithm, time complexity and space complexity.

The *time complexity* of an algorithm is the amount of time the computer requires to execute the algorithm.

The *space complexity* of an algorithm is the amount of memory space the computer requires, completing the execution of the algorithm.