1. Introduction

advertisement
Introduction to
Computer Science
CS 21a: Introduction to Computing I
First Semester, 2013-2014
Outline
► Computer
Science from a
Philosophical Standpoint
► Computer Science from a Pragmatic
Standpoint
► A Brief History of Computer Science
Computer Science
from a
Philosophical
Standpoint
What Is Computer Science?
► It’s
not about computers.
► Any
more than astronomy is about
telescopes
► It’s
not a science (yet).
► In
the strict sense of developing a theory
and testing the theory with experiment
If Not A Science, Then What?
►A
kind of esoteric philosophy?
► Physics
is to matter as computer science is
to mind
► Think about the terms associated with
computer science:
►Information
►Memory
►Languages
If Not A Science, Then What?
►A
way of looking at the world?
► Objects
in the world have information, or
some state that can change over time.
► Objects in the world change their state by
doing something or by having something
done to them, or by going through an
algorithm.
If Not Computers, Then What?
► Data
and Algorithms
► Like
particles and physical laws in physics
► Notes and music theory in music
► Cells and biological processes in biology
► People and culture in anthropology
If Not Computers, Then What?
► Atoms
(quarks) are the stuff of the
universe. Data is the stuff of whatever it
is that CS studies.
► Physical laws determine how universes
unfold. Algorithms determine how
whatever it is that CS studies unfolds.
Whatever It Is That CS
Studies?
► It’s
a difficult question to answer,
because the field is relatively young.
► Preliminary Answer: Intelligent processes
and systems
So Does That Mean We Aren’t
Going to Study About Computers?
► No,
because the computers will be our
platform for studying these higher ideas.
► Computer programs will be the concrete
ground for the more abstract idea of an
algorithm.
Philosophical Questions For CS
► What
is a number? What do addition,
subtraction, multiplication, division mean?
Can all of mathematics be automated?
► What is language? How does a choice of
language determine the kinds of ideas that
can be easily expressed? How do intelligent
beings communicate with one another?
► Are there inherent limitations in the
processes of the universe? If so, what and
why?
Short Summary of What’s Been
Said So Far
► We’re
going to study computers and
programs, but ultimately, there are
things more abstract and meaningful that
computer science is all about – data and
algorithms.
Outline
► Computer
Science from a Philosophical
Standpoint
► Computer Science from a Pragmatic
Standpoint
► A Brief History of Computer Science
Computer Science
from a Pragmatic
Standpoint
What Is Computer Science?
►A
problem arises because there is a chasm
between what we desire and what is real.
► The “Eastern” way to solve problems is to
eliminate the desire.
► The “Western” way to solve problems is to
translate the desire into reality.
► Computer Science is a kind of “Western”
problem solving.
How Does This Problem Solving
Work Out?
► There
do.
►A
are things that we’d like to have or
house
► A cake
► Go to outer space
How Does This Problem Solving
Work Out?
► There
are things that we already have.
► Wood,
nails, steel, concrete, etc.
► Eggs, sugar, whipped cream, etc.
► Powerful engines, fuel, the escape velocity
for the earth, oxygen tanks, etc.
How Does This Problem Solving
Work Out?
► There
to do.
are things that we already know how
► Hammer
the nails into the wood, solder the
steel together, mix and pour concrete, etc.
► Beat eggs, measure a specific amount of
sugar, etc.
► Build aircraft, build suits that will allow
breathing in places that we can’t breathe, etc.
How Does This Problem Solving
Work Out?
► Problem
solving is about translating what
we don’t already have or know how to do
into what we already have and know how
to do.
How Does This Problem Solving
Work Out?
► Ultimately,
there are things that we
already inherently have or know how to
do, what nature provides us, or what we
call primitives.
► Problem solving, and the whole history of
technology is all about building more and
more complex structures from these
primitives.
How Is This Computer Science?
► It
doesn’t really need to be about
computers.
► But a lot of the high-paying problems we
have in the world right now are solvable
from a very specific set of primitives –
bits and their operations in a computer,
hence we’re stuck with the term.
How Is This Computer Science?
► And
it’s good that there’s an agreed upon
set of primitives.
► It’s
easier to apply algorithmic ideas from
one context to another.
► In fact, almost all computer scientists
believe that all solvable computational
problems can be solved by the basic set of
primitives that all computers use.
So What If There Were No
Computers?
► The
ideas of problem solving would still
be valid, but the computer allows us to
perform some primitives quickly, like
mathematical operations.
So What If There Were No
Computers?
► It’s
not that we don’t know how to do the
math, it’s just either too boring or we’re too
slow at it.
► Computers expand what we can feasibly do
by having faster versions of what we can
theoretically do.
► Computers allow us to actually perform
solutions to problems that we might be able
only to express but not actually realize.
Incidentally…
word computer originally referred to a
human whose job it is was to do tedious
calculations.
► Electronic computers were invented to
eliminate slavery.
► The
► Reduce
complicated but boring or
dehumanizing tasks into minute steps that
dumb, unconscious electrons can
“understand” and perform.
► So that humans can be free to do the more
“human” and creative things to do
So, Can Computer Science Solve
World Hunger?
► We’ll
see.
► The
hidden question here is, “Are all
problems computational problems?”
So Really The Computer
Revolution Is All About…
► Providing
a universal language for solving
problems, for expressing all the how-to’s
► Providing a universal machine that can
quickly translate the universal language into
action
► Expanding the kinds of solutions the
universal language can express
► Expanding the kinds of activities the universal
machine can perform
Practical Questions For CS
► How
can we make traffic systems more
efficient?
► How do I make a video game?
► How do I make a system that can easily
facilitate this company’s business
processes?
► How can I detect if this patient has
cancer or not?
Short Summary of What’s Been
Said So Far
► We’re
going to study computers and
programs, but ultimately, there is
something more important and is the
driving force of all technological
breakthroughs – problem solving.
Outline
► Computer
Science from a Philosophical
Standpoint
► Computer Science from a Pragmatic
Standpoint
► A Brief History of Computer Science
A Brief History of
Computer Science
Ancient Times
► Discovery
of numbers, early algorithms, simple
computing machines
3400 BC, Mesopotamia: First number system
► 2400 BC, Babylon: First computing tool – abacus
► 300 BC, Greece: Euclidean Algorithm
► 5th century BC, India: Pāṇini writes Aṣṭādhyāyī, a
technical account of the rules of Sanskrit grammar.
► 100 BC, Greece: First mechanial analog computer
for calculating astronomical positions – Antikythera
mechanism
►
Islamic-Arabic Golden Age
► More
abstract algorithms, first programmable
machines
825: Al-Khawarizmi describes the algorism, rules
for calculating with the Hindu-Arabic numerals
► 850: Al-Kindi develops algorithms for cryptanalysis
and frequency analysis
► 850: Banū Mūsā brothers write about automata
(self-operating machines or robots) in their Book of
►
Ingenious Devices
►
1206: Al-Jazari invents the castle clock, the first
programmable analog computer
Pre-modern Europe
► Philosophical
► 1232-1315:
ideas
Ramon Llull describes thought
experiments about systematically producing
new knowledge from simple and known
philosophical truths.
► 1703: Leibniz begins to develop binary logic.
► 1854: George Boole publishes his Boolean
algebra, the complete, mathematical system
for binary logic used in today’s computers.
Pre-Modern Europe
► Analog
precursors of today’s digital computers
1694: Leibniz completes the Stepped Reckoner, a
calculator for all four arithmetic operations.
► 1801: Joseph-Marie Jacquard invents a loom
programmable with the use of punched cards.
► 1837: Charles Babbage describes the Analytical
Engine, a general-purpose, programmable analog
computer.
► 1843: Ada Lovelace writes an algorithm to calculate
Bernoulli numbers for the Analytical Engine.
► 1880: Herman Hollerith uses punched cards to
store data.
►
Dawn of Modern Computer Science
► Theoretical
► 1931:
Foundations
Kurt Gödel publishes papers on the
Incompleteness Theorems.
► 1936: Alonzo Church and Alan Turing
independently give a formal definition of
an algorithm (Church-Turing thesis).
► 1937: Alan Turing creates the universal
Turing machine and lays the foundations
of theoretical computer science.
Dawn of Modern Computer Science
► Theoretical
► 1937:
Foundations
Claude Shannon showed how Boolean
logic can be implemented with certain
electrical circuits (now called logic gates).
► 1945: The idea of stored programs (Von
Neumann Architecture) is invented.
► 1948: Claude Shannon invents information
theory in his paper "A Mathematical Theory of
Communication.“
► 1948: Norbert Wiener invents cybernetics,
which influenced artificial intelligence.
Dawn of Modern Computer Science
► Computers
► 1941:
for Military Applications
Konrad Zuse builds the Z3, the first
programmable, fully-automatic, Turingcomplete computer
► 1942-1946: Richard Feynman supervises a
group of human computers for the Manhattan
project.
► 1946: Konrad Zuse creates the first high-level
programming language, Plankalkül
► 1946: The ENIAC is the first electronic,
general-purpose computer.
The Road to Ubiquitous Computing
► 1940’s
– The ACM is founded.
► 1950’s – Computers are commercialized.
Transistors replace vacuum tubes.
Programming begins to become as important
as computer hardware.
► 1960’s – Minicomputers replace mainframes.
The chip is invented. Computer science is
recognized as an independent academic
discipline. “Software Engineering” conference
highlights issue that programmers don’t know
theoretical CS. Time-sharing
Our Era: Computers Are
Everywhere
► 1970’s
– Pocket programmable
calculators, personal computers
► 1980’s – Windows, Mac, graphical user
interfaces, desktop publishing (office)
software
► 1990’s – Laptops, the Internet
► 2000’s – Proliferation of mobile
technology
Summary
► Computer
Science is not just about
computers. It studies something different
from everything else we’ve studied
before. We’re just not sure yet what to
call it, but there are words to express
aspects of this facet of reality we are
only beginning to understand.
Summary
► Computer
Science spans a great spectrum of
knowledge from philosophical ideas to
practical technologies.
► Data, algorithms, and problem solving form
the core of computer science.
► Two of the main driving forces behind
computer science are the desire to
understand intelligent processes, and the
need to solve real-world problems.
In Fact…
► Alan
Turing, considered the father of
modern computer science, did exactly
this.
► Thinking
and writing about artificial
intelligence on the one hand
► Building machines to crack the Nazi codes
during WWII on the other
Summary
► The
history of computing shows that there is
always something new and exciting each
time.
► Welcome, and I hope you become part of
this wonderful history.
► Whether
to answer some of the deep
questions
► Or to invent new and exciting technologies
► Or to pass down this tradition of our age
Next Time…
► The
Core Concepts – data and algorithms
► We
need to able to clearly reason about
intelligent processes and systems through
algorithms. How do we do this?
► Problem Solving is about translating highlevel goals into low-level primitives. How
exactly does that work?
Recommended Reading
► Chapters
1 and 2 (up to page 37 only) of
Algorithmics – Spirit of Computing by
Harel and Feldman
Download