3. Week 1: Introduction to data structures, algorithm ,Pseudo code, Al-Khawarzmi’s Principle
Relation of algorithm with Data Structures Multiplication of numbers Multiplication Problem
with Iterative.
Week 2: Array Data structure ,Multidimensional arrays, Dynamic Arrays, Link List
Week 3: Double Link list , Insertion , Deletion, Insert after, Insert Before
Week 4: More on Asymptotic Analysis Insertion Sort Merge Sort, Selection sort, Bubble Sort
Week 5: Substitution Method Master Theorem Tree Method
Week 6: Select Algorithm (Kth Smallest and Kth Largest Element) Quick Sort Difference From
Merge Sort
4. Week 7: Sorting Lower Bounds and O(n) Sorting Radix Sort Counting Sort
Week 8: Binary Search Tree using Array Binary Search Tree using linked
list
Week 9: AVL Trees RB Tree using Linked List
Week 10: Hashing Hash Functions Hash Tables
Week 11: Stack using Link List, using Arrays
Week 12: Queues using Link List, using Arrays
Week 13: Graph Basics Graphs Representation Graph Types Basic Graphs
Algorithm
6. CLO1 Understand the fundamentals data structures such as lists,
queues, trees, etc.
CLO2 Analyze time and space complexities of data structures and
algorithms
CLO3 Select appropriate algorithms to use in specific applications
7. Data Structure = Data + Structure
“A specialize format to store data in a particular
organization”. Any data structure is designed to enable certain
operations in an efficient manner e.g. Queue is a data structure
that facilitates data items to be stored in a manner that supports
first come first serve order.
Similarly there are many data structures already designed to meet
certain objectives including Array, Stack, Tree, Graph etc.
8. “An algorithm is any well-defined computational procedure that takes
some values, or set of values, as input and produces some value, or set of
values, as output”
Algorithm is basic element of programming
A mathematical entity independent of programming languages,
operating system & compiler
Algorithms provide a scientific way of handling general programming
techniques
Given any input values, an algorithm will definitely terminate after
executing a finite number of steps
9. “A data container whose contents can vary”
Say a variable ‘radius’ is defined as integer using any
programming language in a program then its value can
be changed as the result of assignment within the
lifetime of that variable when that variable is in scope
10. “A data type is a classification of data that tells the compiler or
interpreter how the variables (declared with that data type) will
be used”
Every data type allows a certain type of data values (and
forbids other types) e.g. typically a data type ‘int’ allows
numerical values without decimal points with a certain range
while not allowing string data
All variables defined with same data type will have same
range and permitted data
11. “An abstract data type (ADT) is a set of elements
with a collection of well defined set of operations”
Said operations can take the same ADT instances
as well as other ADT instances as operands
Operation results may not be instances of same
ADT
Java / C++ allows ADTs by means of classes
12. Data Structure = Data + Structure
“A specialize format to store data in a particular
organization”. Any data structure is designed to enable certain
operations in an efficient manner e.g. Queue is a data structure
that facilitates data items to be stored in a manner that supports
first come first serve order.
Similarly there are many data structures already designed to
meet certain objectives including Array, Stack, Tree, Graph etc.
13. “An implementation of an ADT using a
programming language is called a data structure”
Data structure includes data items stored
Data structure also includes implementation of
all operations within the data structure
14. A data structure allows different operations in an
efficient way but it certainly has its cost
Time Vs. Space complexity
Trying to achieve efficiency in one operation may
make other operations less efficient
Generality may not be achieved
While enabling certain operations, simplicity may be
compromised
15. While designing a data structure, following questions
should be asked:
Does this data structure support the required
operations efficiently?
Will it be easier to implement in our desired
programming language?
Will be easier to debug?
What are the possibilities for its usage?
What operands should it support?
16.
17. What is a Static Data structure?
In Static data structure the size of the structure is fixed. The
content of the data structure can be modified but without
changing the memory space allocated to it. Example Array
18. In Dynamic data structure the size of the structure in not
fixed and can be modified during the operations performed
on it. Dynamic data structures are designed to facilitate
change of data structures in the run time. Example: Link List
19. Linear Data Structure:
Data structure where data elements are arranged sequentially
or linearly where each and every element is attached to its
previous and next adjacent is called a linear data structure. In
linear data structure, single level is involved. Therefore, we
can traverse all the elements in single run only. Linear data
structures are easy to implement because computer memory
is arranged in a linear way. Its examples
are array, stack, queue, linked list, etc.
20. Non-linear Data Structure:
Data structures where data
elements are not arranged sequentially or linearly are
called non-linear data structures. In a non-linear
data structure, single level is not involved. Therefore,
we can’t traverse all the elements in single run only.
Non-linear data structures are not easy to implement
in comparison to linear data structure. It utilizes
computer memory efficiently in comparison to a
linear data structure. Its examples
are trees and graphs.
21. Physical Data Structure:
The Array and Link List are the two physical data structures. We can have
more physical data structures by taking the combination of these two data
structures i.e. array and linked list.
Logical Data Structure:
Physical data structures are actually meant for storing the data in the
memory. Then on the stored data or values, we may be performing some
operations like inserting more values or deleting existing values or
searching for the values, and many more operations. Now, the question is,
how you want to utilize those values? How you will be performing
insertion and deletion? What is the discipline that you are going to follow?
That discipline is defined by logical data structures i.e. stack, queues, trees,
graphs, and hash table.
22. Al-Khwarizmi left a golden rule for the world to create science with. The al-Khwarizmi
principle states that all complex problems of science must be and can be solved by means of
the following five simple steps:
1. Break down each problem into a number of elemental or ‘atomic’ steps. An elemental or
atomic step is one, which cannot be simplified any further.
2. Second, arrange all the elements or steps of the problem in an order or sequence, such that
each element can be taken up and solved one at a time, without affecting other parts of the
problem.
3. Next, find a way to solve each of the elements separately. Because each element has been
simplified to the maximum, it is very likely that the solution of an elemental step will itself be
extremely simple or elemental making it available with relative ease.
4. Then proceed to solve each element of the problem, either one at a time or several at a time,
but in the correct order. Thus, when all steps are solved, the original problem itself has also
been solved.
23. Pseudocode is the expressive form of the algorithm or a way to describe
an algorithm.
It is a combination of natural language and high-level programming
practices which represent the fundamental concept behind a general
implementation of a data structure or algorithm.
Pseudocode incorporated the natural language when the details are
insignificant with the standard programming language constructs to
obtain more clarity. However, we can not execute pseudocode on a
computer, but it models the actual programming code along with a
similar level of detail.
24. Pseudocode is also written using some specific words and
characters, which are shown below:
1. To begin the comment double forward slash are used “//“.
2. Matching braces “{ and }” are used to present blocks where a compound
statement (set of simple statements) can be illustrated as a block and
terminated by a semicolon”;“. The body of a procedure constructs a block
as well.
3. All the identifiers start with a letter and the datatype of the variables are
not declared explicitly.
4. An assignment statement is used for the assigning values to the variables.
5. To produce the boolean values (i.e., true and false) the logical operators
and, or and not and the relational operators <, ≤, =, =, ≥ and > are
provided.
6. Input and output are presented by read and write instructions.
7. “if and then” expressions are used to express a conditional statement.
25. An algorithm is a definite, clear sequence-wise procedure to solve a
problem. It involves the high-level language builds which cannot be
understood by a non-technical person. On the other hand, pseudocode is
a more plain and human understandable form of algorithm where
natural language is also combined with the high-level programming
language constructs.
Pseudocode is easy to understand and interpret as compared to an
algorithm.
The algorithm uses high-level constructs meaning the snippet of code
but the pseudocode involves natural language with high-level
programming builds.
Pseudocode is easily constructed and debugged relative to the
algorithm.