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. Most programming languages 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.

    For this course, 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 in all submitted work. 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.

    If you fail to follow the coding standards in your submitted work, you will lose points, the amount depending on which standard you violated and on to what extent you violated it.

    You are not required to follow the coding standards on quizzes. There is more leniency there.

  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 of you will be annoyed when I point out your mistakes.

But I cannot have a separate course philosophy for each student. Therefore, the coding standards apply to all, even to those who don't like them. You will need to learn to follow the instructions for programming assignments, even if you prefer to do something else.


Reading these notes

It is crucial for you to read the notes, either before or after each lecture. Just be sure that you keep up with the course. Students who do not read the notes will do poorly in this course. When reading these notes:

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. Students who do not work the exercises in the notes will do poorly in this course.

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.


Exercises

  1. What score do you receive on an assignment that does not compile without fatal errors? Answer

  2. What grade do you get if you submit a plagiarized assignment? Answer

  3. What should you do if you get stuck and cannot make progress? Answer

  4. Can you use the C++ Standard Template Library in this course? Answer

  5. Who is required to follow the coding standards? Answer

  6. If you think that you can improve on an assignment, should you do that for extra credit? Answer