Data Structures and Other Objects Using C++
Fourth Edition
by Michael Main and Walter Savitch
ISBN 0132129485

Instructor Michael Main (that's me!)
I enjoy teaching the data structures course because it gives me a chance to make a positive impact on your entire programming career. Throughout the semester you can find me:
Quick Syllabus
To become a Data Structures Expert
start by learning...
  • Precondition/Postcondition specifications
  • Time analysis techniques
  • Container classes
  • Pointers and dynamic arrays
  • Linked lists
  • The standard template library
  • Iterators and generic algorithms
  • Stacks
  • Queues
  • Recursive thinking
  • Trees
  • Sorting and searching techniques
  • And on the practical side you should
    learn some software development tools...
  • The emacs a programming editor
  • The g++ compiler
  • The gdb debugger
  • The make compiling facility
  • Course Prerequisites

    The Quick Syllabus shown here indicates the topics that we'll cover in this course. In order to tackle these topics, you should already be competent at programming in C or C++. You should feel confident in your ability to design and implement simple programs using arrays and functions. You should be familiar with some programming environment. Some of you may have programmed more complex data structures using pointers, and some of you have already used C++. But, because of the large variation in your backgrounds, I will not assume that you have seen pointers or C++.
    The Purpose of the Course

    The primary purpose of the course is to get started toward becoming a data structures expert. As an expert you will know about well-known data structures such as those listed in the Quick Syllabus. You will be able to (1) implement these structures as classes in C++; (2) determine which structures are appropriate in various situations; (3) confidently learn new structures beyond what's presented in this class.
    A second goal of the course is to sharpen your practical programming skills with the g++ compiler, the gdb debugger, and the make compiling facility.
    The expertise that you learn in C++ and our programming environment will be useful in your future classes, and possibly in real-job experience. Certainly C++ and Unix are two of the popular requests from employers. But the more important knowledge that you gain is the fundamental knowledge of data structures. This knowledge transcends any particular language or operating system. Twenty years from now, when you are programming in the latest language D**. with the latest Windex operating system, you will still be using the data structures that you learn this year.
    More Information

    There is a day-by-day schedule of lectures, labs, assignments and exams. The grading policy and rules for doing your own work are also available online. Please let me know if anything is unclear.

    Michael Main (email