Title: Big Ideas in Computer Science
1Big Ideas in Computer Science
- Mathematics is the Queen of the Sciences
- Carl Friedrich Gauss
- What is Computer Science?
- Why study it, what is it, why is it interesting
(or not)? - Historically
- What can we program, what can we program
efficiently - Present
- Lots of data, lots of connectivity, lots of
inferences - Future
- Where do we go from here?
2What is Computer Science at Duke?
- What we tell you it is
- A bunch of courses useful in some majors
- What you want it to be or imagine it to be
- Independent study, new courses, interdepartmental
major - What will it be in one year or two?
- New courses, new professors, new majors,
- What is it outside of Duke?
- Similar but different!
3Scientists and Engineers
- Why is Programming Fun?
- First is the sheer joy of making things
- Second is the pleasure of making things that are
useful - Third is the fascination of fashioning complex
puzzle-like objects of interlocking moving parts - Fourth is the joy of always learning
- Finally, there is the delight of working in such
a tractable medium. The programmer, like the
poet, works only slightly removed from pure
thought-stuff.
- Scientists build to learn, engineers learn to
build - Fred Brooks
4What is Computer Science?
- What is it that distinguishes it from the
separate subjects with which it is related? What
is the linking thread which gathers these
disparate branches into a single discipline? My
answer to these questions is simple --- it is the
art of programming a computer. It is the art of
designing efficient and elegant methods of
getting a computer to solve problems, theoretical
or practical, small or large, simple or complex.
C.A.R. (Tony) Hoare
5What is Computer Science?
- Computer science is no more about computers than
astronomy is about telescopes. - Edsger Dijkstra
- Computer science is not as old as physics it
lags by a couple of hundred years. However, this
does not mean that there is significantly less on
the computer scientist's plate than on the
physicist's younger it may be, but it has had a
far more intense upbringing! - Richard Feyneman
-
- http//www.wordiq.com
6What is Computer Science?
- What does a computer scientist do?
- What does a programmer do?
- What does a systems administrator do?
- What do you want to do?
7What can be programmed?
- What class of problems can be solved?
- G5, 1000Mhz Pentium III, Cray, pencil?
- Alan Turing proved some things, hypothesized
others - Halting problem, Church-Turing thesis
- What class of problems can be solved efficiently?
- Problems with no practical solution
- What does practical mean?
- Problems for which we cant find a practical
solution - Solving one solves them all
- Would you rather be rich or famous?
8Classes of Problems
Approximable
Easy
Impossible
Hard
Unknown
9What Computers Cant Do?
- Algorithms, Distributed Systems, Networks,
Bioinformatics, Graphics, Software Design,
Probability, Modeling, Artificial Intelligence,
Architecture, Programming, Statistics, Databases,
Linear Algebra, Scientific Computing
10Schedule students, minimize conflicts
I cant write this program because Im too dumb
- Given student requests, available teachers
- write a program that schedules classes
- Minimize conflicts
- Add a GUI too
- Web interface
-
11One better scenario
I cant write this program because its provably
impossible
12Another possible scenario
I cant write this program but neither can all
these famous people
13Entscheidungsproblem
- What can we program?
- What can't we program?
- Can we write a program that will determine if any
program P will halt when run on input S? - Input to halt P and S
- Output yes/no halts
14The halting problem writing doesHalt
- def doesHalt(progName, progInput)
- if progName halts on progInput return true
- else return false
- real login hidden (patented or trade-secret?)
- Python IDE is a program that reads other programs
- Can a word counting program count its own words?
- The doesHalt method might simulate, analyze,
- One program/function that works for any
program/input
15How to tell if Foo stops on 123 456
- def easy(progName, progInput)
- if doesHalt(Foo, 123 456)
- print "halts"
- else
- print "does NOT halt
- Can user enter name of program? Enter the input?
- Is there a problem with this program?
16Consider the program confuse.py
- def confuse(progName, progInput)
- if doesHalt(progName, progInput)
- while(true)
- loop forever
- else
- return "does not halt!"
- We want to show writing doesHalt is impossible
- Proof by contradiction
- Assume possible, show impossible situation
results - Can a program read a program? Itself?
17Can we write confuse.py?
- Legal if doesHalt exists
- What have we assumed?
- What are consequences of running confuse on
itself? - Trouble?
confuse
if doesHalt(..,..) loop else exit
18What's a meta catalog? Top 10 sites?
- Consider a website of interesting sites
- Does the website list itself? Is this a problem?
- Consider a website that lists every useless
website - Would this be a useful resource?
- Does the website list itself? JuicyCampus?
- What about a site of all the sites that list
themselves? - Site of all sites that don't list themselves?
nolist.com - http//www.kottke.org/06/11/delicious-will-eat-its
elf
19(No Transcript)
20Not impossible, but impractical
- Towers of Hanoi
- How long to move n disks?
- What combination of switches turns the light on?
- Try all combinations, how many are there?
- Is there a better way?
21Travelling Salesperson
- Visit every city exactly once
- Minimize cost of travel or distance
- Is there a tour for under 2,000 ? less than
6,000 miles? - Is close good enough?
- Within 10 of optimal
- Within 50 of optimal
-
Try all paths, from every starting point -- how
long does this take? a, b, c, d, e, f, g b, a,
c, d, e, f, g ...
22http//xkcd.com/399/
23Are hard problems easy?
- P easy problems, NP hard problems
- P means solvable in polynomial time
- Difference between N, N2, N10 ?
- NP means non-deterministic, polynomial time
- guess a solution and verify it efficiently
- Question P NP ?
- if yes, a whole class of difficult problems ,
the NP-complete problems, can be solved
efficiently - if no, none of the hard problems can be solved
efficiently - showing the first problem was NP complete was an
exercise in intellectual bootstrapping,
satisfiability/Cook/(1971)
24Theory and Practice
- Number theory pure mathematics
- Whats a prime number?
- How many are there?
- How many numbers?
- Computer Science
- Primality is easy
- Yes or no
- Factoring is hard
- What are the factors?
- Encryption is possible
top secret
public-key cryptography
randomized primality testing
25In Re Boucher 2007 WL 4246473
314983
26US Patent 5,990,495
- Whats a patent for?
- How long does it last?
- What can you do if patent violated?
- Do you play guitar hero?
27Photomosaic, us patent 6,137,498
- http//www.flickr.com/photos/tags/macosaix/
- http//en.wikipedia.org/wiki/Photographic_mosaic
- Drug patents?
- Gene patents?
28Issues in Voting
As you have likely read in the news media,
certain New Jersey election officials have stated
that they plan to send to you one or more Sequoia
Advantage voting machines for analysis. I want to
make you aware that if the County does so, it
violates their established Sequoia licensing
Agreement for use of the voting system.
- ender Smith, Ed address redacted_at_sequoiavote.co
m - To felten_at_cs.princeton.edu, appel_at_princeton.edu
- Subject Sequoia Advantage voting machines from
New Jersey - Date Fri, Mar 14, 2008 at 616 PM
- Dear Professors Felten and Appel
- As you have likely read in the news media,
certain New Jersey election officials have stated
that they plan to send to you one or more Sequoia
Advantage voting machines for analysis. I want to
make you aware that if the County does so, it
violates their established Sequoia licensing
Agreement for use of the voting system. Sequoia
has also retained counsel to stop any
infringement of our intellectual properties,
including any non-compliant analysis. We will
also take appropriate steps to protect against
any publication of Sequoia software, its
behavior, reports regarding same or any other
infringement of our intellectual property. - Very truly yours,
- Edwin Smith
- VP, Compliance/Quality/Certification
- Sequoia Voting Systems
We will also take appropriate steps to protect
against any publication of Sequoia software, its
behavior, reports regarding same or any other
infringement of our intellectual property.
www.freedom-to-tinker.com
29Computer Science in a Nutshell