Instructor: Eugene Wallingford
Course Web Page
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:
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:
Grades will be assigned using an absolute scale:
This means that there is no curve.
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++.
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.
|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.