Download Presentation
## Computer Science: A Whirlwind Tour

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Computer Science:A Whirlwind Tour**• Jacob Whitehill (jake@mplab.ucsd.edu) • Machine Perception Laboratory,http://mplab.ucsd.edu • UCSD**Goals of This Talk**• Introduce you to the science of computers & computation. • Give a super-fast tour of various sub-areas of computer science. • Tell you a little about our lab’s research. • Show some demos.**Computer Science: Misconceptions**• Computer science is related to, but distinct from, the following fields: • Information Technology (IT). • Computer & network management • Computer programming**Computer Science: Misconceptions**• Information Technology (IT): • The study, development, and management of information systems - computer & software systems that manage large amounts of information. • Example: design an efficient database for Verizon to handle billing information for 100 million customers.**Computer Science: Misconceptions**• Computer & network management - set up and maintain computers & computer networks • Example: figure out why the Internet is not accessible from a particular school classroom, and fix the problem.**Computer Science: Misconceptions**• Computer programming - create software for a computer to execute to perform a useful task. • Example: write software to automatically download music by your favorite artist on iTunes.**My definition of Computer Science**• My definition: the development of new techniques using computers & computation to solve problems that were fundamentally not solvable before. • Contrast with IT: there are no fundamental challenges in setting up a billing system for Verizon that have not yet been solved - it’s clear that it’s achievable. • Contrast with programming: though programming is by no means trivial, it is usually clear at the onset that the program can be written.**My definition of Computer Science**• Computer programming represents the means by which (empirical) computer science research is conducted. • Analogous to conducting an assay, using a microscope, staining DNA, etc.**Computer Science**• Computer science is (for the most part) an engineering science: • We have a task we’d like to accomplish. • We don’t know if it’s solvable, let alone how to solve it. • We (try to ) find computational methods to accomplish our task.**Computer Science**• Contrast with the natural sciences (e.g., biology, chemistry, physics, mathematics): • We are interested in discovering how the world works, without necessarily accomplishing a concrete task.**Computer Vision**• Google Earth - How do you “stitch together” satellite photographs taken above the Earth into a navigable 3-D “world” (Google Earth)?**Graphics**• Pixar - How do you animate a graphical video character (e.g., Shrek) so that it looks alive?**Cryptography and Security**• How do you encrypt a message so that only the “intended persons” can read it and eavesdroppers cannot? • How do you prevent people from copying movies & music illegally?**Networking**• How can you transmit data reliably and at high-speed using ordinary power-line cables?(this is important in developing countries without telephone infrastructure)**Machine Learning**• Can computers learn to recognize the same kinds of patterns in nature that humans can? • Example: where are the faces in the video?**Bioinformatics and Computational Biology**• How can we analyze human DNA sequences to determine the risk factors of certain diseases?**Complexity Theory**• How can we use quantum computers to solve mathematical problems more quickly than with conventional machines?**Computer Science:Sub-areas (many)**• These are all the ones I can think of off-hand: • GraphicsVisionMachine learningDatabasesCompilersNetworkingOperating systemsDistributed systemsSoftware engineeringRoboticsNumerical computingHuman-computer interactionGraphicsComputer architectureSecurityCryptographyAlgorithmsImage & video processingBioinformaticsComplexity theoryComputational geometry • By the way - some of these areas also fit into Electrical Engineering (EE). Some of these are mostly empirical, some are mostly theoretical, and some are both.**Theoretical vs. Empirical Research**• Theoretical research - use mathematics/logical reasoning to prove what you are saying is definitely true. • Empirical research - research through observation - run many experiments to show that what you are saying is probably true.**Theoretical vs. Empirical Research**• Example: • Theoretical proof that a particular casino gambling strategy will give you the highest possible winnings. • Demonstration over many experiments that a particular strategy works better than others. • Important: It’s not always easy/possible to prove something mathematically.**Algorithms**• The notion of algorithm is fundamental to all of computer science. • An algorithm is a step-by-step procedure (“recipe”) for how to complete a particular task. • Computers can perform tasks very quickly, but they require a very precise description of what to do.**Algorithms**• Example: • INPUT: flour, eggs, milk, butter, baking powder, salt, chocolate chips • PROCEDURE: • Beat eggs. • Add all other ingredients. • Stir everything until smooth. • Drop in 5” circles on hot frying pan. • Fry on both sides until brown.**Algorithms**• Example (continued): • OUTPUT: chocolate chip pancakes**Algorithms**• More interesting algorithms: • If you type a phrase into Google, what is the fastest way of finding all of the webpages (on the whole Internet!) that contain that phrase? • How do you automatically find the faces in a digital video? • How do you animate Shrek’s mouth to match his speech?**Algorithms**• Algorithm descriptions are typically written in a computer programming language (e.g., C, Java, Python). (This is where programming comes in.) • Algorithm descriptions are called code. • They are then converted (by a compiler or interpreter) into machine language (the computer’s native language, written in 0’s and 1’s).**Algorithms**• Example: counting from 1 to 100. • PROCEDURE (in English): • Start with the number 1. • Print the number. • Add 1 to the number. • Go back to Step (2) until we’ve reached 100.**Algorithms**• Example: counting from 1 to 100. • PROCEDURE (in C, a programming language): • int number = 1;while (number <= 100) {printf(“%d\n”, number);number += 1;}**Algorithms**• Example: counting from 1 to 100. • PROCEDURE (in PowerPC G5 machine language, binary): • 111111101110110111111010110011100000000000000000000000000001001000000000000000000000000000001010000000000000000000000000000000100000000000000000000000000000101000000000000000000000010000010100000000000000000000000000100001010000000000000000000000000000000100000000000000000000000000111000010111110101111101010000010000010100011101000101010110100100010101010010010011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000...**Algorithms**• Several sub-areas of computer science study the science of algorithms: • Algorithm design • Come up with new fundamental algorithms. • Complexity & computability theory • Study the kinds of algorithms that can be written, and how fast they are.**Computability Theory**• There are some tasks which are fundamentally impossible to solve. • One of the most famous is the “halting problem”. • It is possible to write a program that never ends. Consider: • Print out “hello”. • Go back to step 1.**The “Halting Problem”**• It would be useful to know whether a particular computer program will ever finish. • What we would like is the following: • INPUT: any computer program. • OUTPUT: either Yes or No according to whether the specified computer program will (eventually) come to an end.**The “Halting Problem”**• It is provably impossible to create such an algorithm. • Hence, no such algorithm can ever be created, no matter how sophisticated computers ever become. • This research result comes from the field of computability theory. • Determining whether any computer program will terminate is incomputable.**Complexity Theory**• Some computer science tasks, even if there exists algorithms to solve them, may take prohibitively long to finish - for instance, a google-google-google years (this is a long time). • Other algorithms may finish their work in less than a second. • Which tasks can be solved quickly, and which take more time? • The amount of time that an algorithm takes to finish is called the complexity of that algorithm.**Two Algorithms -Which takes longer to finish?**• “Stable Marriage”: How can we pair n men with n women so that divorces their spouse for someone else? • “Graph 3-Coloring”: How can we color the circles in a graph so that connected circles have different colors?**Stable Marriage Algorithm**• Suppose we have 10 men and 10 women who wish to marry each other (heterosexual). • Each person ranks all 10 persons of the opposite gender in order of preference. • We want to pair people so that no one will divorce their current spouse to marry someone else. Show on board.**Graph 3-Coloring**• A “graph” has circles and lines. • Some circles are connected to others by lines. • If two circles are connected by a line, then the circles cannot have the same color. • Can we color all the circles in the graph using just 3 different colors?**Algorithmic Complexity**• Which problem is harder? “Stable Marriage”, or “Graph 3-Coloring”? • These algorithms may seem contrived, but they actually find many uses in computer science.**Algorithmic Complexity**• It turns out that the problem of “Stable Marriage” has a very efficient algorithm. • Finding marriages for, say, 1000 people will take a fraction of a second. • Graph 3-Coloring is a hard problem - no known efficient algorithm exists (although slow ones do exist). • For a graph with 1000 circles, finding a 3-coloring will take longer than the universe will continue to exist!**Algorithmic Complexity**• Let n describe the “size” of the problem. • n men/women who wish to marry. • n circles in the graph we wish to color. • The Stable Marriage algorithm is quadratic in n. • The best known Graph 3-coloring algorithm is exponential in n.**My Research:Machine Learning**• “Machine learning” - the study of algorithms that enable computers to “learn” the same things that humans can do easily (and not so easily). • Machine learning is similar to pattern recognition.**My Research:Machine Learning**• Examples: • How to hear & understand speech. • How to see & recognize people. • How to determine whether an email contains a virus. • The science involved in machine learning is coming up with ways to perform such tasks (or to improve their performance).**My Research:Machine Learning**• My work: • Automatic facial expression recognition (and other kinds of face processing). • Automated teaching systems.**Automatic Facial Expression Recognition**• INPUT: an image/video containing faces. • OUTPUT: the locations of all faces in the image, along with their facial expressions. • PROCEDURE: unknown (but we’re working on it)**Automatic Facial Expression Recognition**• Let’s define “facial expression” more clearly: • One definition is the emotion - happy, sad, angry, etc. • Another definition (ours) is the kinds of facial muscle movements that occur in the face.**Facial Muscle Movements**• There are 46 independent muscle groups in the face. Here are a few examples: Source: http://www.cs.cmu.edu/afs/cs/project/face/www/facs.htm**Automatic Facial Expression Recognition**• Why would we want to recognize facial muscle movements? • Psychological research - how do people respond to certain stimuli? • Computer games - make the game responsive to how the user is feeling. • Lie detection. • Perceptual computer interfaces (more later). • Remote control using the face (more later).