Computer Science 539
Data Structures and Algorithms
Fall, 2001

Weizhen Mao
Department of Computer Science
College of William and Mary


General Information | Schedules | Announcements | Lectures | Assignments | Projects | Exams

General Information

Instructor: Weizhen Mao, McGl 114, 221-3472, wm@cs.


Lectures: TR 3:30-4:50 and T 5:00-5:50, James Blair 223.


Office hours: TR 10:00-11:00 and 2:30-3:30, McGl 114.


Teaching assistant: Aaron Hawkins, ahawkins@cs.


Teaching assistant's office hours: TBA in McGl 121.


Textbooks:
Data Abstraction and Problem Solving with C++, 2nd edition, by Frank M. Carrano, Benjamin Cummings, 2001.
Data Structures and Algorithms in C++, 2nd edition, by Mark A. Weiss, Benjamin Cummings, 1999.

Course description:
A transition course for graduate students entering the program who lack courses in data structures and algorithms. Data structures and their representations, data abstraction, internal representation. Specific data structures, including lists, stacks, queues, trees, priority queues, hash tables, and their applications. Systematic study of algorithms, their complexity, and programming implementation. Survey of methods for achieving high algorithmic efficiency by using good data structures and sophisticated design. Advanced features of C++, including classes, inheritance, and polymorphism.

Course work:
  • About six problem sets (each with four problems) will be assigned for the course. They account for 30% of your final grade.
  • A semester-long project, consisting of four parts, will be assigned. They account for 30% of your final grade. The projects consist of modules built on top of one another and cover important algorithmic concepts such as Quick Sort and Divide and Conquer as well as programming issues such as C++ classes. Project descriptions will be posted on the course webpage.
  • There will not be a midterm exam.
  • The final exam, which is open-book and open-notes, will be on 12/19/2001. It accounts for 40% of your final grade.


Grading policy:
  • There are four cardinal rules concerning grading of the problem sets. First, homework is subject to the honor code, but you are free to consult texts, papers, or any published materials. Second, give yourself plenty of time before the deadline to work on the problems. Think before you write. Third, you should make your solutions clear and concise as well as correct. I will take points off for confused or incomprehensible or verbose solutions. Fourth, I will not accept late homework.
  • The grading of the programming project (done by the TA) will be based on the correctness of the programs, the efficiency of the algorithms, the programming styles, the quality of design, and documentation. Late submissions of the project will not be accepted.
  • Your final grade (in points) will be calculated by the following formula: (Your homework total / Maximum homework total) * 30 + (Your project total / Maximum project total) * 30 + (Your final exam total / Maximum final exam total) * 40. Final letter grades will be given based on the standard scale (i.e., 90 or above: A; 80-89: B; 70-79: C; 60-69: D; and below 60: F). However, I reserve the right to lower these standards, which was often the case in the past.


Disability:
If you have a disability that may effect your participation in this course and wish to discuss academic accommodations, please contact me as soon as possible.

Last modified: August 30, 2001