Computer Science 121 Scientific Computing Winter 2014 Chapter 1: What is Computation?

Post on 17-Jan-2016

219 views 0 download

Transcript of Computer Science 121 Scientific Computing Winter 2014 Chapter 1: What is Computation?

Computer Science 121

Scientific ComputingWinter 2014

Chapter 1: What is Computation?

1.1 Computation as Transformation• A computation is a transformation from on or more

inputs to an output.– Input = time; Output = reactant (grams)

1.1 Computation as Transformation•

Input = age (years); Output = recall (items)

1.1 Computation as Transformation

Input = x; Output =√x

http://www.macalester.edu/~kaplan/scientificprogramming/figures.ppt

1.1 Computation as Transformation

Input = financial info; Output = tax owed / refunded

http://www.macalester.edu/~kaplan/scientificprogramming/figures.ppt

1.1 Computation as Transformation

Input = image file; Output = “This is the Mona Lisa!”

http://www.macalester.edu/~kaplan/scientificprogramming/figures.ppt

1.1 Computation as Transformation

Input = .wav file; Output = “This is the vowel /i/”

1.2 Computation as Reaction to Events

• Inputs often come from measurements • Measurements are typically performed using

transducers (convert input signal into numbers)

– microphone– speedometer– thermometer– seismograph– radar

• (What sort of data doesn't require transducers?)

1.2 Computation as Reaction to Events

http://research.utk.edu/ora/explore/sundial.jpg

– Sundial (and compass): Analog transducers

1.2 Computation as Reaction to Events

– Because measurements (signals) typically change over time, we get the concept of state : the set of values describing a system at a given time

– E.g.• Health: <blood pressure, temperature, heart rate>• Airplane: <heading, altitude, fuel>• Subatomic particle: <position, momentum>

– So...• A computation is a transition from an old state

to a new state.

1.2 Computation as Reaction to Events

– A computation is a transition from an old state to a new state

– What does this mean?

– If we can build a computational model of how a

system changes state (reacts to events), we can make

predictions about how the system will behave

• Health: influence of drugs

• Airplane: response to turbulence

• Particle: Heisenberg's Uncertainty Principle (!!!)

1.3 Algorithms

Muhammad ibn Mūsā al-Khwārizmī (c. 780 – 850)

Al-Kitāb al-mukhtaṣar fī hisāb al-jabr wa-l-muqābala

1.3 Algorithms– “Don't Reinvent the Wheel” Principle: We should

build new computations out of ones that already exist

– Principle applies across the board in computer science:

• How computer runs programs:

Hardware

Operating System

Matlab Interpreter

Matlab Programs

1.3 Algorithms

– Principle applies across the board

• How programs are written:

read_data.m save_data.m plot_data.m

my_program.m

1.3 Algorithms

– Build new computations out of ones that already exist

– An algorithm is a set of directions for carrying out a

computation in terms of other, simpler computations.

– Difficulty in writing algorithms comes from

differences between the ways that people do things

and the way that computers do them

• People: Slow, parallel, good generalization

1.3 Algorithms

– People: Slow, parallel, good generalization

“Cat!” “Cat!” “Cat!”

1.3 Algorithms

– Computers: Fast, serial, poor generalization

6068 x 4859 29484412

Expressing Algorithms• Example: Compare two Arabic numerals (e.g., 23

and 97) to determine which is larger

– Count the digits in each numeral. If one has more digits than another, the one with more is the larger.

– Otherwise, compare the leftmost digits in the two numerals. If one digit is larger than the other, the numeral with the larger leftmost digit is the larger numeral.

– Otherwise, chop off the first numeral and go to step 2.

Q.: What haven't we considered?

Expressing Algorithms

• Example: Find smallest number in list

1. Assume smallest is first item in list.

2. If there are no more items in list, we're done. Report smallest number.

3. Otherwise, look at next item. If it's smaller than current assumed “smallest” value, make current answer equal to value of this item.

4. Go to step 2.

Expressing Algorithms

• Example: Find smallest

LIST: 5 2 9 1 3

Expressing Algorithms

• Example: Find smallest

LIST: 5 2 9 1 3

SMALLEST: 5

Expressing Algorithms

• Example: Find smallest

LIST: 5 2 9 1 3

SMALLEST: 2

Expressing Algorithms

• Example: Find smallest

LIST: 5 2 9 1 3

SMALLEST: 2

Expressing Algorithms

• Example: Find smallest

LIST: 5 2 9 1 3

SMALLEST: 1

Expressing Algorithms

• Example: Find smallest

LIST: 5 2 9 1 3

SMALLEST: 1

Expressing Algorithms

• Example: Find smallest

LIST: 5 2 9 1 3

SMALLEST: 1

Expressing Algorithms

• Example: Sort a list of numbers

1. Create a new, empty list

2. Find the smallest item in the old list.

3. Remove this item from the old list and add it to the beginning of the new list.

4. If the old list is empty, we're done. Output the new list.

5. Otherwise, go to step 2.

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 2 9 1 3

NEW:

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 2 9 1 3

NEW:

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 2 9 3

NEW: 1

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 2 9 3

NEW: 1

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 9 3

NEW: 1 2

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 9 3

NEW: 1 2

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 9

NEW: 1 2 3

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 5 9

NEW: 1 2 3

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 9

NEW: 1 2 3 5

Expressing Algorithms

• Example: Sort a list of numbers

OLD: 9

NEW: 1 2 3 5

Expressing Algorithms

• Example: Sort a list of numbers

OLD:

NEW: 1 2 3 5 9

Important Points• We re-used our smallest-number algorithm in our sorting

algorithm: instead of re-writing it, we referred to it!

• We needed a strange notion of “smallest” - smallest item in a one-item list is the item itself.

• Contrast this with ordinary language terminology

– No “smallest” (or largest) item in a one-item list.

– We (are supposed to) say “smaller” (not “smallest”) if there are only two items

– These sorts of differences contribute to our difficulty in learning to program.

– But as algorithms get more complicated, we will find it more difficult to use ordinary language (“the current smallest”) to express them – need variables