1A. 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 of this course

This course is broken into three parts.

  1. Part 1: Elementary C++ and fundamentals of software development

  2. Part 2. The memory and memory addresses

  3. Part 3. Fundamental data structures and algorithms

    Data structures and algorithms are so closely intertwined that it is difficult to study one without the other. We will concentrate on a few fundamental data structures, including the following.

    There is another aspect of data structures called data abstraction, which is concerned with how to package data structures up so that they are easy to use. We will cover the most fundamental idea of data abstraction, abstract data types. CSCI 2540 covers more on data abstraction.


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 (STL). 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 STL except for a tiny part of it. (Type string is part of the STL, and we will not use it.) Here are some of my reasons for that.

  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.

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

    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 ignore the requirements stated in a programming assignment, you can get a score of 0. Read each assignment all the way through and follow the instructions.

    You are not required to follow the coding standards on exams. 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. (Did you notice that this is a repetition of something said earlier on this page?)


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 grade do you get if you work with a friend and you both submit the same thing? Answer

  4. If a friend is having trouble with an assignment, should you share your solution with him/her just to give him/her an idea of how to proceed? Answer

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

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

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

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