Transcript Chapter01

A long time ago, in a galaxy
far, far away….
1-1
Chapter I
THE BIG PICTURE
The Empire is bad, mmkay? But
we’re not here to talk about that.
We’re here to learn computer
science! So lets get started!
1-2
Chapter Goals
• Abstraction
• Layers of a computer system
• History
• Future Trends
1-3
25
Chapter Goals
• Changing role of the user
• Computing as a tool
• Computing as a discipline
• Computational Thinking (CT) as a universal skill
• Skills for Computer Professionals
1-4
25
COMPLEXITY
and
ABSTRACTION
1-5
Our First Question?
How do we handle complexity?
Answer:
• We Slice it up!
• This is called “ABSTRACTION”
• Aka “Decomposition”, “Layering”,
“Encapsulation”, “Data Hiding”
1-6
Ways to Slice Stuff
1-7
MORE Ways to Slice Stuff
Raise your pencil
if you like cake
1-8
Slicing the Computing Onion
• Computers are so complex we need to “chop
them up” to understand them
• We slice them into layers
• This is called “abstraction”
1-9
2
Slicing the Onion
• We can (and will) slice them in many
different ways
• For example: One way is to slice them into
– Hardware
– Software
1-10
2
Example: 2 Easy Slices
Hardware and Software
Hardware The physical elements of a computing
system (printer, circuit boards, wires,
keyboard…)
Software The programs that provide the
instructions for a computer to execute
1-11
3
Is it That Easy?
But this is college! We can be more
sophisticated slicers!
Hardware and Software are nice abstractions,
but too simplistic
We will continue this slicing process all
semester, with increasing sophistication
1-12
3
Layers of a Computing System
Communication
Application
Operating System
Programming
Hardware
Information
1-13
4
Abstraction
• This is a key concept. Abstraction will
reappear throughout the text – be sure to
understand it!
• A mental model that hides complex details
• A way to group many things into one thing
1-14
5
Abstraction
• A tool to help humans handle complexity
• A method to build (and understand) large
systems that are built from layers
• Each Onion Layer is an abstraction
1-15
5
Our Second Question?
• So…. What is a GOOD abstraction??
CHARACTERISTICS OF A GOOD ABSTRACTION:
• Is simple to understand from the outside
• Has a simple and well defined interface
• Is self-contained and independent
1-16
I
n
t
e
r
f
a
c
e
Some Abstraction
“Logical” Layer (user POV)
“Physical” Layer (creator POV)
1-17
Can build complex systems
1-18
HISTORY
1-19
History
• Another way to slice the onion:
chronologically!
• Many strange devices have
existed over history…
• Many people have contributed…
What was the
enigma machine?
1-20
Early History of Computing
• Joseph Jacquard’s Loom
– Used punchcards
1-21
Early History of Computing
• Charles Babbage’s
Analytical Engine
• Ada Lovelace – “first
programmer”
• Only recently have
attempts been made to
actually fabricate
Babbage’s design
1-22
Birth of “Modern” Computing
World War Two
Alan Turing
WW2 cryptographer
Turing machine
Turing AI test
Harvard Mark I, ENIAC, UNIVAC I
Early computers launch new era in
mathematics, physics, engineering and
economics
1-23
7
IMPORTANT
HARDWARE
GENERATIONS
1-24
First Generation Hardware
(1951-1959)
Vacuum Tubes
A type of “automatic” switch, either ON or
OFF
Large, not very reliable, generated a lot of
heat
1-25
8
Second Generation Hardware
(1959-1965)
Transistor
Replaced vacuum tube, fast, small, durable,
cheap
Still, basically a switch: Either ON or OFF
1-26
9
Third Generation Hardware
(1965-1971)
Integrated Circuits
Contain MILLIONS of transistors
Smaller, cheaper, faster, more
reliable.
Moore’s Law:
Number of transistors on a chip
doubles every 12 to 18 months –
Basically why we are all here in
this room today.
1-27
10
IMPORTANT
SOFTWARE
GENERATIONS
1-28
First Generation Software
(1951-1959)
Machine Language
Computer programs were written in binary (1s and 0s)
Assembly Languages Translators
Programs were written in assembly language, then
translated into machine language
1-29
13
Second Generation
Software (1959-1965)
High Level Languages Introduced
Use English-like statements and make programming
easier.
Fortran, COBOL, ADA, Lisp are examples.
High-Level
Languages
Assembly
Language
Machine
Languag
e
1-30
14
Third Generation Software
(1965-1971)
• Separation of Types of Programs Begins
• Programs Written for Non-Programmers
– Systems Software
• utility programs
• language translators
• The operating system
– Applications Software
• Usually application-specific at that time. Written to perform a
specific task.
• Example: Calculate monthly interest on all customers bank
accounts
1-31
15
Third Generation Software
(1965-1971)
Application Package
Systems Software
High-Level Languages
Assembly Language
Machine Language
1-32
16
USERS
1-33
Another Way to Slice the Onion
• Computing as a Tool
•
What can a computer help me do?
• Computing as a Discipline
•
What can be (efficiently) automated?
1-34
Computing as a Tool – Key Issues
•
What can a computer help me do?
•
Main Concerns
1.
2.
3.
4.
What tasks can be done with a computer?
What SW tools are available to do this task?
Can I write a program to do this?
Can I get someone else to write a program for this?
1-35
21
Computing as a DISCIPLINE
•
What can be (efficiently) automated?
•
Four Necessary Skills
1.
2.
3.
4.
Algorithmic Thinking
Representation
Programming
(Systems) Design
1-36
21
More Computing as a TOOL
• Computing is UBIQUITOUS
• Computing affects EVERY FIELD
• Computing affects EVERY area of
human endevour
1-37
MORE Computing as a TOOL
• This Ubiquity requires:
– EVERYONE must have some fundamental
computing knowledge
– Computing is the “Forth R”
– This concept is sometimes called
“Computational Thinking”
1-38
MORE Computing as a Discipline
•Modern Computing is Only 60
years old
•It is still rapidly evolving
•Computing is a HUGE and
DIVERSE field
1-39
22
Computing as a Discipline
“The Identity Crisis”
Another Question
What is Computer Science?
Is Computer Science a mathematical,
scientific, or engineering discipline?
What about Information Technology, MIS,
CIS, and related computer fields???
1-40
22
Computing Education Levels
A.S. Degree and Certificate Level (typically)
•
•
•
•
Networks
Web
Database
Programming
B.S. Degree and above (typically)
• Computer Science
• Computer Engineering
• Information Technology (Emerging)
1-41
Some Sub-Areas of Computer Science
•
•
•
•
•
•
•
Algorithms and Data Structures
Programming Languages
Hardware Architecture
Software Architecture
Operating Systems
Software Methodology and Engineering
Human-Computer Communication
1-42
23
Application Areas of Computer Science
•
•
•
•
•
•
•
Networks and Distributed Systems
Numerical and Symbolic Computation
Databases and Information Retrieval
Artificial Intelligence and Robotics
Graphics
Organizational Informatics
Bioinformatics
1-43
24
ONE MORE way to look at
Computing
• Using Tools
– Driving a car – using a computer
M
O
R
E
• Maintaining Tools
– Fixing a car – fixing/modifying computer
systems
C
T
• Creating Tools
– Developing NEW SW and HW tools
1-44