TCSS 342 - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

TCSS 342

Description:

(Broad) Prepare you to be a good software engineer ... array (from small to large), using Java's Arrays.sort() Pick out the (1,000,000 k)th element. ... – PowerPoint PPT presentation

Number of Views:38
Avg rating:3.0/5.0
Slides: 18
Provided by: donald64
Category:
Tags: tcss | javas

less

Transcript and Presenter's Notes

Title: TCSS 342


1
TCSS 342
  • Data Structures Algorithms
  • Autumn 2004
  • Ed Hong

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

3
Software Design Goals
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?

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)

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.

7
Is either solution good?
  • Is there a better solution?
  • How would you go about determining the answer to
    these questions?

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?

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.

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.

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.

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)

13
Mathematical Background
  • Exponents
  • XA XB XAB
  • XA / XB XA-B
  • (XA)B XAB
  • XNXN 2XN
  • 2N2N 2N1
  • Logarithms
  • Definition XA B if and only if logX B A.

14
Logarithms, continued
  • log AB log A log B
  • Proof

15
Logarithms, Series
  • log A/B log A log B
  • log (AB) B log A
  • Series
  • binary representation of numbers

16
Series
  • Geometric progression for agt0, a ?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).
Write a Comment
User Comments (0)
About PowerShow.com