Algorithms and algorithm efficiency; big-O, big-Ω, big-Θ and little-o notation; average and worst-case speed; sorting algorithms; graphs, adjacency and incidence matrices; paths; connectedness; bipartite graphs; isomorphism; Euler and Hamilton paths; shortest paths; Dijkstra's algorithm; planarity; Euler's formula; graph coloring; trees; tree traversal; prefix, infix and postfix notation; spanning trees and minimum spanning trees (Prim, Kruskal). Formal languages, finite state machines and automata may also be discussed. Only offered in spring semester and summer II session.