CSE 373: Syllabus (Winter 2005)

Course Goals and Contents

The objective of this class is to study the fundamental data structures and algorithms used in computer science. Students will study advanced programming techniques and will learn to analyze the algorithms to determine their time and space requirements.  By the end of the course, students should have the skills necessary for selecting between existing data structures and algorithms, and for designing their own.

Major topics will include: mathematical tools for describing algorithmic complexity; lists, stacks, and queues; general trees; binary trees; binary search trees; balanced binary trees; heaps and priority queues; hashing; graphs; B-trees (time permitting); union-find algorithms (time permitting).  The implementation of these data structures and algorithms in Java will be studied and practiced.

In addition to the listed topics, a goal of the course is to improve your ability to solve interesting problems through programming, by recognizing when and how standard data structures can be used, and how new data structures can be created for novel situations.

Activities

The course activities include lectures, tests, quizzes, homework assignments of various types, and programming projects.  Note that there are no quiz sections.  However, there are TAs assigned to the course.  You are encouraged to visit the professor and TAs frequently to discuss course material and assignments.

Grading

Tentative weights: the following is an approximation to the formula that will be used to determine overall scores at the end of the quarter.

Late policy

Except in very unusual circumstances, late work will not be accepted.

Academic misconduct

Please review the Computer Science and Engineering Academic Conduct Policy. 

Some brief notes:
In each assignment, each student shall make an accurate and complete attribution of credit for the material presented. Any quotations must be marked as quotations. Complete references must be given for each source of information used, whether the information came from the web, a printed book, or personal verbal communication. Any direct help on an assignment must be mentioned and attributed to the helper. Any apparent deliberate misrepresentation will be treated as a case of academic misconduct and will be handled according to standard procedures of the College of Arts and Sciences, College of Engineering, or other university division.

Computing Resources

Campus computing resources are available to CSE373 students through two facilities:
To use campus labs you will need a UWNetID.  If you have been enrolled at UW before, you know what this is about.  If you are new to UW or are a non-matriculated student, please check immediately to make sure you have access; if you don't, take steps to make sure you do!

If you plan to use your own computer, you will need access to a Java developement kit at least.
If you have not programmed before in Java, you must take steps immediately to get caught up, not just on the language but on the tools such as those mentioned above.

Other Resources

Students are encouraged to take advantage of the following categories of resources for this course: Particular topic-oriented resources which have been useful in past quarters.  Possibly some of these won't be as relevant this quarter.

Class Email List

Each student should subscribe to the course email list. Instructions for subscribing will be given later. This list will serve both as a means of announcement from the instructor and TAs and as a forum for discussing course-related issues. An archive will be available on the web.