810 likes | 1.17k Views
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.
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).