Michael T. Goodrich, Roberto Tamassia, David M. Mount, "Data Structures and Algorithms in C++, 2nd Edition"
You may be able to purchase this book through an online store, such as Amazon, for less than you can purchase it at the university bookstore.
A: 90-100 B: 80-90 C: 70-80 D: 60-70 F: < 60Pluses may be given for composite scores near the top of the range and minuses may be given for composite scores near the bottom of the range. I sometimes curve letter grades based on your final composite score.
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+.
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.
In CS102 you used CodeLite, an interactive development environment (IDE), to ease you into programming. 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.