These notes are for CSCI 2530, Introduction to Data Structures. The goals of the course include the following.
In this course, you will learn to create and use physical data structures, such as linked lists and trees, and how to develop and implement algorithms that work on data structures.
Most students come into this course with a novice's ability to design and implement computer programs. Everything is by the seat of your pants.
In this course, you will learn how to design software in a more organized and disciplined way.
Much of the programming work that you do in other courses or in workplace environments is done in higher level languages that are two levels above machine language and that hide a lot of how computers work from view.
This course is taught in C++, staying mainly in the C subset. There, you will work just one level above machine language. You will gain a better understanding of computers, and you will see fundamental ideas of data structures without a lot of machinery between you and the data structures.
This is not a course on object-oriented programming; that is covered in the course that comes after this one, CSCI 2540. The reason should be obvious; our plate is already full, and adding object-oriented programming would be too much.
You are assumed to have had exposure to Java or to a similar language.
Java was designed to look similar to C++, and a lot of its features, such as if-statements and while-loops, are the same in C++ as in Java. We will cover all of the C++ features that we need, but at a faster pace than would be necessary in a beginning course.
These notes are deliberately fairly terse. Look at the examples. It is very important that you work the exercises. Just reading the notes will not be enough for you to understand what the notes cover.
Repetition is critical for learning anything well. Go back and review sections that you read earlier. You will get a lot out of a second reading.