Study Guide for CS 313E Test 2 (Spring 2022) * You are responsible for material in chapters 1 through 22 in ZyBooks. You are responsible for the data structures Stacks, Queues, and Linked Lists. * Define simple classes (ZyB 13 & 14) * Define an algorithm and its characteristics. Know what is meant by algorithm analysis and Big-O notation. [There are no direct questions on the Big-O notation.] (ZyB 16) * Recursion (ZyB 19) - be able to go from iterative code to recursive code - trace recursive code - given an algorithm write the recursive version of that algorithm - permutation, combination, all subsets, and memoization - Look at Recursion-2 problems in the Java section of Coding Bat * You should know the four different classes of algorithms - exhaustive search, greedy, divide and conquer, and dynamic programming. You should know how to apply any of these approaches to a given problem. (ZyB 18) * The questions on the test will involve the algorithms on sorting [ZyB 24], searching (linear and binary) [ZyB 20], merging [Class Notes], and hashing [ZyB 21]. * You should be familiar with the following sorting algorithms - selection sort, bubble sort, insertion sort, merge sort and quick sort. You should be able to trace each of the algorithms for a given array. [ZyB 24] * For hashing, you should know how to hash and linear probing, quadratic probing, and double hashing. [ZyB 21 & Class Notes] * You should know Infix, Prefix, and Postfix notation. Evaluate Postfix expressions using a stack. Convert an expression in one form to another, e.g. convert an infix expression to postfix. [Class Notes] * You should know how to use the Stack, Queue, and Linked List data structures. [ZyB 22 & Class Notes] * You may use any of your notes or the notes that we have on our class website. You may run your code on your computer to test it. But you may NOT communicate with another human being (other than TAs through private notes on Piazza) regarding the test!