CSC211 Lecture 01
CSC211 Lecture 01
Data Structures
Lecture 1
1
Dr. Iftikhar Azim Niaz
B.Sc (Maritime Studies) 1988
Pakistan Marine Academy,
Presidents Gold Medalist
Karachi University
M.Sc (Computer Science) 1994
Quaid-i-Azam University
MBA (Marketing) 1999
Allama Iqbal Open University
Ph.D (Software Engineering) 2005
University of Tsukuba, Japan
PGD (Professional Ethics and Teaching
Methodology) 2010
Riphah International University
2
Dr. Iftikhar Azim Niaz
Deck Officer Feb 1989 Feb 1991
Atlas Shipmanagement Limited, Hong Kong
System Analyst Mar 1994 Mar 1995
Deutsche Telepost Consultants, Islamabad
Deputy Manager Apr 1995 Aug 1995
National Institute of Electronics
Lecturer Sep 1995 Jan 2007
Quaid-i-Azam University
Head of Department 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 ?
4
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
6
Course Details
Course Code: CSC 211
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%
Final . 50%
17
A Nice Quote
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)
19
Five Tips to Success
Work Hard
Try More
exercises and
more practice
20
Five Tips
21
Is the same situation is with you?
yes
No
22
Boss assigns task
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.
26
What did they lack?
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)
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.
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)
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)
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 sub-
tasks (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:
1. Read the quantity of cupcake purchased
2. Read the price per cupcake
3. Total amount to pay = quantity of cupcake x price per cupcake
4. 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?
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?
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
Computer Program
46
Algorithm Representation
Algorithm
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, English-
like language with limited vocabulary
that can be used to design and describe
algorithms.
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 procedure Do_Week
{ {
Wake_up ; Do_Monday ;
Take_A_Shower ;
Do_Tuesday ;
Eat_Breakfast ;
Drive_To_university ; Do_Thursday ;
Attend_ALGO_Lecture ; ...etc...etc...etc...
...etc...etc...etc... }
Drive_From_university ;
...etc...etc...etc...
}
51
Pseudocode
Pseudocode = English + Code
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 - Example
To obtain the desired results, we must save
the original value of x. This is done by
assigning the value of x to a new variable
called Save.
1. Input x, y [Input the values]
2. Save := x [Storing the original x]
3. x := y [Part of the output]
4. y := Save [The original x value]
5. 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.
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.
60
The Sequence control structure
A series of steps or statements that are executed in the
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
begin
statement 1. statement 1
statement 2.
statement 2
statement n. statement n
end
end
61
The Sequence control structure
Problem: calculate a persons age
Begin begin
display age
End Age = current year
birth year
Display age
end
62
The Selection control structure
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.
The keyword used are if and else.
No Yes
Format: Condition?
if (condition)
then-part else- then-
else statement(s) statement(s)
else-part
end_if
63
The Selection control structure
Begin
read age
if (age is greater than 55) Begin
print Pencen
else Read age
end_if
End
64
Pseudocodes: The Selection control structure
Sometimes in certain situation, we may omit the else-part.
if (number is odd number)
print This is an odd number Example 1
end_if
65
Exercise
Draw the flowchart diagram for
Example 1 and Example 2
66
The Repetition control structure
Specifies a block of one or more
statements that are repeatedly executed
until a condition is satisfied.
The keyword used is while.
Format:
yes Loop
while (condition) Condition?
Statement(s)
loop-body
no
end_while
67
Problem: Write a program that reads and displays
the age of 10 people (one after another).
68
Begin Counter initialisation
number of users giving his age = 1
while (number of users giving his age <= 10)
read the age from the user.
print the user age. Loop condition
number of user giving his age + 1
end_while
Updating counter
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..
Begin You can start the
counter with ZERO
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.
number of user giving his age + 1 The loop condition
must less than the
end_while value it requires to
End stop
Begin
users = 0
while (users < 10)
read age
print age. Be
users = users + 1 consistent
end_while
End
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
users = 1
while (users <= 10) Example 3
begin
Read birth year
age = current year birth year
print age
if age > 55 Note that in this
print Pencen example, we are
using all the three
else control structures:
print Kerja lagi sequence, selection
end_if and repetition
users = users + 1
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 user-
requirement
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
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