image University of Washington Computer Science & Engineering
  CSE 312Wi '11:  The CSE 332 Co-Requisite
  CSE Home   About Us    Search    Contact Info 

Notes on CSE 332, Data Abstractions, as a pre- or co-requisite to CSE 312, Foundations II.

Approximately the last third of 312 covers algorithmic material, for which the Data Abstractions course provides important background. Quoting from the Curriculum Committee planning documents prepared when these courses were adopted:

The main items needed from the Programming Abstractions course for Foundations II would be graphs and asymptotic runtime analysis which would be necessary for the complexity part of the course. Since that is in the last third of the course and those topics would be relatively early in the Programming Abstractions course a co-req would be okay.
For the few students in 312 who are not concurrently enrolled in CSE 332 (or took it elsewhere, long ago, or otherwise feeling a bit shaky), some independent study of this material will be important. I recommend:
  1. Get a copy of the CSE 332 text, currently Mark Allen Weiss, Data Structures and Algorithm Analysis in Java, Second Edition, Addison Wesley, 2007. Errata. CSE 332 covers roughly Chapters 2 and 4-9 of this book.
  2. Far and away the most important parts are chapters 2 and 9 - read these carefully.
  3. Chapters 3-8 (the more data structures oriented part) contain many implementation details. The details are not so relevant for 312, but getting a broad picture of when these structures are useful and what they buy (e.g. lookup in a list in log n time vs n time) is important background. Reading the intro sections of chapters 3-8 may suffice for this. I suspect the Wikipedia articles on the topic in each chapter title will provide a second, hopefully concise, overview. I recommend this as well, and welcome feedback as to whether this is useful and/or pointers to better resources. Sections 6.4 (Applications of Priority Queues) and 7.7 (Quicksort) are also recommended.
  4. The book seems to spend some time on Java language features and libraries. These are not at all relevant to 312, but may be necessary to the extent that you need to be able read examples in the book.
  5. Chapter 10 might also be good, although I will cover some of this myself (in a different way).


      CSE logo Computer Science & Engineering
      University of Washington
      Box 352350
      Seattle, WA  98195-2350
      (206) 543-1695 voice, (206) 543-2969 FAX