As Simon Bridge pointed out, things get practical some time or another.
Having said that I would suggest on top of AI, non-procedural languages (in particular ProLog) as well as linguistic stuff (the stuff that googles of the world work on) as well as optimal classification routines for a variety of fields including computer games and graphics (think collision detection, scene representation, object representation) and a tonne of stuff related to cryptography and related areas.
Within cryptography, you have not only study and analysis (crypt-analysis) of ciphers, but also you deal with one-way functions which is really nuts.
The one-way stuff is also used for doing things like checking how a hash-collision works with respect to generating a decent distribution of collisions and this affects a lot of applications that use hash-trees for fast lookups.
You also have the stuff in compiler design (and I don't just mean the grammars: I mean the whole project that deals with a compiler). Optimizations, checking for errors at compile time, re-organizing code for various uses (one would be the target platform) involves a lot of stuff.