I am planning on going to college to major in computer science and was interested to know what to expect. Regardless of the programming language, do you develop real life applications or do you concentrate on annoying projects that focus on a concept that may never be used?

As an example of what I mean:
Real life- raytracer, side-scrolling game, internet database program, custom programming language

Non-Real life- program to calculate the 10 millionth digit of pie (although interesting), program to calculate the area of some complex 3D shape

In summary, is the concentration in getting ready for real life situations or just all the possibilites and theory behind everything?

PS: I know video games involve complex calculations, but at least there is a fun result at the end of hard work.

Thanks for any input,

chilibean