CS140 -- General Information


  1. Professor's Information
  2. Textbooks
  3. Teaching Philosophy
  4. Grading
  5. Missed Exams
  6. Course Goals

Professor's Information


Textbook

COSC 140: Data Structurese and Algorithms I published by Zyante.com.

This book is an ebook and you can subscribe to it by:

  1. Clicking on your zyBooks link in Canvas (Do not go to the zyBooks website and create a new account)
  2. Subscribe


Teaching Philosophy

I encourage active student participation in lectures, which means that while I do lecture, I also try to introduce problem-solving activities into class. Studies validate this approach. For example, a Harvard meta-study that analyzed 225 studies of undergraduate STEM teaching methods found that teaching methods that turned students into active participants rather than passive listeners reduced failure rates and increased scores on exams by almost half a standard deviation. This is consistent with my experience in CS102 where I flipped the classroom several years ago and saw grades increase by roughly half to two thirds of a letter grade.

In order for active student participation to work, you will have to prepare yourself before lecture by reading the textbook and completing the participatory activites. I know in advance that some of you won't like doing this and many of you will struggle somewhat with some of the participatory activities. That is okay. I understand that until we have gone over some of the points made by the textbook in class, that you won't be able to do the participatory activities perfectly. The point of the activities is to make you think about the material before you come to class, so that when we cover the material in class, you will have a better chance of understanding it.

Finally I will spend class time going over the labs. The labs are challenging and if you try to do them at the last minute you will not complete them. The hints that both I provide in class and that the TAs provide in labs should prove helpful in completing the lab assignments.


Grading

The grading break down is as follows:


Missed Exams

Should you miss an exam without a valid excuse, you will receive an average for the remaining exams and a one letter grade reduction in your final grade. For example if you would have received a B+, you will now receive a C+.


Class Goals--adapted from James Plank's CS140 course

The following are the goals that I have set for teaching this class -- they represent what I'd like you all to get out of the class. When the semester is over, go over this list, and see how well these goals were met. If you feel like it, send me email with comments -- it's more useful after the semester than in the middle of it, I think.

  1. To start becoming self-sufficient C+ programmers.

    This means that when you see a problem that needs to be coded, you have a good idea of how to go about it by writing a C+ program. This includes understanding 1) the logistics of compiling, linking, including, etc., 2) setting up the data structures, 3) organizing the I/O, 4) using standard tools and libraries where appropriate, and 5) debugging a program.

    Some of the more important basic concepts that you will learn in this course includes understanding pointers, recursion and memory allocation.

  2. To understand basic data structures for organizing and efficiently search data.

    In CS102 you learned the fundamentals of programming and especially how to use control structures, such as loops, branches, and functions, to control the flow of logic in your program. You also learned how to rudimentarily organize data using vectors and classes. In this course we will learn several basic data structures that are good for organizing dynamic data sets and that efficiently support three fundamental operations--insert, delete, and find. Frankly, there are only three to four basic data structures that can carry you through a lifetime of programming. All the rest are variations on a theme. By the end of this class, you should understand the basics and be prepared to tweak them when necessary.

  3. To understand basic algorithm analysis.

    Knowing how to set up your data structures is one thing. Understanding how fast your program should run is another. This class get you started with algorithm analysis.

  4. To become familiar with using command line tools.

    In CS102 you were probably introduced to command line tools but you may not have become completely comfortable with them. In this course you will learn how to use command line tools that you invoke from a terminal window, such as g++ for compiling a program, gdb for debugging a program, and vi for editing a program. As you become an expert programmer, you will probably find that these tools allow you to create and debug a program more quickly than an IDE.