## CS 201 - Midterm 1 Study Guide

To prepare for Midterm 1, you should review the following topics:
- Java, OO programming:

Review code examples, understand concepts: class, object, instance variable, constructor,
instance method, static method, interface, variable, parameter, return type

- Writing new classes:

Review HW 2 problems 4-5; HW 3; HW 4, problem 2, and solutions

- Algorithmic complexity, Big-O notation, recurrence relations:

Review concepts, deriving recurrence relations from recursive code;
do HW 2 problems 1-3 again, compare w/ solutions

- Vectors:

Review implementation, know complexity of operations

- Sorting (bubble, selection, insertion, merge, quick, bucket, radix):

Be able to describe sorting algorithms in your own words,
know average-case and worst-case run times;

For first 5 algs, understand visual ordering of data during sorting (see "Visual Sort" of
xSortLab; see also
these Sorting Algorithm Animations)

- Generic types, comparators:

Review HW 4 code, lecture 11 examples, HW 4 solutions

- SinglyLinkedList, CircularList, DoublyLinkedList:

Review implementation, know complexity of operations

- IntLists:

Understand IntListOps.java, do HW 5 problem 1 (sorry, no solutions!),
understand recursion

- Optional: review the sorting algorithms as folk dances, e.g., Quick Sort or Insertion Sort

- Optional: review these Ineffective Sorts