The text is Kruse and Ryba, Data Structures and Program Design in C++, Prentice-Hall, 1999.
The prerequisite for this course is C or better in CS 211. I will assume that you have developed a significant degree of skill in programming (program organization, coding, documenting, testing and debugging) -- you will develop yet more this semester. I will also assume that you are acquainted with basic complexity analysis ("big O"), are happy manipulating pointers and linked data structures, and can think recursively. You should be able to build abstract data types using C++ classes.
The purpose of the course is two-fold. We will continue the study of data structures from CS 211 and we will learn how to approach larger and more challenging programming projects than those you did in CS 211. Programming is a significant part of this course and you should expect to spend a good deal of time on the course projects.
There will be several programming assignments. All programming will be done in C++. You may work on any system that you like, but your programs must compile and run correctly on osf1 using g++. If you are working at home on a Linux system or on a Mac running OS X, g++ and appropriate programming tools (editors, make, debuggers) are available to you. If you are using a Windows machine you should get one of the ports of g++ (and other programming tools) which you can run in a DOS window. One such port is djgpp which you can download from http://www.delorie.com. Other programming tools (make, gdb, etc.) are available there as well. An alternative is to download Cygwin from http://www.cygwin.com (be prepared for a long download). Cygwin is a Unix-like environment that will run under Windows and comes with the usual programming tools. An advantage of programming using Cygwin rather than djgpp is that the visual debugger ddd is available there but not with djgpp.
You may discuss the programming projects with other students (this is encouraged) but you must do and submit your own work. No joint work will be accepted. Read the CS Department honor code: http://cs.gmu.edu/students/honor-code.html, and the University honor code: http://www.gmu.edu/catalog/acad pol.html. You are bound by these honor codes. Any submitted work which shows too much commonality with others' work to be completely original, or any plagiarized work, will receive a grade of 0. Any code which is presented in class or provided to you as part of the project may be included in your programs.
You will submit programs electronically and you will also hand in a hard copy of your source code. External documentation will be handed in with the hard copy of your program. You can only turn in a program once. No revisions or additions can be made to your program after it has been submitted. Late programs will be accepted with a 10 points per day late penalty. You are responsible for keeping backups of your work ("my disk crashed" and "my roommate deleted my program" are not reasons for late submissions).
There will be a midterm exam and a final. There will be no makeups on exams except under exceptional circumstances (as judged by me), and any such makeup must be arranged in advanced. Grades will computed from a weighted average computed with the following weights: