CS140 -- General Information

adapted from James Plank's CS140 course


Grading

The grading break down is as follows:


Homework

Homework will be assigned throughout the semester and it will be due at the beginning of each lab period. Homework solutions will be posted after the due date. The TAs will scan your homework to make sure that you are making a serious effort but will not grade it. If it does not appear that you are making a serious effort than you will lose class participation points.


Text Outlines

You are expected to have read the assigned portions of the text before coming to class. However I have found that students rarely read the text. Therefore, as an experiment this semester, I will be having the students in the Wednesday 11:15-2:15 lab section submit an outline of the assigned readings to their lab TA at the beginning of each class. The TAs will scan your outlines to make sure that you are making a serious effort but will not grade it. If it does not appear that you are making a serious effort than you will lose class participation points.

You can see a sample outline for the first set of readings here and I will also go over how to prepare an outline in class. In general the outline should provide a summary of the ideas, definitions, and algorithms presented in the book. While it is ok to copy parts of the book I do not expect to see paragraphs copied verbatim from the text. For the most part I want you to express the ideas in your own words since doing so will help you better grasp the material. I understand that you may not completely grasp the material when you first read it. I only ask that you make a serious try at creating your outline.


Class Goals

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 the logistics of compiling, linking, including, etc., plus setting up the data structures, organizing the I/O, and using standard tools and libraries where appropriate.

    In case you're wondering, this includes understanding pointers, recursion and malloc().

  2. To understand basic data structures.

    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.