46
Introduction to Computer Science CS 21a: Introduction to Computing I First Semester, 2013-2014

Introduction to Computer Science

  • Upload
    jerod

  • View
    70

  • Download
    0

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Introduction to Computer Science

Introduction to Computer Science

CS 21a: Introduction to Computing I

First Semester, 2013-2014

Page 2: Introduction to Computer Science

Outline►Computer Science from a

Philosophical Standpoint►Computer Science from a Pragmatic

Standpoint►A Brief History of Computer Science

Page 3: Introduction to Computer Science

Computer Science from a Philosophical Standpoint

Page 4: Introduction to Computer Science

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

Page 5: Introduction to Computer Science

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

Page 6: Introduction to Computer Science

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.

Page 7: Introduction to Computer Science

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

Page 8: Introduction to Computer Science

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.

Page 9: Introduction to Computer Science

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

Page 10: Introduction to Computer Science

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.

Page 11: Introduction to Computer Science

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?

Page 12: Introduction to Computer Science

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.

Page 13: Introduction to Computer Science

Outline►Computer Science from a

Philosophical Standpoint►Computer Science from a

Pragmatic Standpoint►A Brief History of Computer Science

Page 14: Introduction to Computer Science

Computer Science from a

Pragmatic Standpoint

Page 15: Introduction to Computer Science

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.

Page 16: Introduction to Computer Science

How Does This Problem Solving Work Out?

►There are things that we’d like to have or do.►A house►A cake►Go to outer space

Page 17: Introduction to Computer Science

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.

Page 18: Introduction to Computer Science

How Does This Problem Solving Work Out?

►There are things that we already know how to do.►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.

Page 19: Introduction to Computer Science

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.

Page 20: Introduction to Computer Science

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.

Page 21: Introduction to Computer Science

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.

Page 22: Introduction to Computer Science

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.

Page 23: Introduction to Computer Science

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.

Page 24: Introduction to Computer Science

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.

Page 25: Introduction to Computer Science

Incidentally…►The word computer originally referred to a

human whose job it is was to do tedious calculations.

►Electronic computers were invented to eliminate slavery.►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

Page 26: Introduction to Computer Science

So, Can Computer Science Solve World Hunger?

►We’ll see.►The hidden question here is, “Are all

problems computational problems?”

Page 27: Introduction to Computer Science

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

Page 28: Introduction to Computer Science

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?

Page 29: Introduction to Computer Science

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.

Page 30: Introduction to Computer Science

Outline►Computer Science from a

Philosophical Standpoint►Computer Science from a Pragmatic

Standpoint►A Brief History of Computer

Science

Page 31: Introduction to Computer Science

A Brief History of Computer

Science

Page 32: Introduction to 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

Page 33: Introduction to Computer Science

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

Page 34: Introduction to Computer Science

Pre-modern Europe►Philosophical ideas

► 1232-1315: 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.

Page 35: Introduction to Computer Science

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.

Page 36: Introduction to Computer Science

Dawn of Modern Computer Science

►Theoretical Foundations►1931: 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.

Page 37: Introduction to Computer Science

Dawn of Modern Computer Science

►Theoretical Foundations► 1937: 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.

Page 38: Introduction to Computer Science

Dawn of Modern Computer Science

►Computers for Military Applications► 1941: Konrad Zuse builds the Z3, the first

programmable, fully-automatic, Turing-complete 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.

Page 39: Introduction to Computer Science

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

Page 40: Introduction to Computer Science

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

Page 41: Introduction to Computer Science

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.

Page 42: Introduction to Computer Science

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.

Page 43: Introduction to Computer Science

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

Page 44: Introduction to Computer Science

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

Page 45: Introduction to Computer Science

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 high-level goals into low-level primitives. How exactly does that work?

Page 46: Introduction to Computer Science

Recommended Reading►Chapters 1 and 2 (up to page 37

only) of Algorithmics – Spirit of Computing by Harel and Feldman