CSC 211
Data Structures
Lecture 1
Dr. Iftikhar Azim Niaz
[email protected]
Dr. Iftikhar Azim Niaz
B.Sc (Maritime Studies) 1988
M.Sc (Computer Science) 1994
Allama Iqbal Open University
Ph.D (Software Engineering) 2005
Quaid-i-Azam University
MBA (Marketing) 1999
Pakistan Marine Academy,
Presidents Gold Medalist
Karachi University
University of Tsukuba, Japan
PGD (Professional Ethics and Teaching
Methodology) 2010
Riphah International University
2
Dr. Iftikhar Azim Niaz
Deck Officer
Sep 1995 Jan 2007
Quaid-i-Azam University
Head of Department
National Institute of Electronics
Lecturer
Deutsche Telepost Consultants, Islamabad
Deputy Manager Apr 1995 Aug 1995
Atlas Shipmanagement Limited, Hong Kong
System Analyst Mar 1994 Mar 1995
Feb 1989 Feb 1991
Jan 2007 Feb 2012
Riphah International University
Assistant Professor Feb 2012 to Date
COMSATS Institute of Information Technology
Islamabad Campus
3
Why?
Why are you
studying Data
Structure and
Computer
Science ?
Are these your Motivations?
Motivations is a feeling of enthusiasm,
interest, or commitment that makes
somebody want to do something, or
something that causes such a feeling
Encarta Dictionary
Because many people take it
Just a random choice, no particular reasons
A required course
I failed CSC211 before;
Want to be taught by a tough instructor
More
5
I believe your REAL motivation
is ...
I take it because I
am interested
Course Details
Course Code:
CSC 211
Course Title:
Data Structures
Credit Hours:
3+1
Course Prerequisites CSC141
Course Objectives:
The course is designed to teach students
structures and schemes, which allow them
to write programs to efficiently manipulate,
store, and retrieve data.
Course Description
In recent years the subject of computer programming
has been recognized as a discipline whose mastery is
fundamental and crucial to the success of many
engineering projects and which is amenable to
scientific treatment and presentation.
It has advanced from a craft to an academic discipline
it is abundantly clear that a systematic and scientific
approach to program construction primarily has a
bearing in the case of large, complex programs which
involve complicated sets of data.
Hence, a methodology of programming is also bound
to include all aspects of data structuring.
8
Course Objectives
To extend and deepen the student's knowledge
and understanding of algorithms and data
structures and the associated design and
analysis techniques
To examine previously studied algorithms and
data structures more rigorously and introduce the
student to "new" algorithms and data structures.
It focuses the student's attention on the design of
program structures that are correct, efficient in
both time and space utilization, and defined in
terms of appropriate abstractions.
9
Course Goals
Upon completion of this course, a successful student
will be able to:
Describe the strengths and limitations of linear data
structures, trees, graphs, and hash tables
Select appropriate data structures for a specied problem
Compare and contrast the basic data structures used in
Computer Science: lists, stacks, queues, trees and graphs
Describe classic sorting techniques
Recognize when and how to use the following data
structures: arrays, linked lists, stacks, queues and binary
trees.
Identify and implement the basic operations for
manipulating each type of data structure
10
Course Goals
Upon completion of this course, a successful
student will be able to:
Perform sequential searching, binary searching and hashing
algorithms.
Apply various sorting algorithms including bubble, insertion,
selection and quick sort.
Understand recursion and be able to give examples of its
use
Use dynamic data structures
Know the standard Abstract Data Types, and their
implementations
Students will be introduced to (and will have a basic
understanding of) issues and techniques for the assessment
of the correctness and efficiency of programs.
11
Course Outline - I
Introduction to data structures
Linear and non-linear data structures
Arrays and pointers
List data structure
Singly linked list
Doubly linked list
Analysis of List data structures
Circular linked list
Stack; Implementation of stack using arrays and
linked list
Applications of a stack
12
Course Outline - II
Infix to postfix conversion
Evaluation of postfix expressions
Queues; Implementation of queues using arrays
and linked list
Circular Queues; Priority Queues;
Trees; Tree traversals; Binary search trees and
implementation
Heaps and Heap sort;
Graphs; Minimum spanning trees;
Hashing
Files
13
Recommended Books
Textbooks:
R. Kruse, C.L. Tondo, B. Leung Data Structures & Program
Design in C, 2nd Edition, Pearson Education Inc. India , 2007
Mark A. Weiss, Data Structures and Algorithm Analysis in C,
2nd Edition, Pearson Education Inc. India, 1997 .
Reference Books:
Debasis Samanta, Classic Data Structures, 2nd Edition,
Prentice Hall India, 2009
ISRD Group, Data Structures Using C, Tata McGraw-Hill
Publishing Company, New Delhi, India, 2006.
14
Recommended Text Books
15
Recommended Text Book
16
Marks Distribution of Course
Assignments .
15%
Quizzes
10%
Sessionals
25%
Final
....
....
. 50%
17
A Nice Quote
Want to get something in life
Always think positive
You will definitely get the thing you want
18
A nice saying
I keep 6 honest serving men.
They taught me all I knew.
Their names are:
WHAT and WHY and WHEN and HOW and WHERE
and WHO.
(R. Kipling)
And believe me,
on the road of learning,
these are your best companions.
19
Five Tips to Success
Work Hard
Try More
exercises and
more practice
Do the Labs and
assignments by
yourself
20
Five Tips
Be patient with the
Machine
If you really need
that, do it quietly
21
Is the same situation is with
you?
yes
No
22
Boss assigns task
To perform certain task?
How u will do?
23
Your Question:
Um? Tell me what to code.
24
So your answer:
I can develop a new algorithm for you.
Great thinkers
will always be needed.
25
Study:
Many experienced programmers were asked to
code up binary search.
80% got it wrong
Good thing is was not for a
nuclear power plant.
26
What did they lack?
Fundamental understanding of the
algorithmic design techniques.
27
Programming is Problem
Solving
Programming is a process of problem solving
Problem solving techniques
Analyze the problem
Outline the problem requirements
Specify what the solution should do
Design steps, called an algorithm, to solve the
problem (the general solution)
Verify that your solution really solves the problem
Algorithm a step-by-step problem-solving
process in which a solution is arrived at in a
finite amount of time
28
Computer Programming
Nicklaus Wirth
Program = Algorithm + Data Structure
Computer programming involves writing software
that allows a machine to perform various tasks
which, by hand, would be tedious or so time
consuming as to be essentially impossible to do.
Machines work incredibly quickly, never get tired,
and are excellent at following orders; however, they
will only perform as well as the instructions
presented to them.
Set of instructions that tell the computer what to do
and how to do?
29
Introduction to Problem
Solving
Programming is a problem solving activity.
When you write a program, you are actually
writing an instruction for the computer to solve
something for you.
Problem solving is the process of transforming
the description of a problem into a solution by
using our knowledge of the problem domain
and by relying on our ability to select and use
appropriate problem-solving strategies,
techniques and tools.
30
Case Study: Yummy Cupcake
Problem: You are required to calculate the
amount to be paid by a customer buying
cupcakes.
31
Software Development Method (SDM)
For programmer, we solve problems
using Software Development Method
(SDM), which is as follows:
1.
2.
3.
4.
5.
6.
Specify the problem requirements.
Analyze the problem.
Design the algorithm to solve the problem.
Implement the algorithm.
Test and verify the completed program.
Documentation
32
1. Requirement Specification
Specifying the problem requirements
requires you to state the problem clearly
and to gain the understanding of what to
be solved and what would be the solution.
When specifying problem requirement, we
ask ourselves the following questions:
What the problem is.
What the solution should provide.
What is needed to solve it.
If there are constraints and special conditions.
33
Yummy Cupcake
Problem: You are required to calculate the amount to be
paid by a customer buying cupcakes.
What the problem is.
What the solution should provide.
What is needed to solve it.
If there are constraints and special conditions.
34
Problem Analysis
Analyzing the problem require us to
identify the following:
Input(s) to the problem, their form and the input
media to be used
Output(s) expected from the problem, their
form and the output media to be used
Special constraints or conditions (if any)
Any formulas or equations to be used
35
Yummy Cupcake
Input?
Quantity of the cupcake purchased (integer)
Price per cupcake (RM, float)
Output?
Total amount to be paid by the customer (RM, float)
Constraint/condition?
Quantity purchased must be more than zero
Price per cupcake must be more than zero (it is not free)
We assume that the price given is the standard price to all
cupcakes
Formula/equation?
Amount to pay = quantity of cupcake x price per cupcake
36
Designing algorithm
Designing algorithm to solve the problem
requires you to develop a list of steps,
arranged in a specific logical order which,
when executed, produces the solution for a
problem.
Using top-down design (also called divide and
conquer):
You first list down the major tasks
For each major task, you further divide it into subtasks (refinement step)
When you write algorithm, write it from the
computers point of view.
37
Designing Algorithm cont..
An algorithm must satisfy these requirements:
It may have an input(s)
It must have an output(s)
It should not be ambiguous (there should not be
different interpretations to it. Every step in algorithm
must be clear as what it is supposed to do)
It must be general (it can be used for different
inputs)
It must be correct and it must solve the problem for
which it is designed
It must execute and terminate in a finite amount of
time
It must be efficient enough so that it can solve the
intended problem using the resource currently
available on the computer
38
Yummy Cupcake
Major Task:
1.
Read the quantity of cupcake purchased
2.
Read the price per cupcake
3.
Calculate total amount to pay
4.
Display the total amount to pay
However, looking at the above algorithm, we can still further refine
step 3, by introducing the formula to calculate the amount to pay.
After refinement:
5.
Read the quantity of cupcake purchased
6.
Read the price per cupcake
7.
Total amount to pay = quantity of cupcake x price per cupcake
8.
Display the total amount to pay
39
Remember, the order of the steps in
algorithm is very important. Consider the
following, will the result be the same?
1.
2.
3.
Display the total amount to
pay
Get the quantity of cupcake
purchased
Total amount to pay = quantity
of cupcake x price per cupcake
40
Control Structure
An algorithm can be represented using
Pseudocode or Flowchart.
In 1966, two researchers, C. Bohn and G.
Jacopini, demonstrated that any algorithm
can be described using only 3 control
structures: sequence, selection and
repetition.
41
Control Structure
Sequence: A series of steps or
statements that are executed in the
order they are written in an algorithm.
Selection: Defines two courses of action
depending on the outcome of a condition.
A condition is an expression that is, when
computed, evaluated to either true or
false.
Repetition: Specifies a block of one or
more statements that are repeatedly
executed until a condition is satisfied.
42
What is an Algorithm?
There are two parts to a computer
program.
There is the process or sequence of
steps which are necessary to
complete the given task and
the translation of this process into a
language which the computer can
understand.
43
Algorithm (Definition)
An algorithm refers to a step-by-step method
for performing some action.
A precisely defined sequence of (computational
steps) that transform a given input into a
desired output.
An algorithm tells us how to perform a task.
The logical steps to solve a problem.
Some examples of algorithms in everyday life
are food preparation, directions for assembling
equipment or instructions for filling out income
tax forms.
44
Criteria for Algorithm
Input: Zero or more quantities are externally
supplied
Output: At least one desired result is produced
Definiteness: Each instruction must be clear
and unambiguous
Finiteness: Algorithm terminates after a finite
number of steps
Effectiveness: Each instruction must be
feasible and very basic
45
From Algorithms to
Programs
Problem
Algorithm: A sequence
of instructions describing
how to do a task
Computer Program
46
Algorithm Representation
Pseudocode
Algorithm
Flow Chart
47
What is Pseudocode?
Traditionally, flowcharts were used to represent the
steps in an algorithm diagrammatically. These were
bulky, difficult to draw and often led to poor
program structure.
Pseudocode is the method of writing down an
algorithm.
Pseudocode is easy to read and write. It represents
the statements of an algorithm in English like
language.
Pseudocode is really structured English. It is
English which has been formalised and abbreviated
to look like very high level computer languages.
48
Pseudocodes
A pseudocode is a semiformal, Englishlike language with limited vocabulary
that can be used to design and describe
algorithms.
Criteria of a good pseudocode:
Easy to understand, precise and clear
Gives the correct solution in all cases
Eventually ends
49
Example of Pseudocode
1. Open freezer door
2. Take out Meal
3. Close freezer door
4. Open microwave door
5. Put Meal on carousel
6. Shut microwave door
7. Set microwave on high for 5 minutes
8. Start microwave
9. Wait 5 minutes
10. Open microwave door
11. Remove Meal
12. Close microwave door
50
Example of Algorithm
procedure Do_Thursday
{
Wake_up ;
Take_A_Shower ;
Eat_Breakfast ;
Drive_To_university ;
Attend_ALGO_Lecture ;
...etc...etc...etc...
Drive_From_university ;
...etc...etc...etc...
}
procedure Do_Week
{
Do_Monday ;
Do_Tuesday ;
Do_Thursday ;
...etc...etc...etc...
}
51
Pseudocode
Pseudocode = English + Code
relaxed syntax that
extended version of the
is easy to read
basic control structures
(sequential, conditional,
iterative)
52
Pseudocode Rules
There is currently no standard pseudocode.
There are however certain conventions:
Statements are written in simple English;
Each instruction is written on a separate line;
Logic-showing Keywords are written in UPPER
CASE
(e.g. IF , THEN, FOR, WHILE )
Each set of instructions is written from top to
bottom with only one entry and one exit;
Groups of statements may be formed into
modules, and that group given a name.
53
Pseudocode
The following conventions are usually used.
The symbol is used to indicate that the
reminder of a line should be treated as a
comment. If more than one statement appears on
a single line, a semicolon will be used to separate
them.
ASSIGNMENT STATEMENTS have the form x
e, which assigns the value of expression e to
variable x. Multiple assignments can be
performed in one statement; for example,
x
y e assigns the value of e to variables x
and y.
54
Pseudocode
Another way do this as follows:
x := e
where x is a variable and e is an expression.
When an assignment statement is executed,
the expression e is evaluated (using the current
values of all variables in the expression), and
then its value is placed in the memory location
corresponding to x (replacing any previous contents
of this location) .
55
Transposing Two Values Example
Find an algorithm that takes two values x and y
as inputs. The input values are, then,
interchanged to obtain the output.
Method: If we try
x := y
y :=x
We would not obtain the desired output. Step 1
correctly changed x but the original value of x
was lost. Step 2 has no effect on the value of y.
To obtain the desired results, we must save the
original value of x.
56
Transposing Two Values To
obtain the desired results, we must save
Example
1.
2.
3.
4.
5.
the original value of x. This is done by
assigning the value of x to a new variable
called Save.
Input x, y
[Input the values]
Save := x [Storing the original x]
x := y
[Part of the output]
y := Save [The original x value]
Output x, y
[Values Transposed]
57
Flowcharts
Flowcharts is a graph used to depict or
show a step by step solution using symbols
which represent a task.
The symbols used consist of geometrical
shapes that are connected by flow lines.
It is an alternative to pseudocoding;
whereas a pseudocode description is
verbal, a flowchart is graphical in nature.
58
Flowchart Symbols
Terminal symbol - indicates the beginning and
end points of an algorithm.
Process symbol - shows an instruction other than
input, output or selection.
Input-output symbol - shows an input or an
output operation.
Disk storage I/O symbol - indicates input
from or output to disk storage.
Printer output symbol - shows hardcopy printer
output.
59
Flowchart Symbols cont
Selection symbol - shows a selection
process for two-way selection.
Off-page connector provides continuation of
a logical path on another page.
On-page connector - provides continuation
of logical path at another point in the same
page.
Flow lines - indicate the logical sequence of
execution steps in the algorithm.
60
The Sequence control
A series of steps or statements that are executed in the
structure
order they are written in an algorithm.
The beginning and end of a block of statements can be
optionally marked with the keywords begin and end.
begin
statement 1.
statement 2.
statement n.
end
begi
n
statement 1
statement 2
statement n
end
61
The Sequence control
structure
Problem:
calculate a persons age
Begin
read birth year
age = current year birth year
display age
End
begi
n
read birth year
Age = current
year birth year
Display age
end
62
The Selection control
Defines two courses of action depending on the
structure
outcome of a condition. A condition is an expression
that is, when computed, evaluated to either true or
false.
The keyword used are if and else.
Format:
if (condition)
then-part
else
else-part
end_if
No
elsestatement(s)
Condition?
Yes
thenstatement(s)
63
The Selection control
Beginstructure
read age
if (age is greater than 55)
print Pencen
else
print Kerja lagi
end_if
End
Begin
read age
if (age > 55)
print Pencen
else
print Kerja lagi
end_if
End
Begin
Read age
YES
age > 55?
NO
print Kerja lagi
print Pencen
End
64
Pseudocodes: The Selection
Sometimes
in certain situation, we may omit the else-part.
control
structure
if (number is odd number)
print This is an odd number
end_if
Example 1
Nested selection structure: basic selection structure that
contains other if/else structure in its then-part or else-part.
if (number is equal to 1)
print One
else if (number is equal to 2)
print Two
else if (number is equal to 3)
print Three
else
print Other
end_if
Example 2
65
Exercise
Draw the flowchart diagram for
Example 1 and Example 2
66
The Repetition control
Specifies a block of one or more
structure
statements that are repeatedly executed
until a condition is satisfied.
The keyword used is while.
Format:
while (condition)
loop-body
end_while
Condition?
yes
Loop
Statement(s)
no
67
Problem: Write a program that reads and displays
the age of 10 people (one after another).
For this problem, we need a way to count how many people
whose age have been processed (read and displayed).
Therefore, we introduce a concept of counter, a variable
used to count the number of people whose age have been
processed by the program.
68
Counter initialisation
Begin
number of users giving his age = 1
while (number of users giving his age <= 10)
read the age from the user.
Loop condition
print the user age.
number of user giving his age + 1
Updating counter
end_while
End
Begin
users = 1
while (users <= 10)
read age
print age.
users = users + 1
end_while
End
69
Begin
users = 1
NO
End
users <= 10?
YES
read age
print age
users =users + 1
70
Subsequently..
You can start the
counter with ZERO
Begin
number of users giving his age = 0
while (number of users giving his age < 10)
read the age from the user.
print the user age.
The loop condition
must less than the
number of user giving his age + 1
value it requires to
end_while
stop
End
Begin
users = 0
while (users < 10)
read age
print age.
users = users + 1
end_while
End
Be
consiste
nt
71
Little extra
Now let us put together everything that you
have learnt so far.
Problem:
Write a program that will calculate and print the
age of 10 persons, given their birth year. If the
age of the person is above 55, then the
program will print Pencen, otherwise, the
program will print Kerja lagi.
72
Begin
Example 3
users = 1
while (users <= 10)
begin
Read birth year
age = current year birth year
Note that in this
print age
example, we are
if age > 55
using all the
print Pencen
three control
else
structures:
print Kerja lagi
sequence,
end_if
selection and
users = users + 1
repetition
end
end_while
End
73
Exercise
Draw the flowchart diagram for
Example 3
74
Implementation
The process of implementing an algorithm by
writing a computer program using a programming
language (for example, using C language)
The output of the program must be the solution
of the intended problem
The program must not do anything that it is not
supposed to do
(Think of those many viruses, buffer overflows, trojan
horses, etc. that we experience almost daily. All these
result from programs doing more than they were
intended to do)
75
Testing and Verification
Program testing is the process of
executing a program to demonstrate its
correctness
Program verification is the process of
ensuring that a program meets userrequirement
After the program is compiled, we must
execute the program and test/verify it with
different inputs before the program can be
released to the public or other users (or to
the instructor of this class)
76
Documentation
Writing description that explain what the
program does.
Can be done in 2 ways:
Writing comments between the line of codes
Creating a separate text file to explain the
program
Important not only for other people to use or
modify your program, but also for you to
understand your own program after a long time
(believe me, you will forget the details of your
own program after some time ...)
77
Documentation cont
Documentation is so important because:
You may return to this program in future to use the
whole of or a part of it again
Other programmer or end user will need some
information about your program for reference or
maintenance
You may someday have to modify the program, or may
discover some errors or weaknesses in your program
Although documentation is listed as the last
stage of software development method, it is
actually an ongoing process which should be
done from the very beginning of the software
development process.
78
Exercise time!!!
79
Volume calculation
Write a pseudocode and a flowchart for a
C program that reads the value of height,
width and length of a box from the user
and prints its volume.
80
Calculating Electricity Bills
The unit for electricity usage is kWh. For
domestic usage, the monthly rate is 21.8
cents/unit for the first 200 unit, 25.8 cents/unit
for the next 800 units and 27.8 cents/unit for
each additional units. Given the amount of
electricity units (in kWh) used by a customer,
calculate the amount of money needs to be
paid by the customer to TNB. A bill statement
needs to be printed out.
Write a pseudocode or a flow chart to solve
the above problem.
81
Sum of 1 to 10
Write a pseudocode or flowchart for a
program that would compute and print the
sum of all integers between 1 and 10.
82
Summary
Course Description, Goals and Contents
Introduced the concept of problem
solving : a process of transforming the
description of a problem into a solution.
A commonly used method SDM which
consists of 6 steps
3 basic control structures : sequence,
selection and repetition structures
Pseudocode and Flow chart
83