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 programming many 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 all Ex #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 all Ex #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 Science often divided into two categories: theoretical computer science the "theory" of computation often considers more abstract concepts applied computer science the application of computers and computational theory deals 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! vs "Deep Blue" (IBM) Garry Kasparov http://www.youtube.com/watch?v=NJarxpYyoFI The Many Faces of Computer Science computer science encompasses a broad range of topics many of these topics are the subject of intense research we consider a few examples here Topic #1: Programming (of course) The science (art) of constructing a program to achieve a specific goal That 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 …. Programming How do you make a computer into a word processor/internet browser/gaming console? You give it step-by-step instructions Each 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 Example Suppose we wish to perform the following calculation: (17 + 29) x 56 how do we program our computer to make this calculation? Machine Code the language of your processor each line represents an instruction to be executed 0000100100010001 0000101000011101 0001001100101000 0000110000111000 0010010101110000 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 Language e.g. C++, Java, Python offers a more natural language for programming commands are much less tightly coupled to the instructions of the processor cout << (17 + 29) * 56; HL Code to Machine Code processor does not understand high-level code a separate program called a compiler translates the code to machine code Compiler (17+29) * 56; 0000100100010001 0000101000011101 0001001100101000 0000110000111000 0010010101110000 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 Networking Networking 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 architecture database programming graphics and games human-computer interaction privacy 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: chemistry: economics: ~5000 years* ~3000 years* ~240 years* What makes Computer Science unique? it is dynamic My first computer (1997) My current computer (2013) • 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 • 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 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