cse 373 tradeofgs and abstractions
play

CSE 373: Tradeofgs and Abstractions Michael Lee Friday Jan 5, 2017 - PowerPoint PPT Presentation

CSE 373: Tradeofgs and Abstractions Michael Lee Friday Jan 5, 2017 1 Warmup Warmup questions: Instructions: implementation of a data structure? 2 Recall: Whats an ADT? Whats a data structure? An Skim the Queue ADT on your


  1. CSE 373: Tradeofgs and Abstractions Michael Lee Friday Jan 5, 2017 1

  2. Warmup Warmup questions: Instructions: implementation of a data structure? 2 ◮ Recall: What’s an ADT? What’s a data structure? An ◮ Skim the Queue ADT on your handout. ◮ Discuss: How would you implement a queue?

  3. Possible queue implementations 3

  4. Announcements Course overload link: goo.gl/BDaAyt Other announcements: Setup tips and tricks: Suspect the spec is out-of-date? Shift-refresh in your browser Use Java 8, not 9 When running into weird Eclipse issues, try restarting it 4 ◮ Overloading + looking for a partner? Talk to me after class. ◮ Project 1 out ◮ Important: get project setup done ASAP

  5. Announcements Other announcements: Setup tips and tricks: 4 ◮ Overloading + looking for a partner? Talk to me after class. ◮ Project 1 out ◮ Important: get project setup done ASAP ◮ Suspect the spec is out-of-date? Shift-refresh in your browser ◮ Use Java 8, not 9 ◮ When running into weird Eclipse issues, try restarting it

  6. Reviewing CSE 143 material Places to get practice Need help? Visit offjce hours! 5 ◮ Section 1 handouts ◮ Practice-it: https://practiceit.cs.washington.edu ◮ CSE 143 class website (17au or older) ◮ Project 1

  7. ADTs ADTs are just a tool for communicating with other programmers This course focuses on implementing ADTs: implementing data structures 6

  8. Why? Why? 7 Why can’t we just use java.util.* ?

  9. Why? The dream: there’s One Right Way to implement each ADT The reality: nothing’s perfect But we can work around many tradeofgs by carefully adapting data structures and abstracting algorithms! 8

  10. Why? The dream: there’s One Right Way to implement each ADT The reality: nothing’s perfect But we can work around many tradeofgs by carefully adapting data structures and abstracting algorithms! 8

  11. Why? The dream: there’s One Right Way to implement each ADT The reality: nothing’s perfect But we can work around many tradeofgs by carefully adapting data structures and abstracting algorithms! 8

  12. Tradeofgs There are (often highly non-obvious ) ways to organize information to enable effjcient computations over data. However, no method is perfect: there exists unavoidable tradeofgs . 9

  13. Tradeofgs Examples of tradeofgs: Time vs space Making one operation more effjcient vs another Implementing extra behavior vs performance Simplicity and debuggability vs performance Core questions: What operations do I really need? What assumptions am I making about how my software will be used? (e.g. more lookups or inserts) 10

  14. Tradeofgs Examples of tradeofgs: Making one operation more effjcient vs another Implementing extra behavior vs performance Simplicity and debuggability vs performance Core questions: What operations do I really need? What assumptions am I making about how my software will be used? (e.g. more lookups or inserts) 10 ◮ Time vs space

  15. Tradeofgs Examples of tradeofgs: Implementing extra behavior vs performance Simplicity and debuggability vs performance Core questions: What operations do I really need? What assumptions am I making about how my software will be used? (e.g. more lookups or inserts) 10 ◮ Time vs space ◮ Making one operation more effjcient vs another

  16. Tradeofgs Examples of tradeofgs: Simplicity and debuggability vs performance Core questions: What operations do I really need? What assumptions am I making about how my software will be used? (e.g. more lookups or inserts) 10 ◮ Time vs space ◮ Making one operation more effjcient vs another ◮ Implementing extra behavior vs performance

  17. Tradeofgs Examples of tradeofgs: Core questions: What operations do I really need? What assumptions am I making about how my software will be used? (e.g. more lookups or inserts) 10 ◮ Time vs space ◮ Making one operation more effjcient vs another ◮ Implementing extra behavior vs performance ◮ Simplicity and debuggability vs performance

  18. Tradeofgs Examples of tradeofgs: Core questions: be used? (e.g. more lookups or inserts) 10 ◮ Time vs space ◮ Making one operation more effjcient vs another ◮ Implementing extra behavior vs performance ◮ Simplicity and debuggability vs performance ◮ What operations do I really need? ◮ What assumptions am I making about how my software will

  19. Case study: The List ADT A list stores an ordered sequence of information. You can access each item by index. A list is growable: you can add more and more elements to it. It should support the following operations : get : returns the item at the i -th index set : sets the item at the i -th index to a given value append : add an item to the end of the list insert : insert an item at the i -th index delete : delete the item at the i -th index size : return the number of elements in the stack 11

  20. Case study: The List ADT A list stores an ordered sequence of information. You can access each item by index. A list is growable: you can add more and more elements to it. It should support the following operations : get : returns the item at the i -th index set : sets the item at the i -th index to a given value append : add an item to the end of the list insert : insert an item at the i -th index delete : delete the item at the i -th index size : return the number of elements in the stack 11

  21. Case study: The List ADT A list stores an ordered sequence of information. You can access each item by index. A list is growable: you can add more and more elements to it. It should support the following operations : get : returns the item at the i -th index set : sets the item at the i -th index to a given value append : add an item to the end of the list insert : insert an item at the i -th index delete : delete the item at the i -th index size : return the number of elements in the stack 11

  22. Case study: The List ADT A list stores an ordered sequence of information. You can access each item by index. A list is growable: you can add more and more elements to it. It should support the following operations : 11 ◮ get : returns the item at the i -th index ◮ set : sets the item at the i -th index to a given value ◮ append : add an item to the end of the list ◮ insert : insert an item at the i -th index ◮ delete : delete the item at the i -th index ◮ size : return the number of elements in the stack

  23. Tradeofgs Goal: implement the List ADT Slightly more space per element Linked list: No wasted space Array list: No wasted space Linked list: Potentially wastes space (after doubling) Array list: must iterate to i -th node Linked list: must shift elements Array list: must iterate to fjnd i -th node Linked list: immediate (constant time) Array list: Compare and contrast: array list vs linked list 12 ◮ Time needed to access i -th element ◮ Time needed to insert at i -th element ◮ Amount of space used overall: ◮ Amount of space used per element:

  24. Tradeofgs Goal: implement the List ADT Slightly more space per element Linked list: No wasted space Array list: No wasted space Linked list: Potentially wastes space (after doubling) Array list: must iterate to i -th node Linked list: must shift elements Array list: must iterate to fjnd i -th node immediate (constant time) Compare and contrast: array list vs linked list 12 ◮ Time needed to access i -th element ◮ Array list: ◮ Linked list: ◮ Time needed to insert at i -th element ◮ Amount of space used overall: ◮ Amount of space used per element:

  25. Tradeofgs Goal: implement the List ADT Slightly more space per element Linked list: No wasted space Array list: No wasted space Linked list: Potentially wastes space (after doubling) Array list: must iterate to i -th node must shift elements must iterate to fjnd i -th node immediate (constant time) Compare and contrast: array list vs linked list 12 ◮ Time needed to access i -th element ◮ Array list: ◮ Linked list: ◮ Time needed to insert at i -th element ◮ Array list: ◮ Linked list: ◮ Amount of space used overall: ◮ Amount of space used per element:

  26. Tradeofgs must shift elements Slightly more space per element Linked list: No wasted space Array list: No wasted space Potentially wastes space (after doubling) Goal: implement the List ADT must iterate to i -th node must iterate to fjnd i -th node immediate (constant time) Compare and contrast: array list vs linked list 12 ◮ Time needed to access i -th element ◮ Array list: ◮ Linked list: ◮ Time needed to insert at i -th element ◮ Array list: ◮ Linked list: ◮ Amount of space used overall: ◮ Array list: ◮ Linked list: ◮ Amount of space used per element:

  27. Tradeofgs must shift elements Slightly more space per element No wasted space No wasted space Potentially wastes space (after doubling) Goal: implement the List ADT must iterate to i -th node must iterate to fjnd i -th node immediate (constant time) Compare and contrast: array list vs linked list 12 ◮ Time needed to access i -th element ◮ Array list: ◮ Linked list: ◮ Time needed to insert at i -th element ◮ Array list: ◮ Linked list: ◮ Amount of space used overall: ◮ Array list: ◮ Linked list: ◮ Amount of space used per element: ◮ Array list: ◮ Linked list:

  28. for ( int i = 0; i < myList.size(); i++) { System.out.println(myList.get(i)); } How effjcient is this if myList is an array list? A linked list? A question: How do we print out all the elements inside of a list? One idea: 13

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend