43
Introduction to Computer Science

Introduction to Computer Science

Embed Size (px)

DESCRIPTION

Introduction to Computer Science. Overview of Discussion. What is computer science? What is a computer? What can computers do? How do computers solve problems? What is computer science? Who invented computers? Conceptual computers Computing devices. Learning Objectives. - PowerPoint PPT Presentation

Citation preview

Page 1: Introduction to  Computer Science

Introduction to Computer Science

Page 2: Introduction to  Computer Science

Overview of Discussion

What is computer science? What is a computer? What can computers do? How do computers solve problems? What is computer science?

Who invented computers? Conceptual computers Computing devices

Page 3: Introduction to  Computer Science

Learning Objectives

Define and use terminology Examples: computer, computer science,

algorithm, specification, correctness, efficiency, von Neumann machine

Distinguish between algorithms and non-algorithms

Know something about the history of computers (up to 1950)

Page 4: Introduction to  Computer Science

Which one is the computer?

Rock Calculator Television

Modern Airplane Washing Machine Computer Workstation

Page 5: Introduction to  Computer Science

Is it a Computer?

What questions would you ask?

What experiments would you run?

Page 6: Introduction to  Computer Science

Is a rockrock a computer?

Does not act or process

Takes no input and produces no output

Computers must be able to handle input and output

Page 7: Introduction to  Computer Science

Is a washing machinewashing machine a computer?

Input: dirty clothes Output: clean clothes Does not handle

information

Computers input and output information

Page 8: Introduction to  Computer Science

Is a television settelevision set a computer?

Input: information from cables or radio waves

Output: information as sound and picture

Does not process information

Computers process information by computing new results and answering queries

Page 9: Introduction to  Computer Science

Is a modern airplanemodern airplane a computer?

Input: information from radio waves

Output: manipulations to the airplane

Can only handle specific information necessary for flight control

Computers are general purpose because they can perform many different tasks

Page 10: Introduction to  Computer Science

Is an ordinaryordinary calculatorcalculator a computer?

Input: numbers and mathematical operations

Output: answer Handles any numeric task Cannot remember which

buttons are pressed

Computers are programmable so they can remember sequences of operations

Page 11: Introduction to  Computer Science

Definition of a Computer

a general purpose, programmable, information processor with input and output

Page 12: Introduction to  Computer Science

Computing Agents

Definition of computers does not cover all that computer scientists study

Broader class of objects and methods – computing agents

Have some or all of the characteristics of a computer

Page 13: Introduction to  Computer Science

Specialized Computing Devices and Information Appliances Devices limited by set of operations or

programmability Calculators limited to operations described by

their buttons Global Positioning System (GPS) calculates

latitude and longitude from satellite signals Cell phone allows one to surf the web

Information appliances – performs a single job well

Page 14: Introduction to  Computer Science

Embedded computers and robots Machines with full-fledged computers inside

Washing machines, airplanes, ATMs, etc. Such machines require highly reliable,

predictable computer programs All physical mechanisms controlled by

computers are robotic devices Restrict definition to machines that are general

purpose and programmable Robotic arm or cart

Page 15: Introduction to  Computer Science

Natural computing agents

Living organisms process information in their efforts to eat, survive, and reproduce 1940s study showed frogs collect less visual

information than people Identify rapidly moving objects as food, slowly moving

objects as predators Study physical events in terms of information they

contain and process Chemical reactions, crystal formations, plant growth, etc.

Page 16: Introduction to  Computer Science

What is a computer?

Definition of a computer is narrow Definition of computing agent is broad Although many computer scientists focus on

the computer, some computer scientists deal with computing agents

Page 17: Introduction to  Computer Science

What can computers do – today? Business productivity managers Personal information managers Spreadsheets Database software Desktop publishing Multimedia encyclopedias Simulate the physical world Produce a music video

Page 18: Introduction to  Computer Science

What might computers do – tomorrow? Diagnose diseases

MYCIN captures medical knowledge in rules that allowed a computer to identify an ailment based on symptoms

Control robots that walk, talk, and learn CMU created a program that drove a van from

Pittsburgh to D.C. using cameras for eyes Compose music and create art

Page 19: Introduction to  Computer Science

How do computers solve problems? Humans deconstruct problems into small

operations that a computer can carry out Writing an algorithm

Solve a problem by computer requires State the problem clearly in a problem statement Solve the problem with an algorithm that gives

clear instructions Use a computing agent to carry out the

instructions

Page 20: Introduction to  Computer Science

Stating the problem clearly

Describes what to do, not how to do it How do I get from Timonium Campus to the

Beltway? Solve general classes of problems

How do I get from point A in Timonium to point B? What is the square root of y?

Page 21: Introduction to  Computer Science

Specifying a problem

Clear problem statement is called the specification What information can we use as input What the output, or solution, to our problem

should look like Specification for the square root problem

Input: A positive number y > 0 Output: A positive number x such that x2 = y

Make sure specification is not ambiguous

Page 22: Introduction to  Computer Science

Solving the problem using an Algorithm Algorithm – a clear sequence of instructions

for performing a task a well-ordered sequence of well-defined, feasible operations that takes finite time to carry out

Page 23: Introduction to  Computer Science

Finding the square root to the nearest tenth For this example we are interested in the square

root of 551. Find the two integers between which √55 lies

Do this by starting at 0 and continuing up through the integers until you find an integer whose square is less than 55 and the next integer has a square larger than 55

2. Find the first estimate by averaging the two integers3. Divided 55 by the estimate. Compute it to one more

place than you want in the final answer4. Average the estimate and the result of step 35. Repeat steps 3 and 4 until the tenth digit does not

change

Page 24: Introduction to  Computer Science

Almost Algorithms

To shampoo your hair1. Rinse

2. Lather

3. Repeat To set the time on the

VCR1. Open the front panel

2. Push the button

3. Set the hours, then the minutes

To write the Great American Novel

1. Get paper and pencil

2. Sit down

3. Write word on paper

4. If novel is great, quit. Otherwise, go back to step 3.

Page 25: Introduction to  Computer Science

Using the computing agent

The square root algorithm is only an algorithm for an agent that understands English and can perform arithmetic

Requirements imposed by the computing agent Algorithm is in a language the computing agent

understands Algorithm uses primitive operations that the agent

can carry out

Page 26: Introduction to  Computer Science

Necessity of artificial languages Problems with natural languages (like

English) Flexible Often ambiguous

Computers use artificial languages with precise meanings mathematical equations, music notation,

programming languages Programming languages define primitive

operations computing agents understand

Page 27: Introduction to  Computer Science

What is computer science?

The study of computers The study of algorithmic processes including

their Theory Analysis Design Efficiency Implementation Application

Page 28: Introduction to  Computer Science

Who invented computers?

Computer science has roots in two fields Mathematics

Alan Turing and the Turing machine (1930s) Developed theories with paper and pencil about how to

perform computations by hand Engineering

John von Neumann and the von Neumann machine (1940s)

Showed how to build physical computers out of electronic circuitry

Page 29: Introduction to  Computer Science

Mathematical Roots

Leibniz’s Dream (1600s) Can we find a universal language for

mathematical algorithms that will let us describe and solve any problem? Reduce all reasoning to a fixed set of basic rules Determine truth or falsity of sentences by fixed rules for

manipulating sentences

George Boole (1800s) Introduces binary notation of calculation

Computers use binary system for logic and arithmetic

Page 30: Introduction to  Computer Science

More on Theory

David Hilbert (1928) Challenges the mathematical community to find

an infallible, mechanical method for constructing and checking truth of mathematical statements Interested in an algorithm

Alonzo Church, Alan Turing, and Kurt Gödel construct arguments that there is no solution to Hilbert’s Challenge Turing builds a conceptual computer for his

argument

Page 31: Introduction to  Computer Science

The Turing Machine and the Church-Turing Thesis Turing Machine

Machine with a finite set of rules and an infinite amount of “scratch paper” for computation No one has designed a physical computer that can do

more than a Turing machine Machine could not solve Hilbert’s problem

Church-Turning Thesis The Turing Machine captures what we mean by

computational systems Is as powerful an any other mechanical computing

agent

Page 32: Introduction to  Computer Science

Engineering Roots

First step development of calculators Abacus – developed 5000 years ago in the Middle

East Pascaline – first mechanical calculator using

gears for calculation (1642) Charles Babbage’s Difference Engine –

conceptual design that used hundreds of gears to compute mathematical functions (1820s)

Page 33: Introduction to  Computer Science

Electronic Circuits

Telegraph – uses electricity to convey letters and transmit information quickly (1844)

Hollerith Tabulating Machine – Uses electricity and punch cards to calculate the US census (1890)

Z2 – used circuitry to compute arithmetic operations (1930s)

Page 34: Introduction to  Computer Science

Programmed Devices

Jacquard Loom – weaves cloth using a pattern specified using punch cards (1801)

The Analytic Engine – conceptual design for a machine consisting of a Mill, Store, Printer, and Readers Led Ada Lovelace to define programming concepts such as

the subroutine ENIAC – one of the first programmable electronic

computers (1945) Programmed by routing cables and flipping switches

Page 35: Introduction to  Computer Science

von Neumann Machine

Store programs in electronic memory along side the data (1943) Move and manipulate a program like data Enabled high-level programming languages

Input Central ProcessingUnit (CPU)

Memory

Output

Page 36: Introduction to  Computer Science

Machine Languages

Only language computers directly understand “Natural language” of computer Defined by hardware design

Machine-dependent Generally consist of strings of numbers

Ultimately 0s and 1s Instruct computers to perform elementary operations

One at a time Cumbersome for humans Example:

+1300042774+1400593419+1200274027

Page 37: Introduction to  Computer Science

Assembly Languages

English-like abbreviations representing elementary computer operations

Clearer to humans Incomprehensible to computers

Translator programs (assemblers) Convert to machine language

Example: LOAD BASEPAYADD OVERPAYSTORE GROSSPAY

Page 38: Introduction to  Computer Science

High-level Languages

Similar to everyday English, use common mathematical notations

Single statements accomplish substantial tasks Assembly language requires many instructions to accomplish

simple tasks Translator programs (compilers)

Convert to assembly language Interpreter programs

Directly execute high-level language programs Example:

grossPay = basePay + overTimePay

Page 39: Introduction to  Computer Science

Programming Approaches

Structured programming (1960s) Disciplined approach to writing programs Clear, easy to test and debug, and easy to modify Focus on what the program does

Object Oriented programming Object is an entity characterized by a state and a

behavior state is encoded in the computer program as data behavior is encoded as methods

Page 40: Introduction to  Computer Science

Objects Reusable software components that model real world

items Meaningful software units

Date objects, time objects, paycheck objects, invoice objects, audio objects, video objects, file objects, record objects, etc.

Any noun can be represented as an object More understandable, better organized and easier to

maintain than structured programming Favor modularity

Software reuse Libraries

Page 41: Introduction to  Computer Science

C++

C++ programs Built from pieces called classes and functions

C++ standard library Rich collections of existing classes and functions

“Building block approach” to creating programs “Software reuse”

Page 42: Introduction to  Computer Science

Basics of a Typical C++ Environment C++ systems

Program-development environment Language C++ Standard Library

Page 43: Introduction to  Computer Science

Basics of a Typical C++ EnvironmentPhases of C++ Programs:

1. Edit

2. Preprocess

3. Compile

4. Link

5. Load

6. Execute

Loader

Program is created inthe editor and storedon disk.

Preprocessor programprocesses the code.

Loader puts programin memory.

CPU takes eachinstruction andexecutes it, possiblystoring new datavalues as the programexecutes.

CompilerCompiler createsobject code and storesit on disk.

Linker links the objectcode with the libraries,creates a.out andstores it on disk

Editor

Preprocessor

Linker

 CPU

.

.

.

.

.

.

.

.

.

.

.

.

Disk

Disk

Disk

Disk

Disk

Edit

Compile

Run

Make

PrimaryMemory

PrimaryMemory