0% found this document useful (0 votes)
35 views17 pages

Overview and Math 01

This document outlines the course objectives and content for TCSS 342 Data Structures & Algorithms taught in autumn 2004. The course aims to prepare students to be good software engineers by teaching fundamental data structures and algorithms. Students will learn how data is organized and unambiguous steps to solve problems. The course covers topics like data structures, algorithms, algorithm analysis, common data structures, software design practices, and mathematical concepts needed for analyzing algorithms. Examples are provided to illustrate algorithmic approaches and analysis.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views17 pages

Overview and Math 01

This document outlines the course objectives and content for TCSS 342 Data Structures & Algorithms taught in autumn 2004. The course aims to prepare students to be good software engineers by teaching fundamental data structures and algorithms. Students will learn how data is organized and unambiguous steps to solve problems. The course covers topics like data structures, algorithms, algorithm analysis, common data structures, software design practices, and mathematical concepts needed for analyzing algorithms. Examples are provided to illustrate algorithmic approaches and analysis.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 17

TCSS 342 Autumn 2004

Version 1.1
1
TCSS 342
Data Structures &
Algorithms
Autumn 2004
Ed Hong
TCSS 342 Autumn 2004
Version 1.1
2
Course Objectives
(Broad) Prepare you to be a
good software engineer


(Specific) Learn basic data
structures and algorithms
Data structures how data is
organized
Algorithms unambiguous
sequence of steps to compute
something
TCSS 342 Autumn 2004
Version 1.1
3
Software Design Goals

TCSS 342 Autumn 2004
Version 1.1
4
Course Content
Data Structures
Algorithms

Data Structures + Algorithms =
Programs

Algorithm analysis determining how
long an algorithm will take to solve a
problem
Who cares? Arent computers fast
enough and getting faster?
TCSS 342 Autumn 2004
Version 1.1
5
An Example

Given an array of 1,000,000 integers,
find the maximum integer in the array.





Now suppose we are asked to find the
kth largest element. (The Selection
Problem)

0 1 2 999,999
TCSS 342 Autumn 2004
Version 1.1
6
Candidate Solutions
+ Candidate solution 1
Sort the entire array (from small to
large), using Javas Arrays.sort()
Pick out the (1,000,000 k)th
element.

+ Candidate solution 2
Sort the first k elements.
For each of the remaining
(1,000,000 k) elements,
keep the k largest in an array.
Pick out the smallest of the k
survivors.
TCSS 342 Autumn 2004
Version 1.1
7
Is either solution good?

Is there a better solution?

How would you go about
determining the answer to these
questions?
TCSS 342 Autumn 2004
Version 1.1
8
Method 1
Code each algorithm and run them to
see how long they take.


Problem: How will you know if there
is a better program or whether there
is no better program?

What will happen when the number of
inputs is twice as many? Three? A
hundred?
TCSS 342 Autumn 2004
Version 1.1
9
Method 2
Develop a model of the way computers
work and compare how the
algorithms behave in the model.

Goal: To be able to predict
performance at a coarse level. That
is, to be able to distinguish between
good and bad algorithms.

Another benefit: when assumptions
change, we can predict the effects of
those changes.
TCSS 342 Autumn 2004
Version 1.1
10
Why algorithm analysis?

As computers get faster and problem
sizes get bigger, analysis will
become more important.

Why? The difference between good
and bad algorithms will get bigger.
TCSS 342 Autumn 2004
Version 1.1
11
Why data structures?

When programming, you are an
engineer.
Engineers have a bag of tools and
tricks and the knowledge of which
tool is the right one for a given
problem.

Arrays, lists, stacks, queues, trees, hash
tables, graphs.


TCSS 342 Autumn 2004
Version 1.1
12
Software Development
Practices
Modular code
Appropriate commenting of code
Each method needs a comment
explaining its parameters and its
behavior.
Debugging with integrated
development environment (IDE)
Incremental development
Unified modeling language (UML)


TCSS 342 Autumn 2004
Version 1.1
13
Mathematical Background
Exponents
X
A
X
B
= X
A+B
X
A
/ X
B
= X
A-B
(X
A
)
B
= X
AB

X
N
+X
N
= 2X
N
2
N
+2
N
= 2
N+1

Logarithms
Definition: X
A
= B if and only if
log
X
B = A.


TCSS 342 Autumn 2004
Version 1.1
14
Logarithms, continued
log AB = log A + log B

Proof:
1 , 0 , ,
log
log
log = > = A C B A
A
B
B
C
C
A
TCSS 342 Autumn 2004
Version 1.1
15
Logarithms, Series
log A/B = log A log B
log (A
B
) = B log A

Series


binary representation of
numbers
1 2 2
1
0
=
+
=

N
N
i
i
2
) 1 (
1
+
=

=
N N
i
N
i
TCSS 342 Autumn 2004
Version 1.1
16
Series


Geometric progression: for a>0,
a 1


) 1 /( ) 1 (
1
0
a a a
N
N
i
i
=
+
=

a
TCSS 342 Autumn 2004
Version 1.1
17
Boolean Logic
Let P and Q be statements.
not P is true if P is false.
P and Q is true if both P and
Q are true.
P or Q is true if one of or both
P or Q are true.
P implies Q is true if P is
false or Q is true (or both).
P
Q P.
Q Pv
Q P Q P v =

You might also like