Computer Science Prof. Bill Pugh Dept. of Computer Science

advertisement
Computer Science
Prof. Bill Pugh
Dept. of Computer Science
Developing software vs.
programming
• As we move forward, writing software is
looking less and less like programming
• In some ways, harder
– need to understand how to build secure,
concurrent, distributed systems that scale to
millions of users and tolerate failure
• In others, easier
– http://appinventor.googlelabs.com/about/
What is computer science?
• Only kind of a science, only partially about
computers (or programming)
• A combination of math, engineering, art,
architecture, science and philosophy
• Understanding and solving problems in an
abstract world, and connecting that to real
world needs
Be a rock star
• In computing, an individual or small team can
develop a vision, prototype it, refine it, get
feedback on it, and get it into the hands of
hundreds, thousands or millions of people
– Even in corporations and large software projects,
individuals or small teams have their
responsibilities, and can see their vision become
reality
• Perhaps, one of the fields where this is easiest
Computing is everywhere
• We're all aware of the huge role of gadgets and
the Internet in our lives
• But what about other fields?
–
–
–
–
–
–
–
–
aerospace
engineering
finance
biology and genetics
defense
movie making
medicine
physics
Large Hadron Collider
• CERN launched the largest computing grid in
the world which is destined to analyze the
data coming from world’s biggest particle
accelerator, the Large Hadron Collider (LHC).
The computing grid consists of more than 140
computers centers from around the world in
order to be capable to analyze 15 million GB
of LHC’s data annually (40 thousand GB per
day)
Need Computational Thinkers
• The world needs people who can take
problems and systems, figure out how to think
about and model them abstractly, figure out
how to make them happen and improve them
– Can do back of the envelop designs and
calculations, work with people implementing
those designs
• MythBusters is great training!
Sound scary?
• It isn't.
• Just means we need problem solvers who can
think in abstract terms
– break problems down into chunks that can be
automated
• Not so much of a need for learning all the
details of how to code it up in the
programming language of the week
We don't need coding?
• Well, actually, we do need people who can
transform those abstract ideas into computer
code
– It is a very promising and interesting career path
• But the language of the week/year/decade
changes all the time
– whatever language you learn, your dream job may
require another language
• And we also need a lot of people can think about
breaking problems down into computation steps
– even if they don't write the code themselves
Undergraduate computer science
• Math and logic
– discrete math, logic, probability, recursion, proofs,
induction, sets, graphs, trees, lists, algorithms,
computational complexity
• Programming and software development
– programming languages, how to design a solution
to a problem, how to gain confidence in the
correctness of your software, how to design
software so it can be extended and understood by
others
Topics
• Theory
– advanced algorithms and proofs, fundamental
questions about which problems are hard and
which are unsolvable, cryptology
• Artificial intelligence
– machine learning, natural language translation,
planning, vision and speech recognition
Topics
• Databases
– how to efficiently and securely store and access
data
• Systems
– computer infrastructure: operating systems,
networks, chips, supercomputers, security
– all the stuff that tries to stay out of your way
Topics
• Software
– Making it easier for people to write correct and
fast software
• Human computer interactions
– Understanding how to design, evaluate and
improve a user interface
• Software engineering
– Managing and getting the requirements right for
large software projects
Topics
• Scientific computing
– Figuring out the fastest and most accurate way to perform
scientific simulations and calculations
• Geometric and visual computing
– route planning, computer graphics
• Bioinformatics
–
–
–
–
gene sequencing
protein structures
finding genes linked to diseases
Health records
• finding important/helpful patterns
• security and privacy
Example
• Consider the problem of computing three dimensional partial
differential equations
– don't need to know what those are
– but they come up in simulating oil wells, nuclear reactions and airfoils
• Over 40 years,
– hardware alone got 500,000 times faster
– software alone got 250,000 faster
» combined: 125 billion times faster
» computation that used to take centuries now can be done in a
second
DARPA Urban Challenge
• This event required teams to build an
autonomous vehicle capable of driving in
traffic, performing complex maneuvers such
as merging, passing, parking and negotiating
intersections. This event was truly
groundbreaking as the first time autonomous
vehicles have interacted with both manned
and unmanned vehicle traffic in an urban
environment.
– http://www.youtube.com/watch?v=iCTlEHXiidM
Download