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.
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.
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().
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.
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.