CS 101 Chapter 1: Background Aaron Bloomfield Fall 2006

advertisement
CS 101
Chapter 1: Background
Aaron Bloomfield
Fall 2006
Let’s begin

Goal


Teach you how to program effectively
Skills and information to be acquired




What the heck all this means
Problem solving
Object-oriented design
Java
2
What is a computer?


Not a rhetorical question!
“A device that computes…
especially a programmable electronic machine that
performs high-speed mathematical or logical
operations or that assembles, stores, correlates, or
otherwise processes information”

From American Heritage® Dictionary of the English
Language, 4th Edition
3
So what is a computation?

The act or process of computing


Definition of computing:



Duh!
To determine by the use of a computer
To determine by mathematics, especially by numerical
methods: computed the tax due
My revised definition for computing:

The act of taking a problem with specific inputs and
determining a specific answer (output)
4
Axiom


By definition, a (properly functioning) computer will
always produce the same output given the same
input
So how do we compute random numbers?
5
The first computers

Scales – computed relative weight of
two items


Computed if the first item’s weight
was less than, equal to, or greater
than the second item’s weight
Abacus – performed mathematical computations


Primarily thought of as Chinese, but also Japanese, Mayan, Russian,
and Roman versions
Can do square roots and cube roots
6
Stonehenge
7
Computer Size
ENIAC then…
ENIAC today…
8
So what do we do with a computer…

… now that we have one?

We have to tell a computer what to do!


Computers have no intelligence of their own
We tell a computer what to do by writing a
computer program, or “algorithm”

In this course, we’ll use Java
10
Algorithms


What is an algorithm?
“A step-by-step problem-solving procedure,
especially an established, recursive computational
procedure for solving a problem in a finite number
of steps”


From American Heritage® Dictionary of the English
Language, 4th Edition
We’ve seen lots of algorithms before…
11
Example algorithm: map directions
12
Example algorithm: car radio removal
13
Example algorithm: Recipes
14
Bad algorithms

Not all algorithms are “good”

So then what makes an algorithm “bad”?



Can be wrong
Can be inefficient
Can have other errors as well
15
Bad algorithms: MapQuest directions

Consider directions to get around grounds
16
17
Note that this is not an incorrect algorithm!
Just a very inefficient one
18
Bad algorithms: Shampoo directions
19
20
Bad algorithms: Shampoo directions

Lather, rinse, repeat

This algorithm repeats forever!


Note that humans know to not to spend forever performing the
algorithm
But computers do not!


Remember, they have zero intelligence
Hence the overplayed (and not very funny) computer joke:


How did the computer scientist die in the shower?
S/he read the directions: lather, rinse, repeat
21
Bad algorithms: Inexact recipes
22
Our goal

Is to write correct and efficient algorithms for a
computer to follow



Remember that computers are dumb!
We aren’t going to worry about the efficient part in
this course
But what does “correct” mean?
23
“Correct” algorithms

Consider an algorithm to display the color blue

Is this blue?
Definitely

Is this blue?
Also, yes: two correct results!

What about this?
Maybe (could be green)

And this one?
Definitely not
24
Note that this is not an incorrect algorithm!
Just a very inefficient one
25
So what does all this mean?

Humans specify algorithms without a lot of precision




Display the color “blue”
Get me from “here” to “there”
When there isn’t much precision, there are often multiple answers
Computers need more precision

Display the color 0x0000ff (royal blue):



There is only one possible outcome
Find the shortest route from “here” to “there”
We need to be very specific when we specify things to a
computer

Computers are dumb!
26
How do we tell all this to a computer?

“Computer: Tea, Earl Gray, hot”


Unfortunately, that doesn’t work so well today…


Jean-Luc Picard from Star Trek
Computers don’t understand English
Instead, we’ll use a computer language: Java
27
Onto the book chapter

A lot of this terminology will be confusing at first

We will be going over it in more detail throughout the
semester
28
Computer Organization
• Computer advertisement specification
– Intel® Pentium 4 Processor
at 3.06GHz with 512K cache
– 512MB DDR SDRAM
– 200GB ATA-100 Hard Drive
(7200 RPM, 9.0 ms seek time)
– 17” LCD Monitor
– 64MB NVIDIA GeForce4
MX Graphics Card®
– 16x Max DVD-ROM Drive
– 48x/24x/48x CD-RW Drive
– 56K PCI Telephony Modem
– Windows XP Home Edition®
– 10/100 Fast Ethernet Network Card
512 million bytes of
3.06
Reads
memory
17”
Computer
Can
Can
Microprocessor
Stores
billion
on
send
read
DVDs
the
200
that
or
and
operations
operating
diagonal.
16
billion
receive
can
write
times
for
be
faster
displaying
transferred
data
bytes
CDs.
up
Resolution
system
to
per
than
at
Can
of
56
two
second
data.
images
athousand
using
hold
at
basic
rates
up
double
You
650
to
awith
DVD
–
10
drive.
million
want
64
graphical
or
the
1,280
bits
million
100
high
normal
Can
per
bytes
by
million
hold
interface
RPM
second
bytes
1,024
of
rate
up
and
data
bytes
ofto
memory.
8 Reads
billion
low
per
seek
pixels
at
bytes
More
second
48
time.
memory
times
of data
supports
0.009
faster
A byteseconds
and
more
is 8writes
bits
colors
is
and
24 times
higher
average
faster
resolution
than
A bit
a basic
is a 0drive
or a 29
1
Backbones
30
A bit of humor…
31
An optical illusion
32
First Programming Languages

Ada Lovelace (1833)


ENIAC (1945)



Programmed by plugging wires
Binary


Programmed of Babbage’s analytical engine
100100010101001010101010
Assembly
FORTRAN (1954)
33
Java’s Direct Lineage

C (1972) by Dennis Ritchie

C++ (1985) by Bjarne Stroustrup

Java (1991) by James Gosling and others at Sun
Microsystems
34
Computing units of measure

A bit is either a 1 or a 0



On or off, true or false, etc.
A byte is 8 bits:

01001010

As there are 8 bits per byte, each byte can hold 28=256 values

01001010 = 74
All computing measurements are in terms of bytes
35
Computing units of measure

Kilo (K) = 1,000 (thousand)

Mega (M) = 1,000,000 (million)

Giga (G) = 1,000,000,000 (billion)

Tera (T) = 1,000,000,000,000 (trillion)

Kilo = 210 = 1,024
= Kibi (Ki)

Mega = (1024)2 = 1,048,576
= Mebi (Mi)

Giga = (1024)3 = 1,073,741,824
= Gibi (Gi)

Tera = (1024)4 = 1,099,511,627,776
= Tebi (Ti)
36
Computing units of measure

An unformatted text document (such as a Java program)


A formatted document (such as a Word file)



About 1 Mb each (1,000,000 bytes)
An MP3 music file


About 5k per page with formatting
A digital camera picture


3 pages per kilobyte (1,000 bytes)
5 Mb for a 5 minute song
A music file on a CD

50 Mb for a 5 minute song

10 times the size of an MP3!
A movie clip

About 10 Mb per minute of (TV-sized) video
37
A marketing trick

This hard drive has
250,059,350,016
bytes



= 250.06 Gigabytes
= 232.89 Gibibytes
Guess which one
they
use
to
advertise the drive?
38
Programming Task

Display the forecast
I think there is a world market for maybe five computers.
Thomas Watson, IBM, 1943.
39
DisplayForecast.java
// Authors: J. P. Cohoon and J. W. Davidson
// Purpose: display a quotation in a console window
public class DisplayForecast {
// method main(): application entry point
public static void main(String[] args) {
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Anmethod
Three
A
application
statements
is a named
program
make
piece
is
uprequired
the
of code
action
to
that
have
of performs
method
a
main()action
some
public
static void
or implements
method named
a behavior
main().
Method main() is part of class DisplayForecast
40
Sample output
41
Java Documentation

Familiarize yourself with the Java documentation


It will save you lots of time!
A link to it is on the website

We will go over it in a future lab as well
42
Good Commenting

Necessary so others can re-use your code


And so the graders can understand it!
A well commented program:
// Authors: J. P. Cohoon and J. W. Davidson
// Purpose: display a quotation in a console window
public class DisplayForecast {
// method main(): application entry point
public static void main(String[] args) {
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
43
Bad commenting
//
//
//
//
Thomas J. Watson (February 17, 1874 - June 19, 1956) is
considered to be the founder of IBM. He was one of the
richest men of his time and called the world's greatest
salesman when he died.
//
//
//
//
//
//
//
//
//
//
//
Watson was born in Campbell, New York. His formal
education consisted of only a course in the Elmira
School of Commerce. His first job was at age 18 as
a bookkeeper in Clarence Risley's Market in Painted
Post, New York. Later he sold sewing machines and
musical instruments before joining the National Cash
Register Company as a salesman in Buffalo. He eventually
worked his way up to general sales manager. Bent on
inspiring the dispirited NCR sales force, Watson
introduced the motto, "THINK," which later became
a widely known symbol of IBM.
//
//
//
//
//
//
//
//
//
//
//
//
Although he is well known for his alleged 1943 statement:
"I think there is a world market for maybe five computers"
there is no evidence he ever made it. The author Kevin
Maney tried to find the origin of the quote. He has been
unable to locate any speeches or documents of Watson's
that contain this, nor is it present in any contemporary
articles about IBM. The earliest known citation is from
1986 on Usenet in the signature of a poster from Convex
Computer Corporation as "I think there is a world market
for about five computers" --Remark attributed to Thomas
J. Watson (Chairman of the Board of International
Business Machines),1943
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
While at NCR, he was convicted for illegal anticompetitive sales practices (e.g. he used to have
people sell deliberately faulty cash registers, either
second-hand NCR or from competitors; soon after the
second-hand NCR or competitors cash register failed,
an NCR salesperson would arrive to sell them a brand
new NCR cash register). He was sentenced, along with
John H. Patterson (the owner of NCR), to one year of
imprisonment. Their conviction was unpopular with the
public, due to the efforts of Patterson and Watson to
help those affected by the 1913 Dayton, Ohio floods,
but efforts to have them pardoned by President Woodrow
Wilson were unsuccessful. However, the Court of
Appeals overturned the conviction on appeal in 1915,
on the grounds that important defense evidence should
have been admitted.
public class DisplayForecast {
// method main(): application entry point
public static void main(String[] args) {
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
44
More bad commenting

From the context-switching code of Unix V6 (file: slp.c)
/*
* If the new process paused because it was
* swapped out, set the stack level to the last call
* to savu(u_ssav). This means that the return
* which is executed immediately after the call to aretu
* actually returns from the last routine which did
* the savu.
*
* You are not expected to understand this.
*/
if(rp->p_flag&SSWAP) {
rp->p_flag =& ~SSWAP;
aretu(u.u_ssav);
}

Source: http://www.tuhs.org/Archive/PDP-11/Trees/V6/usr/sys/ken/slp.c
45
Carved watermelons
46
Software engineering

Goal

Production of software that is effective and reliable,
understandable, cost effective, adaptable, and reusable

Workto
Because
Cost
Design
Makes
correctly
software
develop
sense
of the due
and
long
and
so not
that
to
lifetime
maintain
fail
the
newmany
great
features
should
people
costs
not
andexceed
involved
will
capabilities
be expected
involved
to can
have
be
benefit
flexible
added
components
 Creation that can be used in other software




Debugging
Maintenance
Enhancement
Two-thirds of the cost is typically beyond creation
47
Principles of software engineering

Abstraction

Encapsulation

Modularity

Hierarchy
Separate
Construct
Determine
Rankingcomponents
or
a the
system
ordering
relevant
from
of
into
properties
external
objects
and
andpackages
internal
features
components
and
while ignoring
aspects
nonessential
details
48
Object-oriented design

Purpose

Promote thinking about software in a way that models
the way we think and interact with the physical word


Including specialization
Object


Properties or attributes
Behaviors
49
Programming

Class


Term for a type of software
object
Object

An instance of a class
with specific properties
and attributes
50
Programming


Problem solving through the use of a computer
system
Maxim

You cannot make a computer do something if you do not
know how to do it yourself
51
Problem Solving

Remember
Solutions
Accept

goal
is not
a clever
solution
a correct
solution
Oftenprocess
The
require
isboth
iterative
concrete
and but
abstract
thinking

Teamwork
In
solving the problem increased understanding might require
restarting
52
Problem Solving Process

What is it?




Analysis
Design
Implementation
Testing
Describe the components and associated processes for solving
the problem
Determine
the inputs,
and other
components
the
Develop
solutions
for outputs,
the components
and
use those of
components
Test the components
individually
and collectively
problem
to produce
Straightforward
an overalland
solution
flexible
Description
should
beflexible
sufficiently specific to allow you to solve
Method – process
Straightforward
and
the problem
Object – component and associated methods
53
Problem Solving Process
Determine
problem features
Describe objects
and methods
Produce the
classes and code
Examine for
correctness
Analysis
Rethink as
appropriate
Design
Implementation
Testing
54
Tips

Find out as much as you can

Reuse what has been done before

Expect future reuse

Break complex problems into subproblems
55
Tips

Find out as much as you can

Reuse what has been done before

Expect future reuse

Break complex problems into subproblems
Consider
Research
can is
require
and generate questions
Find out what
knownsignificant
about thetime
problem
Sketching
apresenter
solution
andbecause
then repeatedly
its components
The
worthwhile
the resultrefine
is a better
Talk effort
to theis
until
the entire process is specified
understanding
Determine what attempts have succeeded and what attempts
True
of the problem makes it easier to solve
have understanding
failed
56
Tips

Find out as much as you can

Reuse what has been done before

Expect future reuse

Break complex problems into subproblems
Your
Be
open
timetoisindirect
valuable
use of existing materials
Correctness is probably even more valuable
Use existing infrastructure that is known to work
57
Tips

Find out as much as you can

Reuse what has been done before

Expect future reuse

Break complex problems into subproblems
Make as few assumptions as necessary
Maximizes the likelihood that your effort can be used in future
situations
58
Tips

Find out as much as you can

Reuse what has been done before

Expect future reuse

Break complex problems into subproblems
Divide-and-conquer
Solve subproblems and combine into an overall solution
59
Today’s demotivators
60
Download