Computer Science 227:
Data Structures

     Department of Mathematics and Computer Science
     Hobart and William Smith Colleges

     Fall, 1998.

     Instructor:  David J. Eck.

     Monday, Wednesday, Friday, 2:40--3:50 PM, in Room Lansing 300.

About The Course

Computer Science 227: Data Structures is the third general programming course in the computer science program, following CPSC 124: Introductory Programming and CPSC 125: Intermediate Programming. CPSC 227 concentrates on the development and use of advanced data structures, including such classic data structures as B-trees, hash tables, graphs, and heaps. It also serves as an introduction to the theoretical study of algorithms, especially algorithms for manipulating data structures.

The text for the course is A Practical Introduction to Data structures and Algorithm Analysis (Java Edition), by Clifford A. Shaffer. Although I have chosen the Java edition of this text, there is very little here that could not be done equally well in C++. For the programming assignments based on this text, you are free to work in Java, or C++, or any other programming language that offers suitable support for data structures.

I will cover a few topics that are not in the text, and some programming assignments will be based on this extra material.

Programming Assignments

There will be five or six individual programming assignments, based primarily on the text. You are expected to work on these assignments as individuals. You should not discuss your work with anyone else in the class or show them your work. These assignments can be done in Java or in C++.

There will be two major group assignments that will not be specifically related to the text. These larger scale projects will be written in Java and will require graphics programming. In the first assignment, you will write a board game that can be played by two players over the network. Each group of students will work on a different game. In the second assignment, you'll make the computer play the game, using strategy algorithms that we will cover in class.


There will be two in-class tests, which will be given on Friday, October 2 and on Monday, October 26. The Final Exam for the course is scheduled for Monday, November 23, at 1:30 PM, in our usual classroom (Lansing 300). The final exam will be cumulative, with emphasis on material covered in the final three weeks of the course.


Your numerical grade for the course will be determined as follows:

             First Test:               18%
             Second Test:              18%
             Final Exam:               24%
             Programming Assignments:  40%

My scale for converting numerical grades into letter grades is:

             A:  90% to 100%
             B:  80% to 89%
             C:  65% to 79%
             D:  50% to 64%
             F:  less than 50%

Grades near the bottom or top of a range are modified by a minus or plus. I follow this scale fairly strictly, although I occasionally "curve" a test by adding some points to each person's score, if I judge that the original grades on the test do not accurately reflect the performance of students in the class.

Office Hours, E-mail, WWW

My office is room 301 in Lansing Hall, just next door to our regular classroom. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce office hours and post them on my office door as soon as my schedule is determined, but note that your office visits are certainly not restricted to my regular office hours!

My e-mail address is ECK (or over the Internet). E-mail is good way to communicate with me, since I usually answer messages the day I receive them.

The home page for this course on the World Wide Web is located at Once the course gets underway, I will post assignments and other useful information on this page.

David Eck, 31 July 1998