Data Structures - Data Structures - : Lecture 1: Introduction | PDF | Time Complexity | C++
0% found this document useful (0 votes)
53 views

Data Structures - Data Structures - : Lecture 1: Introduction

introduction to Data Strucutes Lecture notes introduction to Data Strucutes Lecture notes introduction to Data Strucutes Lecture notes

Uploaded by

Mohamed Taha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views

Data Structures - Data Structures - : Lecture 1: Introduction

introduction to Data Strucutes Lecture notes introduction to Data Strucutes Lecture notes introduction to Data Strucutes Lecture notes

Uploaded by

Mohamed Taha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

CSC212

Data Structures
- Section AB
Lecture 1: Introduction
Instructor: Hao Tang
Tao Wang
Department of Computer Science
City College of New York
1

Course Web Page


You can find all the information at

ccvcl.org/~tang/cs212.html
-Come back frequently for updates of lecture schedule,
programming assignments and exam schedule
- Reading assignments & programming assignments

Outline of this lecture

Course Objectives and Schedule

WHAT (Topics)
WHY (Importance)
WHERE (Goals)
HOW (Information and Schedule)

The Phase of Software Development

Basic design strategy


Pre-conditions and post-conditions
Running time analysis
3

Topics (WHAT)

Data Structures

specification, design, implementation and use of

OOP and C++

C++ classes, container classes , Big Three

Standard Template Library (STL)

basic data types (arrays, lists, queues, stacks, trees)

templates, iterators
ADTs in our DS course cut-down version of STL

Recursion, Searching and Sorting Algorithms

important techniques in many applications


4

Importance (WHY)

Data Structures (how to organize data) and


Algorithms (how to manipulate data) are the cores of
todays computer programming

The behavior of Abstract Data Types (ADTs) in our


Date Structures course is a cut-down version of
Standard Template Library (STL) in C++

Lay a foundation for other aspects of real


programming OOP, Recursion, Sorting, Searching
5

Goals (WHERE)
understand the data types inside out

Implement these data structures as classes in C++


Determine which structures are appropriate in
various situations
Confidently learn new structures beyond what is
presented in this class
also learn part of the OOP and software
development methodology

Course Information (HOW)

Objectives
Data Structures, with C++ and Software Engineering

Textbook and References


Texbook: Data Structures and Other Objects Using C++ , Third Edition by Michael Main

Prerequisites

CSc102 C++ (Intro to Computing), CSc 104 (Discrete Math Structure I)

Assignments and Grading

and Walter Savitch


Reference: C++ How to Program by Dietel & Dietel, 3rd Ed., Prentice Hall 2001

6-7 programming assignments roughly per weeks (30%)


3 in-class written exams (60%), several in-class quizzes (10%)

Computing Facilities

PCs: Microsoft Visual C++ ; Unix / Linux : g++; MinGW; codeblocks(free)


also publicly accessible at Computer Science labs
7

Tentative Schedule (HOW)


(28 classes = 22 lectures + 3 reviews + 3 exams + 6-7 assignments)

Lecture 1.
The Phase of Software Development (Ch 1)
Lectures 2-3. ADT and C++ Classes (Ch 2)
Lecture 4-5.
Container Classes (Ch 3)
Lectures 6-8. Pointers and Dynamic Arrays (Ch 4)
Reviews and the 1st exam (Ch. 1-4)
Lectures 9-10. Linked Lists (Ch. 5)
Lectures 11. 11a. Template and STL (Ch 6)
Lecture 12.
Stacks (Ch 7) and Queues (Ch 8)
Lectures 13-14. Recursion (Ch 9)
Reviews and the 2nd exam (Ch. 5-9)
Lectures 15-18. Trees (Ch 10, Ch 11)
Lectures 19-20. Searching and Hashing (Ch 12)
Lectures 21- 22. Sorting (Ch 13)
Lecture 23. Graphs (Ch 15)
Reviews and the 3rd exam (mainly Ch. 10-13, ~July 23 or 24)
8

Tentative Schedule (cont.)


Exams
Whole

class

Quizzes
5-15

minutes in class

Talks

(not directly related to DS, but help


you to broaden your vision)
Guests

from Vision & Robotics lab and outside

CCNY
Topics including Machine Learning, Computer
Vision, HCI, Robotics and Visualization.

Outline

Course Objectives and Schedule

Information
Topics
Schedule

The Phase of Software Development

Basic design strategy


Pre-conditions and post-conditions
Running time analysis
10

Phase of Software Development

Basic Design Strategy four steps (Reading: Ch.1 )


Specify the problem - Input/Output (I/O)
Design data structures and algorithms (pseudo code)
Implement in a language such as C++
Test and debug the program (Reading Ch 1.3)

Design Technique

Decomposing the problem

Two Important Issues (along with design and


Implement)

Pre-Conditions and Post-Conditions


Running Time Analysis
11

Preconditions and Postconditions

An important topic: preconditions and


postconditions.

They are a method of specifying what a


function accomplishes.

Precondition and Postcondition Presentation copyright 1997, Addison Wesley Longman


For use with Data Structures and Other Objects Using C++ by Michael Main and Walter Savitch.

12

Preconditions and Postconditions


Frequently a programmer must communicate
precisely what a function accomplishes,
without any indication of how the function
does its work.

Can you think of a situation


where this would occur ?
13

Example

You are the head of a


programming team
and you want one of
your programmers to
write a function for
part of a project.

HERE ARE
THE REQUIREMENTS
FOR A FUNCTION THAT I
WANT YOU TO
WRITE.

I DON'T CARE
WHAT METHOD THE
FUNCTION USES,
AS LONG AS THESE
REQUIREMENTS
ARE MET.

14

What are Preconditions and


Postconditions?
One

way to specify such requirements is


with a pair of statements about the function.
The precondition statement indicates what
must be true before the function is called.
The postcondition statement indicates what
will be true when the function finishes its
work.

15

Example
void write_sqrt( double x )
// Precondition: x >= 0.
// Postcondition: The square root of x has
// been written to the standard output.

...
16

Example
void write_sqrt( double x)
// Precondition: x >= 0.
// Postcondition: The square root of x has
// been written to the standard output.

The precondition and


postcondition appear as
comments in your program.
They are usually placed after the
functions parameter list.

...

17

Example
void write_sqrt( double x)
// Precondition: x >= 0.
// Postcondition: The square root of x has
// been written to the standard output.

In this example, the precondition


requires that
x >= 0
be true whenever the function is
called.

...
}

18

Example
Which of these function calls
meet the precondition ?
write_sqrt( -10 );
write_sqrt( 0 );
write_sqrt( 5.6 );

19

Example
Which of these function calls
meet the precondition ?
write_sqrt( -10 );
write_sqrt( 0 );
write_sqrt( 5.6 );
The second and third calls are fine, since
the argument is greater than or equal to zero.

20

Example
Which of these function calls
meet the precondition ?
write_sqrt( -10 );
write_sqrt( 0 );
write_sqrt( 5.6 );
But the first call violates the precondition,
since the argument is less than zero.

21

Example
void write_sqrt( double x)
// Precondition: x >= 0.
// Postcondition: The square root of x has
// been written to the standard output.

The postcondition always indicates


what work the function has
accomplished. In this case, when
the function returns the square root
of x has been written.

...

22

Another Example
bool is_vowel( char letter )
// Precondition: letter is an uppercase or
// lowercase letter (in the range 'A' ... 'Z' or 'a' ... 'z') .
// Postcondition: The value returned by the
// function is true if letter is a vowel;
// otherwise the value returned by the function is
// false.

...
23

Another Example
What values will be returned
by these function calls ?
is_vowel( 'A' );
is_vowel(' Z' );
is_vowel( '?' );

24

Another Example
What values will be returned
by these function calls ?
is_vowel( 'A' );
is_vowel(' Z' );
is_vowel( '?' );

true

false

Nobody knows, because the


precondition has been violated.
25

Consequence of Violation
Who is responsible for the crash ?

write_sqrt(-10.0);
is_vowel( '?' );

Bring up Slide Notes!!!

Violating the precondition


might even crash the computer.
26

Always make sure the


precondition is valid . . .

The programmer who


calls the function is
responsible for
ensuring that the
precondition is valid
when the function is
called.
AT THIS POINT, MY
PROGRAM CALLS YOUR
FUNCTION, AND I MAKE
SURE THAT THE
PRECONDITION IS
VALID.
27

. . . so the postcondition becomes


true at the functions end.

The programmer who


writes the function counts
on the precondition being
valid, and ensures that the
postcondition becomes
true at the functions end.

THEN MY FUNCTION
WILL EXECUTE, AND WHEN
IT IS DONE, THE
POSTCONDITION WILL BE
TRUE.
I GUARANTEE IT.

28

A Quiz
The famous skyline was
dark on Aug 14th, 2003.

Suppose that you call a


function, and you neglect to
make sure that the
precondition is valid.
Who is responsible if this
inadvertently causes a 1-day
long blackout in NYC or
other disaster?

You
The programmer who
wrote that Power
Supply function
Mayor Bloomberg

Outside of Penn Station

29

A Quiz
Suppose that you call a
function, and you neglect to
make sure that the
precondition is valid.
Who is responsible if this
inadvertently causes a 1-day
long blackout in NYC or
other disaster?

You
The programmer who
calls a function is
responsible for
ensuring that the
precondition is valid.

Outside of Penn Station

30

On the other hand, careful


programmers also follow these rules:
When

you write a function, you should


make every effort to detect when a
precondition has been violated.
If you detect that a precondition has been
violated, then print an error message and
halt the program.

31

On the other hand, careful


programmers also follow these rules:
When

you write a function, you should


make every effort to detect when a
precondition has been violated.
If you detect that a precondition has been
violated, then print an error message and
halt the program...
...rather than causing
a chaos.

The famous skyline was


dark on Aug 14th, 2003.
32

Example
void write_sqrt( double x)
// Precondition: x >= 0.
// Postcondition: The square root of x has
// been written to the standard output.
{
assert(x >= 0);

...

The assert function


(described in Section 1.1) is
useful for detecting violations
of a precondition.
33

Advantages of Using Pre- and Post-conditions


Concisely

describes the behavior of a

function...
... without cluttering up your thinking with
details of how the function works.
At a later point, you may reimplement the
function in a new way ...
... but programs (which only depend on the
precondition/postcondition) will still work
with no changes.
34

Break

35

Summary of pre- and post-conditions


Precondition
The programmer who calls
a function ensures that the
precondition is valid.
The programmer who
writes a function can bank
on the precondition being
true when the function
begins execution.

Postcondition
The programmer
who writes a
function ensures
that the
postcondition is
true when the
function finishes
executing.

36

Phase of Software Development

Basic Design Strategy four steps (Reading: Ch.1 )


Specify Input/Output (I/O)
Design data structures and algorithms
Implement in a language such as C++
Test and debug the program (Reading Ch 1.3)

Design Technique

Decomposing the problem

Two Important Issues (along with design and


Implement)

Pre-Conditions and Post-Conditions


Running Time Analysis
37

Running Time Analysis Big O


Time

Analysis

Fast enough?
How much longer if input gets larger?
Which among several is the fastest?

38

Example : Stair Counting Problem

How many steps ?

1789 (Birnbaum)
1671 (Joseph Harriss)
1652 (others)
1665 (Official Eiffel Tower Website)

Find

it out yourself !
Eiffel Tower

39

Example : Stair Counting Problem

Find it out yourself !


Method

1: Walk down and keep

a tally
Each time a step down, make a mark
Method

2 : Walk down, but let


Judy keep the tally

There
II
y a are

2689
2689
2689
steps in
marches
this
dan
cet

stairway
escalier
_______
_______
______
!
vraiment!
(really!)

Down+1, hat, back, Judy make a mark


Method

3: Jervis to the rescue

One mark per digit


Eiffel Tower

40

Example : Stair Counting Problem

How to measure the time?

Just measure the actual time

varies from person to person


depends on many factors

Count

certain operations

each time walk up/down, 1


operation
each time mark a symbol, 1
operation

Eiffel Tower

41

Example : Stair Counting Problem

Find it out yourself !


Method

1: Walk down and keep a tally

2689 (down) + 2689 (up) + 2689 (marks)


= 8067
Method

2 : Walk down, let Judy keep tally

Down: 3,616,705 = 1+2++2689


Up:

3,616,705 = 1+2++2689

Marks:
Method

7,236,099 !

2,689 = 1+1++1

3: Jervis to the rescue

only 4 marks !

Eiffel Tower42

Example : Stair Counting Problem


Size

of the Input : n

Method

1: Walk down and keep a tally

3n
Method

2 : Walk down, let Judy keep tally

n+2(1+2++n) = n+(n+1)n = n2+2n

Trick: Compute twice the amount

and then divided by two

Method

3: Jervis to the rescue

The number of digits in n = [log10 n]+1

Eiffel Tower43

Example : Stair Counting Problem


Big-O

Notation the order of the algorithm

Use

the largest term in a formula


Ignore the multiplicative constant
Method

1: Linear time

3n => O(n)
Method

2 : Quadratic time

n2+2n => O(n2)


Method

3: Logarithmic time

[log10 n]+1 => O(log n)


Eiffel Tower44

A Quiz
Number of operations

Big-O notation

n2+5n

O(n2)

100n+n2

O(n2)

(n+7)(n-2)

O(n2)

n+100

O(n)

number of digits in 2n

O(log n)

45

Big-O Notation
The

order of an algorithm generally is more


important than the speed of the processor

Input size: n O(log n)

O (n)

O (n2)

# of stairs: n [log10n]+1

3n

n2+2n

10

30

120

100

300

10,200

1000

3000

1,002,000
46

Time Analysis of C++ Functions

Example- Quiz ( 5 minutes)

Printout all item in an integer array of size N


for (i=0; i< N; i++ )
{
val = a[i];
cout << val;
}

2 C++
operations or
more?

Frequent linear pattern

A loop that does a fixed amount of operations N times


requires O(N) time
47

Time Analysis of C++ Functions

Another example
Printout char one by one in a string of length N
for (i=0; i< strlen(str); i++ )
{
c = str[i];
cout << c;
}

2
O(N )!

What is a single operation?


If the function calls do complex things, then count the
operation carried out there
Put a function call outside the loop if you can!

48

Time Analysis of C++ Functions

Another example

Printout char one by one in a string of length N

N = strlen(str);
for (i=0; i<N; i++ )
{
c = str[i];
cout << c;
}

O(N)!

What is a single operation?


If the function calls do complex things, then count the
operation carried out there
Put a function call outside the loop if you can!

49

Time Analysis of C++ Functions

Worst case, average case and best case

search a number x in an integer array a of size N

for (i=0; (i< N) && (a[i] != x); i++ );


if (i < N) cout << Number << x << is at location << i << endl;
else cout << Not Found! << endl;

Can you provide an exact number of operations?


Best case: 1+2+1
Worst case: 1+3N+1
Average case: 1+3N/2+1

50

Testing and Debugging

Test: run a program and observe its behavior

Choosing Test Data : two techniques

input -> expected output?


how long ?
software engineering issues
boundary values
fully exercising code (tool: profiler)

Debugging find the bug after an error is found

rule: never change if you are not sure whats the error
tool: debugger
51

Summary

Often ask yourselves FOUR questions

WHAT, WHY, WHERE & HOW

Topics DSs, C++, STL, basic algorithms


Data Structure experts
Schedule 21 lectures, 7 assignments, 3 exams
some credits (10) for attending the class
Information website

Remember and apply two things (Ch 1)

Basic design strategy


Pre-conditions and post-conditions
Running time analysis
Testing and Debugging (reading 1.3)
52

Reminder
Lecture 2: ADT and C++ Classes
Reading Assignment before the next lecture:
Chapter 1
Chapter 2, Sections 2.1-2.3
Office Hours: Mon, Wed 12 am 1 pm
(location: NAC 8/210)

53

Question and Survey


No

name!

Once

you finish, fold the paper.

54

THE END

55

You might also like