A: 90-100 B: 80-90 C: 70-80 D: 60-70 F: < 60
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 and my notes before coming to class. It is very helpful if you have seen the material once before I cover it in class, even if you do not have a firm grasp of the material you have read. However I have found that students rarely read the textbook or my notes unless there is some type of reward and or penalty. Therefore you will be expected to submit an outline of the assigned readings to your 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.
Writing an outline of the assigned reading will help reinforce what you have just read, will help organize your thoughts about the material, and will provide a useful study guide for the midterms and final. 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 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.
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.