140 likes | 150 Views
This course aims to prepare students for future technical challenges by teaching critical thinking, efficient algorithm implementation, and algorithm design methods. Topics include approximation and randomized algorithms, the theory of NP-completeness, and common algorithms.
E N D
CS333 - Introduction • General information • Goals CS333/ Topic 1
Goals of the course: Prepare students for: Future technical challenges Using critical thinking for problem solving Implementing algorithms efficiently and correctly Arguing correctness Analyzing time complexity Presenting common algorithms (building blocks) Learning to design using well known methods Comparing algorithms Introduce: Approximation and randomized algorithms The theory of NP-completeness CS333/ Topic 1
Future technical challenges From Communications ACM, September 2003, pp39 “A traditional university education is to provide the foundations for further learning. It provides just-in-case learning rather than just-in-time learning provided by on-the-job training” • Discuss example on page 42 CS333/ Topic 1
What is critical thinking? • What is critical thinking and how to improve it • Critical thinking on the web definition by Francis Bacon 1605 • Of course it is true; I saw it on the web (lack of?) CS333/ Topic 1
Critical thinking Glaser’s definition: • An attitude of being disposed to consider in a thoughtful way the problems and subjects that come within the range of one’s experience • Knowledge of the methods of logical enquiry and reasoning • Some skill in applying those methods Critical thinking calls for a persistent effort to examine any belief or supposed form of knowledge in the light of the evidence that supports it and the further conclusion to which it tends (Glaser 1941) CS333/ Topic 1
Critical thinking Ennis’s definition: “Critical thinking is reasonable reflective thinking that is focused on deciding what to believe or do” (Norris and Ennis 1989) CS333/ Topic 1
Using critical thinking for problem solving • Considering different approaches for solving a problem (for example dynamic vectors) • Analyzing the merits of each • Considering different implementations for a chosen approach (for example Prim’s algorithm) • Analyzing the merit of the different implementation CS333/ Topic 1
Presenting Commonly used algorithms • Search (sequential, binary) • Sort (mergesort, heapsort, quicksort, etc.) • Traversal algorithms (breadth, depth, etc.) • Shortest path (Floyd, Dijkstra) • Spanning tree (Prim, Kruskal) • Knapsack • Traveling salesman • Bin packing CS333/ Topic 1
Well known problem • Problem: Given a map of North America, find the best route from Binghamton to Toronto? • Well known problem: what is it? • Many efficient algorithms • Choose appropriate one CS333/ Topic 1
Another well known problem • Problem: You got a job as a paper person. You want to find the shortest tour from your home to every person on your list? • Well known problem: what is it? CS333/ Topic 1
Another well known problem (continued) • No efficient algorithm to general problem • Many heuristic and approximation algorithms. • Choose appropriate one CS333/ Topic 1
Design Methods • Divide and conquer • Greedy • Dynamic programming • Backtrack • Branch and bound CS333/ Topic 1
Not addressed • Genetic algorithms • Neural net algorithms • Parallel algorithms • Algebraic methods CS333/ Topic 1
The theory of NP completeness • Many common problems are NP-complete ( traveling salesperson, knapsack,...) • Fast algorithms for solving NP-complete problems probably don’t exist • Techniques such as approximation algorithms are used CS333/ Topic 1