Data Structures and Algorithm Analysis in C++, Addison Wesley, 3rd edition, 032144146X
This course exams fundamental data structures and algorithms that allow one to write efficient computer programs for the purpose of solving a given problem. By "efficient" it is meant that the resources (both time and space) used by the computer (or network of computers) are proportional to what is theoretically possible, as the size of the problem input grows. Data structures and algorithms are fundamental to all of computing, because without them many common computer applications would either not work, or not work as effectively as one would prefer. Students who complete this course will hopefully have a strong appreciation for the basic principle of not using more computing resources than one actually needs in order to accomplish a programming task.
Each lecture is supplemented with a lecture outline that is available online in pdf format. The lecture outlines, when completed in class, are meant to serve as a useful set of course notes. They can be found at http://www.cecs.csulb.edu/~ebert/teaching/spring09/328/lectures.html
Each thursday lecture will be preceded by a 20-minute quiz that is based on the assignment posted during the previous week. The quizzes test for basic understanding of the material. In addition to quizzes, there will be three exams, including the final exam. The exams will test for a deeper understanding based on more advanced problems that were assigned during the previous weeks.
Finally, each thursday lecture will be followed by a lab assignment that must be completed and submitted before the end of the lab period. Students may work individually or in pairs. Students will receive twenty points for participation, and five additional points for each of the six test cases that are correctly solved.
Exams are equally weighted with a total weight of 50%. Quizzes and programming assignments both have a total weight of 25%. The lowest quiz and lowest programming scores are omitted in the final grade calculation. For each category, I tend to use the following grading scale (based on the percentage of possible points attained): A: 75% and above; B: 66%-74%, C: 50%-65%, D: 33%-65%, F: below 33%.