OpenCL, CUDA & Co.
Usually we think about the CPU when doing work, and GPUs just for games. Things are a little blurry, however. We can use GPUs to make computations immensly faster.
A computer is not a Von Neumann machine, it relies on a multi-level memory hierarchy, and RAM access isn't cheap. Smart data structures exploit the real underlying hardware.
Today's analyses, from DNA sequencers to physical simulations, are providing gigabytes and terabytes of data, exceeding the current computing power. Hence we need to go distributed, on a real cluster.
Physics and Graphics
Computers are useful tool for enabling new engineering efforts. Developing algorithms to handle meshes and physics is quite exciting, and essential in modern graphics.
Compressed Data Structures
The available data exceeds the capabilities of a laptop, but it is highly redundant. We need to compress it and remove useless bits, without resorting to an expensive cluster.