Math176 - Advanced Data Structures
Course Organization

Textbook: Data Structures and Algorithm Analysis in JAVA, by Mark Allen Weiss, Addison-Wesley, 1999, 542+xviii pages.  Weiss has written a number of books with similar titles, so you should be careful to buy the correct one.

Syllabus:  Topics to be covered in trees (binary search, AVL, splay, B, red-black, etc.), skip lists, heaps, hashing, union-find, graph algorithms, etc.   The general theme of the course is to learn how to handle large sets of data.  Programming practices will also be covered..

Grading:  The course grade will be based on the following components:  (The percentages are only approximations for now, they may vary slightly, quite possible to increase the percentage allocated to programming assignments somewhat.)

FAQ:  A number of students have inquired whether it is a good idea to take Math 176A instead of CSE 100.
        Math 176 (Math 176A) is now crosslisted with CSE 100 and is a direct equivalent.  It can be used for CSE major requirements in place of CSE 100. 
        In addition, Math 176 will be taught in a similar style to CSE 100, with similar topics covered and with programming assignments at a similar level.  It may be taught with a little extra emphasis on mathematical theory than CSE 100, but this is more due to the tastes of the instructor than any official difference.  The instructor, Buss, has extensive background in software development (in spite of being a mathematician) and this will be reflected in the course structure.

Prerequisites: Students are expected to already know how to program in Java, including the use of classes and inheritance.  Advanced topics such as anonymous inner classes might be helpful, but are not necessary.   Also, it is not necessary to know GUI API's such as AWT or Swing.   Students should have completed a basic data structures course and, at a minimum, be familiar with stacks and queues (most students will have seen deques, binary search trees, etc.).   Mathematical prerequisites include familiarity with trees, graphs, proofs by induction and big-O notation (the course will review big-O notation).
    The course prerequisites are listed wrong in the catalog and, even worse, the computerized registration system does not yet have the correct prerequisites, so you may have problems preregistering.   The latest information I have about prerequisites (and this may already be out of date) is that they are:

CSE 12, CSE 30 and one of CSE 21 or Math 15B.

It is also allowed to use Math109, Math 100A or Math103A in place of the CSE 21/Math15B prerequisite requirement.  If you meet the prerequisite requirements, but are unable to register, please go the Mathematics Department Front Desk (7th floor, APM) -- they can manually check your prerequisites and override the computer hold.  If you still have troubles preregistering, please let me know.

Waiting list:  Presently the class is full with a waiting list of 10 or 12, depending on how one counts (as of September 15).  There is a good chance that people on the waiting list can be admitted, but this cannot be decided until after classes start.  Please see me no later than the first day of classes if you are on the waiting list and want to add the course.