Personally, the best classes I had all had rigorous homework assignments. I would learn much more from them than studying for the tests. In fact, doing the homeworks would generally cover more than would be possible to test.
Plus I'm just glad to have built things like a DNS server, and inode filesysyem. Many small games and web servers. Database applications, shells, and compilers just to name a few. These are all things that give me confidence as a programmer.