When I was taking algorithm courses in my university, my lecturer used SPOJ [0] and Uva online judge [1] as part of coding exercises. For example, today, I learn about greedy algorithm, my lecturer find a problem on those website about greedy algorithm problems. Someone already mentioned CodeForces. It likes SPOJ and Uva. But, CodeForces usually has a coding competition regularly.
The websites above will affect you on how to solve a problem quickly because it's timed. It helps for job interview. If you want to learn about software engineering, e.g. architecture or what's going on in real industry, it's different in my opinion. You should know well the problem, use cases and of course, the contexts. To be honest, I agree with @cag_li. Involve in open source projects or build a real project!
[0]: http://www.spoj.com