Core data structures and algorithmic thinking.
Trees, graphs, dynamic programming and complexity analysis.