1. Introduction


Syllabus

These notes are for CSCI 2530, Introduction to Data Structures. Please see the course syllabus for details about the course and how you will be graded.

Here are some important points from the syllabus concerning programming assignments.


Goals

The goals of this course include the following.


How I teach this course

Different instructors often take different approaches to teaching the same course. Here are some of the guiding principles that I use in this course.

  1. Programming languages usually have libraries, collections of tools that ease software construction. For example, Java has an extensive library it calls the Java Application Program Interface, or API. (In fact, Java has more than one API.) C++ has the Standard Template Library. Some instructors concentrate on how to use a library.

    I prefer to take a do-it-yourself approach. We will use a few small libraries, but will not use the Standard Template Library. Here are some of my reasons for this.

  2. There is a collection of coding standards for this course that everyone is expected to follow. Some of the standards are intended to help you avoid pitfalls that can lead to extra work time. Some of the standards are there to make programs easier to understand without the need to reverse-engineer them, and to make submissions easier for me to grade.

    Each assignment is designed to focus on a particular set of competencies. Some of the standards ensure that you do not work around what an assignment is intended to get you to do.

  3. Everybody makes mistakes. You can be sure that you will make a lot of mistakes writing computer software. Everybody does. I prefer to have an atmosphere where everyone accepts that, and where there is no stigma associated with making a mistake. Just let it wash off you like water off the back of a duck.

    The key is, when you make a mistake, try to fix it. Ways to fix mistakes fall under the heading of software development and implementation principles, and we will see several important techniques.

Not all students will be happy with how I teach this course. Some of you have learned a different way of doing things, and will resent me for telling you to do things my way. Some will be annoyed when I point out their mistakes.

But I cannot have a separate course philosophy for each student. The coding standards apply to all, even to those who don't like them. You will need to learn to follow the instructions on programming assignments.


Reading these notes

Read the notes for each lecture before the lecture, so that you can ask questions.

But reading the notes is not enough. It is essential that you work the exercises. You can no more learn to write software just by reading about it than you can learn to ride a bicycle by watching movies of other people riding.

Repetition is crucial for learning anything well. Go back and review sections that you read earlier. You will get a lot out of a second reading.