CS 101 Chapter 1: Introduction Aaron Bloomfield Spring 2007
CS 101
Chapter 1: IntroductionAaron Bloomfield
Spring 2007
2Lets 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
33
So, what is a computer, anyway?So, what is a computer, anyway?
4What is a computer?
Not a rhetorical question!
A device that computesespecially 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
5So 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)
6Axiom
By definition, a (properly functioning) computer will always produce the same output given the same input
So how do we compute random numbers?
7The first computers
Abacus performed mathematical computations Primarily thought of as Chinese, but also Japanese, Mayan, Russian,
and Roman versions Can do square roots and cube roots
Scales computed relative weight of two items Computed if the first items weight
was less than, equal to, or greater than the second items weight
8Stonehenge
99
Computer SizeComputer Size
ENIAC then
ENIAC today
1010
AlgorithmsAlgorithms
11
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, well use Java
12
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
Weve seen lots of algorithms before
13
Example algorithm: map directions
14
Example algorithm: car radio removal
15
Example algorithm: Recipes
1616
An optical illusionAn optical illusion
1717
Algorithm correctnessAlgorithm correctness
18
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
19
Incorrect algorithms: just plain wrong
From http://en.for-ua.com/blog/2005/12/09/102028.html
20
Inefficient algorithms: MapQuest directions
Consider directions to get around grounds
21
Note that this is not an incorrect algorithm!Note that this is not an incorrect algorithm!Just a Just a veryvery inefficient oneinefficient one
22
Incorrect algorithms: Shampoo directions
23
24
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 overplayed (and not very funny) computer joke: How did the computer scientist die in the shower? S/he read the directions: lather, rinse, repeat
25
Incorrect algorithms: Inexact recipes
26
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
Whats wrong with this algorithm? Will it ever stop? Will it always stop?
Are you sure?
27
Our goal
Is to write correct and efficient algorithms for a computer to follow Remember that computers are dumb!
We arent going to worry about the efficient part in this course
But what does correct mean?
28
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
29
Note that this is not an incorrect algorithm!Note that this is not an incorrect algorithm!Just a Just a veryvery inefficient oneinefficient one
30
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 isnt 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!
3131
Carved watermelonsCarved watermelons
3232
Programming a computerProgramming a computer
33
How do we tell all this to a computer?
Computer: Tea, Earl Gray, hot Jean-Luc Picard from Star Trek
Unfortunately, that doesnt work so well today Computers dont understand English
34
First Programming Languages
Ada Lovelace (1833) Programmed of Babbages analytical engine
ENIAC (1945) Programmed by plugging wires
Binary 100100010101001010101010
Assembly FORTRAN (1954)
35
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
3636
BackgroundBackground
37
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
38
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)
39
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
40
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?
4141
TodayTodays s demotivatorsdemotivators
4242
Our first Java programOur first Java program
43
Programming Task
Display Hello World!
44
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().
45
Sample output
4646
Program partsProgram parts
47
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
48
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
49
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
Well 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.
50
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.
51
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.
52
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.");
}
}
53
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 pointpublic 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.");
}}
54
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
5555
Human stupidityHuman stupidity
5656
Programming overviewProgramming overview
57
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.
58
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.
59
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.
60
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.
61
Other buzzwords from the chapter
Im 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
6262
Computer SystemsComputer Systems
63
Computer Systems
Hardware The central processing unit (CPU) Main memory Secondary storage devices Input and Output devices
Software Operating systems Application software
64
Computer Systems: Hardware
Input Devices
Output Devices
Input / OutputDevices
ALU
Control Unit
RAM
65
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
66
Central Processing Unit
ArithmeticLogicUnit
ControlUnit
CPU
Instruction (input) Result (output)
67
Central Processing Unit
The CPU performs the fetch, decode, execute cycle in order to process program information.
Fetch
The CPUs 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.
68
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
69
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
70
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
71
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).
72
Computer Systems: Software
Software refers to the programs that run on a computer.
Two classifications of software: Operating Systems Application Software
73
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
74
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
75
Application Software
Programs that make the computer useful to the user Spreadsheets Word processors Accounting software Tax software Games
CS 101Lets beginSo, what is a computer, anyway?What is a computer?So what is a computation?AxiomThe first computersStonehengeComputer SizeAlgorithmsSo what do we do with a computerAlgorithmsExample algorithm: map directionsExample algorithm: car radio removalExample algorithm: RecipesAn optical illusionAlgorithm correctnessIncorrect algorithmsIncorrect algorithms: just plain wrongInefficient algorithms: MapQuest directionsIncorrect algorithms: Shampoo directionsIncorrect algorithms: Shampoo directionsIncorrect algorithms: Inexact recipesIncorrect algorithms: summationOur goalCorrect algorithmsSo what does all this mean?Carved watermelonsProgramming a computerHow do we tell all this to a computer?First Programming LanguagesProgramming LanguagesBackgroundComputing units of measureComputing units of measureComputing units of measureA marketing trickTodays demotivatorsOur first Java programProgramming TaskHelloWorld.javaSample outputProgram partsCommon Language ElementsJava DocumentationKey WordsProgramming LanguagesLines vs StatementsGood commentingBad commentingMore bad commentingHuman stupidityProgramming overviewThe Programming ProcessThe Programming ProcessSoftware EngineeringSoftware EngineeringOther buzzwords from the chapterComputer SystemsComputer SystemsComputer Systems: HardwareComputer Systems: HardwareCentral Processing UnitCentral Processing UnitMain Memory (aka RAM)Secondary StorageInput DevicesOutput DevicesComputer Systems: SoftwareOperating SystemsOperating SystemsApplication Software