CS 3100
Fall 2006
Study Guide

As part of your review process, I recommend you study:
• Notes from class
• Lab assignments
• Look over exercises at the end of the chapter in the book.

Chapter Five: Recursion as a Problem-Solving Technique
• Be able to define and explain backtracking and recursion.  Be able to give examples.

• Be able to understand simple grammars like those described in the chapter. Be able to construct simple grammars.

• Understand what prefix, postfix, and infix expressions are and know grammar rules for such expressions.

• Be able to answer questions about how to implement a recursive grammar checker like the example grammar checkers for C identifiers, palindromes, or other languages discussed in class.

• Be able to describe recursive algorithms for solving some simple problems. Be able to identify the base case(s) and recursive step(s) in simple recursive algorithms.

Chapter Nine: Algorithm Efficiency and Sorting
• Understand the role of operation counts in measuring the work done by an algorithm.

• Know the definition of the order of an algorithm (the big-O of the algorithm).

• Understand the importance of big-O analysis as a comparative measure of growth-rate functions of algorithms. Understand the way that common big-O rates are ordered: O(1) < O(logN) < O(N) < O(NlogN) < O(N^2) < O(N^3) < O(2^N). (Here we use the notation b^c to denote "b raised to the power c.")

• Know properties of growth rate functions such as O(5*N^2) + O(N) = O(N^2)

• Know the following sorting algorithms and be able to discuss their orders appropriately: Selection Sort, Bubble Sort, Insertion Sort, Mergesort, Quicksort, and Radixsort.

• Be able to discuss the improvements to quicksort discussed in the text and in lectures.