Date post: | 25-Dec-2015 |
Category: |
Documents |
Upload: | warren-lloyd |
View: | 214 times |
Download: | 0 times |
Computer Science 1000
Introduction
What is Computer Science? the study of computers?
not quite rather, computers provide a tool for which to
carry out (some) computer science and its applications
"Computer Science is no more about computers than astronomy is about telescopes." – E. Dijkstra*
* Also attributed to Michael Fellows
What is Computer Science?programming?
better, but still not quite there is much more to computer
science than simply programmingmany in the computer science field do
not program theorists interaction researchers
What is Computer Science?difficult to state precisely
the scientific and practical approach to computation and its applications
– Wikipedia
in other words, the critical component is the computation, not the computer
What is Computer Science?much of the discipline does not involve
computers at allEx #1: computational geometry
study of algorithms (processes) for solving geometric problems
often never implemented – sufficient to show that it can be computed within a certain time bound
What is Computer Science?much of the discipline does not involve
computers at allEx #2: quantum computing
research into designing programs to run on quantum machines
many examples exist (e.g. Deutsch-Jozsa) no practical quantum computers exist*
* http://www.sciencedaily.com/releases/2012/06/120607154138.htm
Computer Scienceoften divided into two categories: theoretical computer science
the "theory" of computationoften considers more abstract concepts
applied computer science the application of computers and computational
theorydeals in the tangible
Theoretical Computer Science example: convex hull problem
given a set of points, find a set of points that "contains" all of the other points
goal of theorists is to find efficient methods for doing this
applications include GIS, games (collision detection), etc
For a more rigorous definition, see: http://mathworld.wolfram.com/ConvexHull.html
Applied Computer Science example: chess
design a computer program that can play competitive chess
interesting history: Herbert Simon predicted that a computer
would be chess' world champion in less than a decade
that was 1957 so when did it happen?
Applied Computer Science Answer: 1997!
http://www.youtube.com/watch?v=NJarxpYyoFI
vs
"Deep Blue" (IBM) Garry Kasparov
The Many Faces of Computer Sciencecomputer science encompasses a broad
range of topicsmany of these topics are the subject of
intense researchwe consider a few examples here
Topic #1: Programming (of course)The science (art) of constructing a program
to achieve a specific goalThat is, for every program you have on your
PC/laptop/phone, a programmer (team of programmers) had to design and implement that program
Computer Program A sequence of instructions designed to perform a
specific task, or collection of tasks Eg. Microsoft Word
Monitors keyboard input, displays it on the screen Formats input for more readable presentation Spellchecks your work Prints your work Saves your work ….
ProgrammingHow do you make a computer into a word
processor/internet browser/gaming console?
You give it step-by-step instructionsEach instruction is performed by the processor
Your computer is like a good assistant, willing to perform any task that you ask
However, you must learn to speak its language
ExampleSuppose we wish to perform the following
calculation:
how do we program our computer to make this calculation?
(17 + 29) x 56
Machine Code the language of your processor
each line represents an instruction to be executed
00001001000100010000101000011101000100110010100000001100001110000010010101110000
place value "17" in memory location 1
place value "29" in memory location 2
add values in loc. 1 and 2, place in loc. 3
place value "56" in memory location 4
multiply values in loc. 3 and 4, place in loc. 5
the solution to the problem is in memory location 5
High-Level Programming Languagee.g. C++, Java, Pythonoffers a more natural language for
programmingcommands are much less tightly coupled to
the instructions of the processor
cout << (17 + 29) * 56;
HL Code to Machine Codeprocessor does not understand high-level
codea separate program called a compiler
translates the code to machine code
00001001000100010000101000011101000100110010100000001100001110000010010101110000
(17+29) * 56;
Compiler
Topic #2: Artificial Intelligence a branch of computer science dealing with the
simulation of intelligent behavior in computer - Merriam Webster
examples game-playing agents (Deep Blue) robotic controllers (RoboCup) automated medical diagnosis pattern recognition simulating human behaviour (Turing Test) etc ...
Topic #3: Computer NetworkingNetworking allows information from one
computer to be transferred to another computer
This simple act has given us: The World Wide Web
Facebook Twitter Instagram Wikipedia
P2P File Sharing Connectivity
Skype Facetime
The History of the Internet
Today: Internet has over 2.4 billion users
78% of North Americans use internet people of all ages
Internet has over 900 million hosts Challenges faced:
addressing (DNS) scalability security bandwidth
Many other topics:hardware and architecturedatabase programminggraphics and gameshuman-computer interactionprivacy and security
What makes Computer Science unique? it is young
first general purpose computer: 1946 (ENIAC) phrase "computer science" coined: late 50's
consider your other university science topics: mathematics: ~5000 years* chemistry: ~3000 years* economics: ~240 years*
What makes Computer Science unique? it is dynamic
My current computer (2013)• 3.4 GHz processor (4 cores)• 8 GB RAM• 2 TB HD• 3 flat screen monitors• high-speed internet (time to download a song: 5-10 seconds)• $800
My first computer (1997)• 200 MHz processor (single core)• 32 MB RAM• 3.1 GB HD• 15 inch CRT monitor• 28.8K bps (time to download a song: 19 minutes)• $4000
What makes Computer Science unique? it is accessible consider what it takes to be an experimental
physicist? expensive equipment a laboratory
what about a computer programmer? a computer
many programming tools are freely available