1 / 26

CSE 326 Introduction

CSE 326 Introduction. David Kaplan Dept of Computer Science & Engineering Autumn 2001. People. Instructor David Kaplan ( davek@cs ) Teaching Assistants Adrien Treuille ( treuille@cs ) Hannah Tang ( hctang@cs ) Coach, Guest Lecturer Donald Chinn ( dci@cs ). Filling the Void.

hemming
Download Presentation

CSE 326 Introduction

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. CSE 326Introduction David Kaplan Dept of Computer Science & Engineering Autumn 2001

  2. People Instructor David Kaplan (davek@cs) Teaching Assistants Adrien Treuille (treuille@cs) Hannah Tang (hctang@cs) Coach, Guest Lecturer Donald Chinn (dci@cs) CSE 326 Autumn 2001 2

  3. Filling the Void Source: New York Times, September 23, 2001 http://www.nytimes.com/2001/09/23/magazine/23MYODA.html Artists: Paul Myoda and Julian LaVerdiere

  4. Course Organization Course Web • http://www.cs.washington.edu/education/courses/326/01au/ Schedule Requirements and Grading • 4 Homeworks (20%) • 4 Quizzes (20%) • 4 Programming Projects (25%), graded on UNIX/g++ • Final (30%) • Instructor discretion (5%) • No Midterm Policies CSE 326 Autumn 2001 4

  5. Resources Text • M. A. Weiss, Data Structures & Algorithms in C++, 2nd ed. Computing Lab • 232 and 329 Sieg • NT machines with X servers to access UNIX Course email • cse326@cs.washington.edu • Subscribe via majordomo Lecture Slides • PYO (print your own) • Posted by 12:00am, night before lecture • Formats: lecture web, .ppt CSE 326 Autumn 2001 5

  6. Why study data structures? Clever ways to organize information in order to enable efficient computation Databases AI Theory Graphics Networking Games Systems Applications Data Structures CSE 326 Autumn 2001 6

  7. Why take CSE 326? • Guaranteed non-obsolescence • May be most important CS course you ever take • Gain concepts, plans and mechanisms for creating better software CSE 326 Autumn 2001 7

  8. Still not convinced? Mastery of this material separates you from … CSE 326 Autumn 2001 8

  9. Course Goals • Learn some of the fundamental data structures in computer science • Learn to solve problems abstractly • Data structures are the building blocks • Learn to analyze and improve algorithms • Prove correctness • Gauge and improve time complexity • Learn UNIX • Required in upcoming courses CSE 326 Autumn 2001 9

  10. Prerequisite:Discrete Math • Recall CSE 321 • Proof by induction • Proof by contradiction • Formulas for sums and products of series • Recursion analysis Know Weiss 1.1 – 1.3 by heart! CSE 326 Autumn 2001 10

  11. Preliminary:Unix • Experience 1975 all over again! • Programming Project 1 distributed Monday, Oct 8, but don’t wait … • Try this ASAP • login, edit, create a makefile, compile “Hello, world!” • Bring questions, frustrations to Section on Thursday CSE 326 Autumn 2001 11

  12. Recommendations Check with TAs, course web for guidance Write, debug first without templates Keep it simple - use templates only where most leveraged Pre-compiled (like a macro) Potential source code savings Potential object code bloat Set<int>, Set<char *>, … are each separate classes No compiler fully implements :-( Preliminary:C++ Templates template <class Obj> class Set { public: Insert(Obj x); boolean IsMember(Obj x); } Set<int> SomeNumbers; Set<char *> SomeWords; CSE 326 Autumn 2001 12

  13. Weissvector, string “Smart” alternatives to arrays, char* - adds bounds-checking, memory management Weiss, Appendix B We will use Standard Template Library (STL) Too useful – 326-in-a-box! We will create functional equivalents Weiss, Appendix A Don’t use (unless told) Useful Libraries vector <int> MySafeIntArray; vector <double> MySafeDoubleArray; string MySafeString; CSE 326 Autumn 2001 13

  14. Concepts, Plans, Mechanisms Concepts • A list that lets me store and retrieve things • A tree that lets me store and retrieve things by hierarchy • A table that lets me store and retrieve things by name • A graph (network) that represents distances between cities, relationships between people, tasks within a project, etc. • and so on … CSE 326 Autumn 2001 14

  15. Concepts, Plans, Mechanisms Plans • Pseudocode • Block Diagrams • Flowcharts Mechanisms • Working code Intuition is the bridge concepts  plans  mechanisms CSE 326 Autumn 2001 15

  16. Learning Concepts vs. Learning Code CSE 326 balances concepts with mechanisms • Grade is 75% concepts and plans, 25% coding skill, but … • Coding greatly improves grasp of concepts and plans Different approaches • Weiss is code-centric: emphasizes plans, mechanisms • Introduction to Algorithms by Cormen, Leiserson, Rivest is pseudocode-centric: emphasizes concepts, plans • The Art of Computer Programming (1968-1973) by Donald Knuth emphasizes concepts, plans, mechanisms • Examples in assembly language (and English)! • American Scientist ranks in top 12 books of century! • Many, many more! CSE 326 Autumn 2001 16

  17. Abstract Data Type (ADT) • Mathematical description of an object and its set of operations ADT typically known only by its exposed operations • ADT is a concept • C++ class is a mechanism for instantiating the ADT concept (and far from the only one) CSE 326 Autumn 2001 17

  18. Data structures Lists, Stacks, Queues Heaps Binary Search Trees AVL Trees Hash Tables Graphs Disjoint Sets Algorithms Insert Delete Find Merge Shortest Paths Union ADT Examples CSE 326 Autumn 2001 18

  19. Asymptotic Complexity How the running time of an algorithm scales with the size of its input Ways to measure complexity • Worst case • Average case • Amortized over a series of (presumably representative) runs CSE 326 Autumn 2001 19

  20. Apocalyptic Laptop Seth Lloyd, a physicist at the Massachusetts Institute of Technology, has calculated how to make PCs almost unimaginably faster--if you don't mind working on a black hole.Lloyd has used the laws of thermodynamics, information, relativity, and quantum mechanics to figure out the ultimate physical limits on the speed of a computer… Lloyd's ultimate laptop would convert all of its 1-kilogram mass into energy via Einstein's famous equation E = mc2, thus turning itself into a billion-degree blob of plasma. "This would present a packaging problem," Lloyd admits … The computer would be capable of performing 1051 operations per second. - Charles Seife, Science Magazine, Vol 289, No 5484, Sep 1 2000, pp. 1447-1448 CSE 326 Autumn 2001 20

  21. Big Bang ApocaLap, 1 year ApocaLap, 1 sec 1000 MIPS since Big Bang 1000 MIPS, 1 day CSE 326 Autumn 2001 21

  22. Max Sum Subsequence (MSS) Given an array of numbers, find the subsequence with maximum sum Example: -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 CSE 326 Autumn 2001 22

  23. MSS: Brute Force Sum -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 -7 -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 4 … … -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 21 -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 -1 MaxSum  0 while (Subsequences remain) subseq  NextSubsequence() if Sum(subseq) > MaxSum MaxSum  Sum(subseq) return MaxSum • Consider: • How many subsequences? • How much work is Sum(subseq)? CSE 326 Autumn 2001 23

  24. MSS: Intuition How could we do this in a single pass? • Track subsequence sums as we go • Preserve best we have seen so far • Compare current with best at each stage • Avoid back-tracking Helpful mechanism: structSubseqInfo {lower, upper, sum} 1 3 14 CSE 326 Autumn 2001 24

  25. MSS: Elegance current best 0 -1 0 0 -1 0 -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 1 0 0 0 -1 0 -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 1 1 3 1 1 3 -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 1 2 13 1 2 13 -7 3 10 1 -13 16 -2 -1 4 -7 -5 -5 22 -1 1 3 14 1 3 14 MaxSumSubsequence(A) current  {0,-1,0} best  current do while loop return best while (++current.Upper < A.Size) current.Sum += A[current.Upper] if current.Sum > best.Sum best  current else if current.Sum < 0 current.Lower  current.Upper + 1 current.Sum  0 CSE 326 Autumn 2001 25

  26. To Do • Sign up on CSE 326 mailing list • Check out course web • Log onto PC in course lab, access UNIX server, create “Hello, world!” • Read Chapters 1 and 2 in Weiss Poll: Thursday Section topic? CSE 326 Autumn 2001 26

More Related