Read today in the new Scientist (2015-8-8 p13) about a $100 app that combined the GPS position, the sun position and the time to a compass. The idea is quite old but apparently with modern technology a high resolution is possible. They claim 1/100th of a degree!
If you have a sundial, the shadow tells the time as it points to the north. time = f(sun, north);
If you "inverse" the algorithm you can get north = g(sun, time);
The idea is that the (12) hour finger of a clock rotates "exactly" twice as fast as the sun. So by creating a (24) hour finger (from GPS or RTC) and align that with the shadow the sun, the top of the "watch" would point exactly to the north. Although this works only on sunny days it seems to be a nice project for a student looking for a project.