study algorithms; follow Robert Sedgewick, Kevin Wayne