Be familiar with basic techniques of algorithm analysis
Be familiar with writing recursive methods
Master the implementation of linked data structures such as linked lists and binary trees
Be familiar with advanced data structures such as balanced search trees, hash tables, priority queues and the disjoint set union/find data structure
Be familiar with several sub-quadratic sorting algorithms including quicksort, mergesort and heapsort
Be familiar with some graph algorithms such as shortest path and minimum spanning tree
Master the standard data structure library of a major programming language (e.g. java.util in Java 5)
Master analyzing problems and writing program solutions to problems using the above techniques