CS 101 Chapter 1: Background Aaron Bloomfield. Let’s begin Goal –Teach you how to program effectively Skills and information to be acquired –Mental model.

Slides:



Advertisements
Similar presentations
Introduction Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Advertisements

Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Chapter 1 An Overview of Computers and Programming Languages.
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Lecture 1: Overview of Computers & Programming
Overview of Programming and Problem Solving ROBERT REAVES.
Computers Are Your Future
CSCI 1412 Tutorial 1 Introduction to Hardware, Software Parminder Kang Home:
Chapter 1 - An Introduction to Computers and Problem Solving
Chapter 1: An Overview of Computers and Programming Languages J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program.
Chapter Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing Describe.
Chapter 1 Introduction to Object- Oriented Programming and Problem Solving.
1 Lecture 1  Getting ready to program  Hardware Model  Software Model  Programming Languages  The C Language  Software Engineering  Programming.
Computers: Tools for an Information Age
1 Programming & Programming Languages Overview l Machine operations and machine language. l Example of machine language. l Different types of processor.
1 Programming & Programming Languages Overview l Machine operations and machine language. l Example of machine language. l Different types of processor.
COMP 14: Intro. to Intro. to Programming May 23, 2000 Nick Vallidis.
INTRODUCTION TO JAVA PROGRAMMING Chapter 1. What is Computer Programming?
Copyright © 2001 by Wiley. All rights reserved. Chapter 1: Introduction to Programming and Visual Basic Computer Operations What is Programming? OOED Programming.
1 CS 101 / 101-E Aaron Bloomfield Chapter 1: Hardware.
Introduction. Let’s begin Goal –Teach you how to program effectively Skills and information to be acquired –Mental model of computer and network behavior.
CS102 Introduction to Computer Programming
Chapter 01 Nell Dale & John Lewis.
Powered by DeSiaMore1 Programming Concepts David T. Makota Department of Computing & Information Technology (CIT) The Institute of Finance Management Dar.
Chapter 1 An Overview of Computers and Programming Languages.
1 Lecture 2 : Computer System and Programming. Computer? a programmable machine that  Receives input  Stores and manipulates data  Provides output.
INTRODUCTION TO COMPUTING
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 1 Introduction to Computer Science.
1 TOPIC 1 INTRODUCTION TO COMPUTER SCIENCE AND PROGRAMMING Topic 1 Introduction to Computer Science and Programming Notes adapted from Introduction to.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
Java: Chapter 1 Computer Systems Computer Programming II.
CHAPTER 1 Overview of Programming and Problem Solving.
CHAPTER FOUR COMPUTER SOFTWARE.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Chapter 1 The Big Picture.
1 Overview of Programming and Problem Solving Chapter 1.
Introduction. CS 101 Instructors –Jim Cohoon Office –Olsson 221 –Hours: Monday 3:30 – 5:00, Tuesday 10:00 – 11:00 – id: –Aaron Bloomfield Office.
Chapter 1 Introduction to Computers and C++ Programming Goals: To introduce the fundamental hardware and software components of a computer system To introduce.
Java Programming, Second Edition Chapter One Creating Your First Java Program.
Chapter 1 Section 1.1 Introduction to Java Slides prepared by Rose Williams, Binghamton University Kenrick Mock, University of Alaska Anchorage.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Liang, Introduction to C++ Programming, (c) Chapter 1 Introduction to Computers, Programs, and C++
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.
1 Course Summary Fall 2005 CS 101 Aaron Bloomfield.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
Chapter One An Introduction to Programming and Visual Basic.
1 TOPIC 1 INTRODUCTION TO COMPUTER SCIENCE AND PROGRAMMING Topic 1 Introduction to Computer Science and Programming Notes adapted from Introduction to.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Programming in C++ Dale/Weems/Headington Chapter 1 Overview of Programming and Problem Solving.
Programming Fundamentals Lecture No. 2. Course Objectives Objectives of this course are three fold 1. To appreciate the need for a programming language.
Copyright 2007 John Wiley & Sons, Inc. Information Systems: Creating Business Value John Wiley & Sons, Inc. Mark Huber, Craig Piercy, and Patrick McKeown.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
CS 177 Recitation Week 1 – Intro to Java. Questions?
Chapter 1 An Overview of Computers and Programming Languages.
CS 101 Chapter 1: Background Aaron Bloomfield. 2 Let’s begin Goal Teach you how to program effectively Skills and information to be acquired What the.
INTRODUCTION TO COMPUTER PROGRAMMING(IT-303) Basics.
1 Chapter 1 Background Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Java Programming Fifth Edition Chapter 1 Creating Your First Java Classes.
Personal Computer (PC)  Computer advertisement specification Intel® Pentium 4 Processor at 3.06GHz with 512K cache 512MB DDR SDRAM 200GB ATA-100 Hard.
CSCI-235 Micro-Computer Applications
Introduction.
Introduction.
Java basics.
Introduction.
Chapter 1 Introduction(1.1)
Introduction to Computer Programming
CompSci 1: Principles of Computer Science Lecture 1 Course Overview
Introduction.
Presentation transcript:

CS 101 Chapter 1: Background Aaron Bloomfield

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… 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! 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 given the same input So how do we compute random numbers?

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

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

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

10 End of lecture on 24 August 2005

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: car radio removal

Example algorithm: Recipes

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

Bad algorithms: MapQuest directions Consider directions to get around grounds

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

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

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 blue? What about this? And this one? Definitely Also, yes: two correct results! Maybe (could be green) Definitely not

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

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 Input Devices Central Processing Unit Memory Output Devices

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 –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 Computer Organization 3.06 billion operations per second 512 million bytes of memory that can be transferred at double the normal rate A byte is 8 bits A bit is a 0 or a 1 Stores 200 billion bytes of data. You want high RPM and low seek time seconds is average 17” on the diagonal. Resolution up to 1,280 by 1,024 pixels Microprocessor for displaying images with 64 million bytes of memory. More memory supports more colors and higher resolution Reads DVDs 16 times faster than a basic DVD drive. Can hold up to 8 billion bytes of data Can read and write CDs. Can hold 650 million bytes of data Reads at 48 times faster and writes 24 times faster than a basic drive Can send or receive up to 56 thousand bits per second Computer operating system using a graphical interface Can send or receive data at two rates – 10 or 100 million bytes per second

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

Home network

Backbones

33 A bit of humor…

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 over the Internet POP –Exchanging 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 ENIAC (1945) –Programmed by plugging wires Binary – Assembly FORTRAN (1954)

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 –On or off, true or false, etc. A byte is 8 bits: – –As there are 8 bits per byte, each byte can hold 2 8 =256 values – = 74 All computing measurements are in terms of bytes

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 = 2 10 = 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)

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

A marketing trick This hard drive has 250,059,350,016 bytes –= Gigabytes –= Gibibytes Guess which one they use to advertise the drive?

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 Program to which computer can respond directly. Each instruction is a binary code that corresponds to a native instruction Symbolic language for coding machine language instructions Detailed knowledge of the machine is not required. Uses a vocabulary and structure closer to the problem being solved Java is a high-level programming language For program to be executed it must be translated

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 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 maybe five computers. Thomas Watson, IBM, 1943.

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."); } Three statements make up the action of method main() Method main() is part of class DisplayForecast 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().

Sample output

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

Bad commenting // Thomas J. Watson (February 17, 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."); }

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:

Java and the Internet

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, cost effective, adaptable, and reusable Goal –Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable Work correctly and not fail Goal –Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable Because of the long lifetime many people will be involved –Creation –Debugging –Maintenance –Enhancement Two-thirds of the cost is typically beyond creation Goal –Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable Cost to develop and maintain should not exceed expected benefit Goal –Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable Design software so that new features and capabilities can be added Goal –Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable Makes sense due to the great costs involved to have flexible components that can be used in other software

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

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

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 –An instance of a class with specific properties and attributes

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 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)? –Neat –Frontier of science –Profitable –Necessary –Quality of life

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

Problem Solving Process What is it? –Analysis –Design –Implementation –Testing –Analysis –Design –Implementation –Testing Determine the inputs, outputs, and other components of the problem Description should be sufficiently specific to allow you to solve the problem Describe the components and associated processes for solving the problem Straightforward and flexible Method – process Object – component and associated methods Develop solutions for the components and use those components to produce an overall solution Straightforward and flexible Test the components individually and collectively

Problem Solving Process

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 done before Expect future reuse Break complex problems into subproblems Find out what is known about the problem Talk to the presenter Determine what attempts have succeeded and what attempts have failed Research can require significant time and generate questions The effort is worthwhile because the result is a better understanding True understanding of the problem makes it easier to solve Consider Sketching a solution and then repeatedly refine its components until the entire process is specified

Tips Find out as much as you can Reuse what has been done before Expect future reuse Break complex problems into subproblems Your time is valuable Correctness is probably even more valuable Use existing infrastructure that is known to work Be open to indirect use of existing materials

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

70 Today’s demotivators