Course Syllabus


Data Structures

Fall Semester 1997

[ Basics | Goals | Requirements | Evaluation | Policies | Machines | Tentative Schedule ]


Instructor: Eugene Wallingford


Course Web Page

Course Goals

This course has two primary goals. First, as the title indicates, the course introduces you to the study of data structures. Second, it aims to support your ongoing development as a programmer. These goals complement each other: The best way to learn about data structures is to write programs that implement and use them, and the best way that you improve as a programmer is to solve new and more challenging problems. (Ours will deal with data structures.)

Over the course of this term, you will continue to explore how to analyze problems in an object-oriented way, to design object-oriented solutions, and to write computer programs in C++ that choose and implement appropriate data structures. By the end of the term, you should feel comfortable:

Course Requirements

Course Evaluation

Grades will be determined on the basis of your performance on laboratory exercises, programming assignments, and examinations. Final grades will be based on the following distribution:

Item Number Weight
Laboratories 15 25%
Programming 6-10 25%
Midterm exams 2 30%
Final exam 1 20%

Grades will be assigned using an absolute scale:

This means that there is no curve.

Course Policies

Computing Environment

Most course materials will be made available via the World Wide Web during the semester. I also frequently send e-mail to inform you of breaking news and to answer common questions. E-mail and the web are, of course, accessible from all university computer laboratories.

Our laboratory sessions will be held in 112 Wright Hall, which contains 20 Unix work stations. We will be using GNU C++ as our programming environment, both for labs and for outside assignments. Submission of programs for grading will usually be via e-mail.

You may choose to do programming assignments on other platforms, such as your own PC or Macintosh. To do this, you will need to have access to a C++ compiler. Turbo C++ is available on the PCs in 112 Wright as well as on the machines in all ITS student laboratories across campus. You might also wish to purchase your own compiler. Such programs are typically available to students for proces in the $50-$150 range. Even if you do use another platform, the final version of your program must compile, link, and run under GNU C++.

Tentative Schedule

The schedule on the following page gives a rough sketch of the topics we will cover and the distinguished dates this semester. If we need to re-schedule an exam, I will notify you at least one week prior to the exam date.

Week Dates Topics Text Special Events
1 08/26 - 08/28 Introduction to the course, design 1-2
2 09/02 - 09/04 Software design and reliability 2-3 PLoP (Thu)
3 09/09 - 09/11 Reliability; Object implementation 3-4
4 09/16 - 09/18 Object implementation; efficiency 4-5
5 09/23 - 09/25 Recursion 6
6 09/30 - 10/02 Recursion; Lists 6-7
7 10/07 - 10/09 [ To be announced ] Exam 1 (Tue); OOPSLA (all)
8 10/14 - 10/16 Lists 7
9 10/21 - 10/23 Lists; Stacks 7-8
10 10/28 - 10/30 Stacks; Queues 8-9
11 11/04 - 11/06 Queue; Catch-Up 9
12 11/11 - 11/13 Tables 10 Exam 2 (Tue)
13 11/18 - 11/20 Tables; Trees 10-11
11/25 - 11/27 Trees 11 Thanksgiving
14 12/02 - 12/04 Trees; Graphs 11-12
15 12/09 - 12/11 Graphs; Course wrap-up 12

The FINAL EXAM is Thursday, December 18, 1997, from 10:00 AM - 11:50 AM.

Eugene Wallingford ==== ==== August 26, 1997