CS 101-E: Introduction

43
1 CS 101-E: Introduction Aaron Bloomfield MEC 205 MEC 215 Clark G004 (really)

description

CS 101-E: Introduction. Aaron Bloomfield MEC 205 MEC 215 Clark G004 (really). Assumptions. The following is assumed for students in 101-E You have taken a course-equivalent in programming Thus, you know the basics of programming - PowerPoint PPT Presentation

Transcript of CS 101-E: Introduction

Page 1: CS 101-E: Introduction

1

CS 101-E: Introduction

Aaron Bloomfield

MEC 205MEC 215

Clark G004 (really)

Page 2: CS 101-E: Introduction

2

Assumptions The following is assumed for students in 101-E

You have taken a course-equivalent in programming Thus, you know the basics of programming

You did not get a 4 or a 5 on the AP computer science exam (AB level)

Page 3: CS 101-E: Introduction

3

Differences with 101 Labs must be done by all 101-E students on their own time

If you miss more than 2, you are subject to failure Labs due 8:30 p.m. on Sunday Lab session for 101-E students Sunday at 7 p.m.

Pace through the textbook is the same We’ll go into more detail, though Today’s class will be a high-level overview

Page 4: CS 101-E: Introduction

4

A bit of humor: Review of last time

Page 5: CS 101-E: Introduction

5

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)

= Kibi (Ki)= Mebi (Mi)= Gibi (Gi)= Tebi (Ti)

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

Page 6: CS 101-E: Introduction

6

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?

Page 7: CS 101-E: Introduction

7

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 instructionis a binary code that

corresponds to anative instruction

Symbolic languagefor coding machine

language instructions

Detailed knowledge ofthe machine is notrequired. Uses avocabulary and

structure closer to theproblem being solved

Java is a high-levelprogramming

language

For program to beexecuted it must be

translated

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

Page 8: CS 101-E: Introduction

8

A bit of humor: Input methods

Page 9: CS 101-E: Introduction

9

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

Page 10: CS 101-E: Introduction

10

Java translation Two-step process

First step Translation from Java to bytecodes

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

Page 11: CS 101-E: Introduction

11

Task Display the forecast

I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943.

Page 12: CS 101-E: Introduction

12

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 behaviorAn application program is required to have a public static void method named main().

Page 13: CS 101-E: Introduction

13

Sample output

Page 14: CS 101-E: Introduction

14

Java Documentation Familiarize yourself with the Java documentation

It will save you lots of time!

Page 15: CS 101-E: Introduction

15

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 16: CS 101-E: Introduction

16

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 17: CS 101-E: Introduction

17

Java and the Internet

I think ...

JVMJava

Compiler

DisplayForecast.java

DisplayForecast.class DisplayForecast.class

Modem Modem

Your machine Your friend's machine

Internet

Page 18: CS 101-E: Introduction

18

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

it easier to use Rise of wizards

Page 19: CS 101-E: Introduction

19

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

Page 20: CS 101-E: Introduction

20

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

Separate components into external and internal

aspects

Abstraction

Encapsulation

Modularity

Hierarchy

Construct a system fromcomponents and packages

Abstraction

Encapsulation

Modularity

Hierarchy

Ranking or ordering of objects

Page 21: CS 101-E: Introduction

21

A bit of humor:1989 ComputerAdvertisement

Guess the price!

Page 22: CS 101-E: Introduction

22

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

Page 23: CS 101-E: Introduction

23

Programming Class

Term for a type of software object

Object An instance of a class with specific properties and

attributes

Page 24: CS 101-E: Introduction

24

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

Page 25: CS 101-E: Introduction

25

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

Page 26: CS 101-E: Introduction

26

Problem Solving Why care about computer-

based problemsolving (i.e., programming)?

Neat Frontier of science Profitable Necessary Quality of life

Page 27: CS 101-E: Introduction

27

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

Page 28: CS 101-E: Introduction

28

Problem Solving Process What is it?

Page 29: CS 101-E: Introduction

29

Problem Solving Process What is it?

Analysis Design Implementation Testing

Page 30: CS 101-E: Introduction

30

Problem Solving Process What is it?

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

Page 31: CS 101-E: Introduction

31

Problem Solving Process What is it?

Analysis Design Implementation Testing

Describe the components and associated processes for solving the problem

Straightforward and flexible

Method – process

Object – component and associated methods

Page 32: CS 101-E: Introduction

32

Problem Solving Process What is it?

Analysis Design Implementation Testing

Develop solutions for the components and use those components to produce an overall solution

Straightforward and flexible

Page 33: CS 101-E: Introduction

33

Problem Solving Process What is it?

Analysis Design Implementation Testing

Test the components individually and collectively

Page 34: CS 101-E: Introduction

34

Problem Solving Process

Testing

Design

Analysis

Implementation

Determineproblem features

Describe objectsand methods

Produce theclasses and code

Examine forcorrectness

Rethink asappropriate

Page 35: CS 101-E: Introduction

35

Problem Solving Methodologies How to do it?

Depends upon your mode of thinking

Bricolage approach

Planned approach

Page 36: CS 101-E: Introduction

36

Problem Solving Methodologies How to do it?

Depends upon your mode of thinking

Bricolage approach

Planned approach

Problem features and aspects are repeatedly tried and manipulated according to your personal way of organizing information

A mistake is not an error, but a correction waiting to be made in the natural course of solving the problem

Page 37: CS 101-E: Introduction

37

Problem Solving Methodologies How to do it?

Depends upon your mode of thinking

Bricolage approach

Planned approach

Uses logic, formalism, and engineering coupled with a structured methodology

Inherent structure of the planned approach offers makes it easier to show correctness of solution

Dominant method in terms of teaching

Page 38: CS 101-E: Introduction

38

Tips Find out as much as you can

Reuse what has been done before

Expect future reuse

Break complex problems into subproblems

Page 39: CS 101-E: Introduction

39

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

Page 40: CS 101-E: Introduction

40

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

Page 41: CS 101-E: Introduction

41

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

Page 42: CS 101-E: Introduction

42

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

Page 43: CS 101-E: Introduction

43

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