cs 101 chapter 1: background. 2 let’s begin goal teach you how to program effectively skills and...

61
CS 101 Chapter 1: Background

Upload: pauline-lawson

Post on 05-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

CS 101

Chapter 1: Background

Page 2: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

2

Let’s begin

Goal Teach you how to program effectively

Skills and information to be acquired Problem solving Object-oriented design Java

Page 3: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

3

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

Page 4: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

4

So what is a computation?

The act or process of computing Duh!

Definition of computing: 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)

Page 5: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

5

Axiom

By definition, a (properly functioning) computer will always produce the same output given the same input

So how do we compute random numbers?

Page 6: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

6

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

Page 7: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

7

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…

Page 8: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

8

Example algorithm: map directions

Page 9: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

9

Example algorithm: car radio removal

Page 10: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

10

Example algorithm: Recipes

Page 11: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

11

Incorrect algorithms

Not all algorithms are “good”

So then what makes an algorithm “bad”? Can be wrong Can be inefficient Can never stop Can have other problems as well…

Page 12: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

12

Incorrect algorithms: just plain wrong

From http://en.for-ua.com/blog/2005/12/09/102028.html

Page 13: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

13

Inefficient algorithms: Google Maps directions

Consider directions to get the IGA

Page 14: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

14

Note that this is not an incorrect algorithm!Note that this is not an incorrect algorithm!Just a Just a veryvery inefficient one inefficient one

Page 15: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

15

Incorrect algorithms: Shampoo directions

Page 16: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

16

Page 17: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

17

Incorrect algorithms: Shampoo directions

Lather, rinse, repeat

This algorithm repeats forever! It never halts Note that humans know to not to spend forever performing

the algorithm But computers do not!

Remember, they have zero intelligence

Hence the computer joke: How did the computer scientist die in the shower? S/he read the directions: lather, rinse, repeat

Page 18: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

18

Incorrect algorithms: Inexact recipes

Page 19: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

19

Incorrect algorithms: summation

Consider this algorithm: Given an integer n Keep track of an ongoing sum (starts at 0) Repeat

Add n to the ongoing sum Subtract 1 from n

Until n is zero

What’s wrong with this algorithm? Will it ever stop? Will it always stop?

Are you sure?

Page 20: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

20

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?

Page 21: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

21

“Correct” algorithms

Consider an algorithm to display the color blue

Is this blue?

Is this blue?

What about this?

And this one?

Definitely

Also, yes: two correct results!

Maybe (could be green)

Definitely not

Page 22: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

22

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!

Page 23: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

23

How do we tell all this to a computer?

“Computer: Tea, Earl Gray, hot” Jean-Luc Picard from Star Trek

Unfortunately, that doesn’t work so well today… Computers don’t understand English

Page 24: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

24

Programming Languages

Common programming languages: BASIC COBOL Pascal C (1972) by Dennis Ritchie C++ (1985) by Bjarne Stroustrup Java (1991) by James Gosling and others at Sun

Microsystems

Page 25: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

25

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

Page 26: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

26

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 Mega = (1024)2 = 1,048,576 Giga = (1024)3 = 1,073,741,824 Tera = (1024)4 = 1,099,511,627,776

= Kibi (Ki)

= Mebi (Mi)

= Gibi (Gi)

= Tebi (Ti)

Page 27: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

27

Computing units of measure

An unformatted text document (such as a Java program) 3 pages per kilobyte (1,000 bytes)

A formatted document (such as a Word file) About 5k per page with formatting

A digital camera picture About 1 Mb each (1,000,000 bytes)

An MP3 music file 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

Page 28: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

28

A marketing trick

This hard drive has 250,059,350,016 bytes = 250.06 Gigabytes = 232.89 Gibibytes

Guess which one they use when they are advertising the drive?

Page 29: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

2929

Our first Java programOur first Java program

Page 30: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

30

Programming Task

Display “Hello World!”

Page 31: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

31

HelloWorld.java

// Purpose: say hello!

public class HelloWorld {

public static void main(String[] args) {

System.out.println (“Hello, world!");}

}One statement makes up the action of method main()

Method main() is part of class HelloWorld

A method is a named piece of code that performs some action or implements a behavior

An application program is required to have a public static void method named main().

Page 32: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

32

Sample output

Page 33: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

33

Common Language Elements

There are some concepts that are common to virtually all programming languages.

Common concepts: Key words Operators Punctuation Programmer-defined identifiers Strict syntactic rules

Page 34: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

34

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

Page 35: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

35

Key Words

Key words in the sample program are: public class static void String

String is not really a key word but is the name of a predefined class in Java

We’ll go over the difference between these later Key words

lower case (Java is a case sensitive language). cannot be used as a programmer-defined

identifier.

Page 36: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

36

Programming Languages

Some Java key words have no meaning but are reserved to prevent their use. (ex. goto, const, include)

Semi-colons are used to end Java statements; however, not all lines of a Java program end a statement.

Part of learning Java is to learn where to properly use the punctuation.

Page 37: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

37

Lines vs Statements

There is a difference between lines and statements when discussing source code.

System.out.println( message);

This is one Java statement written using two lines. Do you see the difference?

A statement is a complete Java instruction that causes the computer to perform an action.

Page 38: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

38

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.");

}}

Page 39: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

39

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 anti-

// competitive 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.");

}

}

Page 40: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

40

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

Page 41: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

4141

Human stupidityHuman stupidity

Page 42: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

4242

Programming overviewProgramming overview

Page 43: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

43

The Programming Process

1. Clearly define what the program is to do.

2. Visualize the program running on the computer.

3. Use design tools to create a model of the program.

4. Check the model for logical errors.

Page 44: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

44

The Programming Process

5. Enter the code and compile it.

6. Correct any errors found during compilation. Repeat Steps 5 and 6 as many times as necessary.

7. Run the program with test data for input.

8. Correct any runtime errors found while running the program.

Repeat Steps 5 through 8 as many times as necessary.

9. Validate the results of the program.

Page 45: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

45

Software Engineering

Encompasses the whole process of crafting computer software.

Software engineers perform several tasks in the development of complex software projects.

designing, writing, testing, debugging, documenting, modifying, and maintaining.

Page 46: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

46

Software Engineering

Software engineers develop: program specifications, diagrams of screen output, diagrams representing the program components

and the flow of data, pseudocode, examples of expected input and desired output.

Page 47: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

47

Other buzzwords from the chapter

I’m not expecting you to fully understand these after reading chapter 1 Procedural programming Object oriented programming

Data hiding Code reusability

Classes vs. objects Inheritance

We will see all of these before the semester ends

Page 48: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

4848

Computer SystemsComputer Systems

Page 49: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

49

Computer Systems

Hardware The central processing unit (CPU) Main memory Secondary storage devices Input and Output devices

Software Operating systems Application software

Page 50: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

50

Computer Systems: Hardware

Input Devices

Output Devices

Input / OutputDevices

ALU

Control Unit

RAM

Page 51: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

51

Computer Systems: Hardware

Computer hardware components are the physical pieces of the computer.

The major hardware components of a computer are: The central processing unit (CPU) Main memory Secondary storage devices Input and Output devices

Page 52: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

52

Central Processing Unit

ArithmeticLogicUnit

ControlUnit

CPU

Instruction (input) Result (output)

Page 53: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

53

Central Processing Unit

The CPU performs the fetch, decode, execute cycle in order to process program information.

Fetch

The CPU’s control unit fetches, from main memory,the next instruction in the sequence of program instructions.

Decode

The instruction is encoded in the form of a number. The control unit decodes the instruction and generates an electronic signal.

ExecuteThe signal is routed to the appropriate component of the computer (such as the ALU, a disk drive, or some other device). The signal causes the component to perform an operation.

Page 54: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

54

Main Memory (aka RAM)

Commonly known as random-access memory (RAM)

RAM contains:

currently running programs data used by those programs

is volatile when the computer is turned off, the contents of RAM

are erased. short-term memory

Page 55: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

55

Secondary Storage

Secondary storage devices are capable of storing information for longer periods of time non-volatile long-term memory

Examples• Hard drive• CD RW drive• DVD RAM drive• Compact Flash card

Page 56: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

56

Input Devices

Input is any data the computer collects from the outside world.

That data comes from devices known as input devices.

Common input devices: Keyboard Mouse Scanner Digital camera

Page 57: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

57

Output Devices

Output is any data the computer sends to the outside world.

That data is displayed on devices known as output devices

Common output devices: Monitors Printers

Some devices such as disk drives perform input and output and are called I/O devices (input/output).

Page 58: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

58

Computer Systems: Software

Software refers to the programs that run on a computer.

Two classifications of software: Operating Systems Application Software

Page 59: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

59

Operating Systems

An operating system has two functions: Control the system resources. Provide the user with a means of interaction with

the computer. Operating systems can be either

single tasking (run one program at a time) DOS

multi-tasking (run many programs at once) Windows Unix Apple

Page 60: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

60

Operating Systems

Operating systems can also be categorized as single user

only one user to operate the computer at a time Examples:

DOS Windows 95/98/ME

multi-user allow several users to run programs and operate the

computer at once. Examples

Unix BSD Windows NT/2000/XP OS/X

Page 61: CS 101 Chapter 1: Background. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired Problem solving Object-oriented

61

Application Software

Programs that make the computer useful to the user Spreadsheets Word processors Accounting software Tax software Games