CS 101 Chapter 1 Background Aaron Bloomfield Lets

  • Slides: 69
Download presentation
CS 101 • Chapter 1: Background • Aaron Bloomfield

CS 101 • Chapter 1: Background • Aaron Bloomfield

Let’s begin • Goal – Teach you how to program effectively • Skills and

Let’s begin • Goal – Teach you how to program effectively • Skills and information to be acquired – Mental model of computer and network behavior – Problem solving – Object-oriented design – Java

What is a computer? • Not a rhetorical question! • “A device that computes…

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, 4 th Edition

So what is a computation? • The act or process of computing – Duh!

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)

Axiom • By definition, a (properly functioning) computer will always produce the same output

Axiom • By definition, a (properly functioning) computer will always produce the same output given the same input • So how do we compute random numbers?

The first computers • Scales – computed relative weight of two items – Computed

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

Stonehenge

Stonehenge

Computer Size ENIAC then… ENIAC today… n With computers (small) size does matter! 8

Computer Size ENIAC then… ENIAC today… n With computers (small) size does matter! 8

So what do we do with a computer now that we have one? •

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 – In this course, we’ll use Java

Algorithms • What is an algorithm? • “A step-by-step problem-solving procedure, especially an established,

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, 4 th Edition • We’ve seen lots of algorithms before…

Example algorithm: map directions

Example algorithm: map directions

Example algorithm: car radio removal

Example algorithm: car radio removal

Example algorithm: Recipes

Example algorithm: Recipes

Bad algorithms • Not all algorithms are “good” • So then what makes an

Bad algorithms • Not all algorithms are “good” • So then what makes an algorithm “bad”?

Bad algorithms: Map. Quest directions • Consider directions to get around grounds

Bad algorithms: Map. Quest directions • Consider directions to get around grounds

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

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

Bad algorithms: Shampoo directions

Bad algorithms: Shampoo directions

Bad algorithms: Shampoo directions • Lather, rinse, repeat • This algorithm repeats forever! –

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 computer joke: – How did the computer scientist die in the shower? – He read the directions: lather, rinse, repeat

Bad algorithms: Inexact recipes

Bad algorithms: Inexact recipes

Our goal • Is to write correct and efficient algorithms for a computer to

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?

“Correct” algorithms • Consider an algorithm to display the color blue • Is this

“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

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

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

So what does all this mean? • Humans specify algorithms without a lot of

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 0 x 0000 ff (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!

Onto the book chapter • A lot of this terminology will be confusing at

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

Computer Organization Memory Output Devices Input Devices Central Processing Unit

Computer Organization Memory Output Devices Input Devices Central Processing Unit

Computer Organization • Computer advertisement specification – Intel® Pentium 4 Processor at 3. 06

Computer Organization • Computer advertisement specification – Intel® Pentium 4 Processor at 3. 06 GHz with 512 K cache – 512 MB DDR SDRAM – 200 GB ATA-100 Hard Drive (7200 RPM, 9. 0 ms seek time) – 17” LCD Monitor – 64 MB NVIDIA Ge. Force 4 MX Graphics Card® – 16 x Max DVD-ROM Drive – 48 x/24 x/48 x CD-RW Drive – 56 K PCI Telephony Modem – Windows XP Home Edition® – 10/100 Fast Ethernet Network Card 512 million bytes of 3. 06 Reads memory 17” Computer 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 bytes data CDs. up Resolution system to per than at Can of 56 two second data. images athousand using hold basic rates up You 650 to awith DVD – transferred at double 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 A byteseconds is 8 writes bits supports 0. 009 faster and more colors is and 24 times higher average faster resolution than A bit a basic is a 0 drive or a 1

A bit of humor: Computer Organization n Why I like adding humorous bits into

A bit of humor: Computer Organization n Why I like adding humorous bits into class… 30

Home network

Home network

Backbones

Backbones

A bit of humor… 33

A bit of humor… 33

Network communication • Communication protocol – Set of rules that govern how data is

Network communication • Communication protocol – Set of rules that govern how data is sent and received • TCP/IP – Exchanging packets of information over the Internet • FTP – Exchanging files between computes • SMTP – Exchanging email over the Internet • POP – Exchanging email between mail reader and the ISP • HTTP – Exchanging files over the WWW • SSL – How information is to be encrypted

First Programming Languages • Ada Lovelace (1833) – Programmed of Babbage’s analytical engine •

First Programming Languages • Ada Lovelace (1833) – Programmed of Babbage’s analytical engine • ENIAC (1945) – Programmed by plugging wires • Binary – 1001010100101010 • Assembly • FORTRAN (1954)

Java’s Direct Lineage • C (1972) by Dennis Ritchie • C++ (1985) by Bjarne

Java’s Direct Lineage • C (1972) by Dennis Ritchie • C++ (1985) by Bjarne Stroustrup • Java (1991) by James Gosling and others at Sun Microsystems

Computing units of measure • A bit is either a 1 or a 0

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

Computing units of measure • Kilo (K) = 1, 000 (thousand) • Mega (M)

Computing units of measure • Kilo (K) = 1, 000 (thousand) • Mega (M) = 1, 000 (million) • Giga (G) = 1, 000, 000 (billion) • Tera (T) = 1, 000, 000 (trillion) = Kibi (Ki) • Kilo = 210 = 1, 024 • 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)

Computing units of measure • An unformatted text document (such as a Java program)

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 5 k per page with formatting • A digital camera picture – About 1 Mb each (1, 000 bytes) • An MP 3 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 MP 3! • A movie clip – About 10 Mb per minute of (TV-sized) video

A marketing trick • This hard drive has 250, 059, 350, 016 bytes –

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?

Software • Program – Sequence of instruction that tells a computer what to do

Software • Program – Sequence of instruction that tells a computer what to do • Execution – Performing the instruction sequence • Programming language – Language for writing instructions to a computer • Major flavors – Machine language or object code – Assembly language – High-level Detailed Program knowledge to which of computer the machine respond is not Java Symbolic is acan high-level language For program to be directly. required. Eachmachine Uses instruction a for programming coding executed itcode must be is a vocabulary binary and that language instructions translated structure corresponds closer to to athe problem native being instruction solved

Translation • Translator – Accepts a program written in a source language and translates

Translation • Translator – Accepts a program written in a source language and translates it to a program in a target language • Compiler – Standard name for a translator whose source language is a high-level language • Interpreter – A translator that both translates and executes a source program

Java translation • Two-step process • First step – Translation from Java to bytecode

Java translation • Two-step process • First step – Translation from Java to bytecode • Bytecodes are architecturally neutral object code • Bytecodes are stored in a file with extension. class • Second step – An interpreter translates the bytecodes into machine instructions and executes them • Interpreter is known a Java Virtual Machine or JVM

Programming Task • Display the forecast I think there is a world market for

Programming Task • Display the forecast I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943.

Display. Forecast. java // Authors: J. P. Cohoon and J. W. Davidson // Purpose:

Display. Forecast. java // Authors: J. P. Cohoon and J. W. Davidson // Purpose: display a quotation in a console window public class Display. Forecast { // 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 Display. Forecast

Sample output

Sample output

Java Documentation • Familiarize yourself with the Java documentation – It will save you

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

Good Commenting • Necessary so others can re-use your code – And so the

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 Display. Forecast { // 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. "); } }

Bad commenting // // Thomas J. Watson (February 17, 1874 - June 19, 1956)

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. // // // // 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. // // // 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: public class Display. Forecast { "I think there is a world market for maybe five computers" there is no evidence he ever made it. The author Kevin // method main(): application entry point Maney tried to find the origin of the quote. He has been public static void main(String[] args) { unable to locate any speeches or documents of Watson's System. out. print("I think there is a world market for that contain this, nor is it present in any contemporary System. out. println(" maybe five computers. "); articles about IBM. The earliest known citation is from System. out. println(" Thomas Watson, IBM, 1943. "); 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

More bad commenting • From the context-switching code of Unix V 6 (file: slp.

More bad commenting • From the context-switching code of Unix V 6 (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/V 6/usr/sys/ken/slp. c

Java and the Internet

Java and the Internet

Engineering software • Complexity of software grows as attempts are made to make it

Engineering software • Complexity of software grows as attempts are made to make it easier to use – Rise of wizards

Software engineering • Goal – Production of software that is effective and reliable, understandable,

Software engineering • Goal – Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable • Design Makes Work Because Cost to correctly sense software develop of thedue and long and sotonot that lifetime maintain thefail new great many features should costs people involved not andexceed will capabilities to behave involved expected flexible can be benefit added components – Creation that can be used in other software – Debugging – Maintenance – Enhancement • Two-thirds of the cost is typically beyond creation

Principles of software engineering • Abstraction • Encapsulation • Modularity • Hierarchy Construct Determine

Principles of software engineering • Abstraction • Encapsulation • Modularity • Hierarchy Construct Determine Ranking Separateor acomponents the system ordering relevant from of properties into external objects and features and components and internal while ignoring aspects packages nonessential details

A bit of humor: 1989 Computer Advertisement Guess the price! 55

A bit of humor: 1989 Computer Advertisement Guess the price! 55

Object-oriented design • Purpose – Promote thinking about software in a way that models

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

Programming • Class – Term for a type of software object • Object –

Programming • Class – Term for a type of software object • Object – An instance of a class with specific properties and attributes

Programming • Problem solving through the use of a computer system • Maxim –

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

Problem Solving • Why do you care? – We are all assigned tasks to

Problem Solving • Why do you care? – We are all assigned tasks to do • At work • At home • At school • Why not do them – Right – Efficiently

Problem Solving • Why care about computer-based problem solving (i. e. , programming)? –

Problem Solving • Why care about computer-based problem solving (i. e. , programming)? – – – Neat Frontier of science Profitable Necessary Quality of life

Problem Solving Remember • Solutions Accept goal is not a clever solution a correct

Problem Solving Remember • Solutions Accept goal is not a clever solution a correct – Often The process require isboth iterative concrete and but abstract thinking solution • Teamwork In solving the problem increased understanding might require restarting

Problem Solving Process • What is it? – Analysis – Design – Implementation –

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 an overalland solution Straightforward flexible Description should beflexible sufficiently specific to allow you to solve Method – process Straightforward and the problem Object – component and associated methods

Problem Solving Process

Problem Solving Process

Tips • Find out as much as you can • Reuse what has been

Tips • Find out as much as you can • Reuse what has been done before • Expect future reuse • Break complex problems into subproblems

Tips • Find out as much as you can • Reuse what has been

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

Tips • Find out as much as you can • Reuse what has been

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

Tips • Find out as much as you can • Reuse what has been

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

Tips • Find out as much as you can • Reuse what has been

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

Tips • Read – Problem solving texts • George Polya, How to Solve It;

Tips • Read – Problem solving texts • George Polya, How to Solve It; A New Aspect of Mathematical Method, Princeton Press, 1988 • Wayne Wickelgren, How to Solve Mathematical Problems, Dover Publications, 1995 • Paul Zeitz, The Art and Craft of Problem Solving, John Wiley, 1999 – Sociological examination of different problem solving styles • Sherry Turkle and Seymour Papert, Epistemological Pluralism: Styles and Voices Within the Computer Culture, Signs: A Journal of Women in Culture and Society, 1990

Today’s demotivators 70

Today’s demotivators 70