Two very important problems in computer science are sorting and searching of data. Therefore, one has to develop and determine the run-time of algorithms suitable for these purposes. Very efficient algorithms for sorting data are for example Quicksort oder Mergesort; for searching purposes one should use binary search trees or (better) AVL trees.
Another very important branch is graph theory. In this connection, one often analyses connectivity, (minimum) spanning trees and other related problems (e.g. the travelling salesman problem).
Furthermore, optimization (which is brought to bear in some problems from graph theory mentioned above) plays a decisive role (e.g. Knapsack problem, bin packing, etc.). Finally, some problems from geometry can be solved with the help of the scan line principle.
The first three problems (sorting, searching and graphs) are covered by the course "Rekursive Procedures and Flexible Data Structures" or "Algorithms and Data Structures I" respectively. What is more, these courses also deal with hashing.
Finally, the tasks mentioned in the third paragraph are dealt with in the course "Algorithms and Data Structures II".