1 / 81

Computer Science: A Whirlwind Tour

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.

Philip
Télécharger la présentation

Computer Science: A Whirlwind Tour

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Science:A Whirlwind Tour • Jacob Whitehill (jake@mplab.ucsd.edu) • Machine Perception Laboratory,http://mplab.ucsd.edu • UCSD

  2. 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.

  3. Finding the science in Computer Science

  4. Computer Science: Misconceptions • Computer science is related to, but distinct from, the following fields: • Information Technology (IT). • Computer & network management • Computer programming

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. Sample of Various Computer Science Research Problems

  13. Computer Vision • Google Earth - How do you “stitch together” satellite photographs taken above the Earth into a navigable 3-D “world” (Google Earth)?

  14. Graphics • Pixar - How do you animate a graphical video character (e.g., Shrek) so that it looks alive?

  15. 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?

  16. 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)

  17. 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?

  18. Bioinformatics and Computational Biology • How can we analyze human DNA sequences to determine the risk factors of certain diseases?

  19. Complexity Theory • How can we use quantum computers to solve mathematical problems more quickly than with conventional machines?

  20. 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.

  21. 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.

  22. 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.

  23. Algorithms - the foundation of computer science

  24. 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.

  25. 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.

  26. Algorithms • Example (continued): • OUTPUT: chocolate chip pancakes

  27. 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?

  28. 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).

  29. 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.

  30. 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;}

  31. Algorithms • Example: counting from 1 to 100. • PROCEDURE (in PowerPC G5 machine language, binary): • 111111101110110111111010110011100000000000000000000000000001001000000000000000000000000000001010000000000000000000000000000000100000000000000000000000000000101000000000000000000000010000010100000000000000000000000000100001010000000000000000000000000000000100000000000000000000000000111000010111110101111101010000010000010100011101000101010110100100010101010010010011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000...

  32. 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.

  33. 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.

  34. 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.

  35. 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.

  36. 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.

  37. 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?

  38. 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.

  39. 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?

  40. 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.

  41. 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!

  42. 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.

  43. Machine Learning

  44. 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.

  45. 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).

  46. My Research:Machine Learning • My work: • Automatic facial expression recognition (and other kinds of face processing). • Automated teaching systems.

  47. 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)

  48. 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.

  49. 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

  50. 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).

More Related