Include a brief summary of the course topics and requirements, the general format of the course, and the methods of evaluation.
C programming language (pointers; dynamic storage), recursion (recursive definitions / functions), algorithm analysis (big-O definition and basic properties; pseudocode; big-O best / average / worst case time complexity; polynomial / exponential algorithms), abstract data types (main operations, with preconditions, postconditions, and axioms), lists (sequential and linked representations; sorted lists; traversal, simple / binary search, insertion, removal), stacks and queues (sequential and linked representations; push and pop / enqueue and dequeue), trees (recursive definition; m-ary trees, binary trees and balanced binary trees, heaps; m-way search trees, binary search trees and self-balancing binary search trees; representations; preorder / postorder / inorder / breadth-first / depth-first traversal, search, insertion, removal), tables (a few possible representations, e.g., sorted array, self-balancing binary search tree; hash tables / functions, load factor, division method, linear probing, double hashing, chaining; traversal, search, insertion, removal), priority queues (a few possible representations, e.g., sorted array, heap, self-balancing binary search tree; priority queue sorting algorithms and how they compare with quicksort)