Project Euler reminds me of when I did computational fluid dynamics (CFD) for a while. From a programming standpoint, a lot of CFD is fairly simple--the place where CFD methods really differentiate themselves is in their modeling of the underlying physics. From that standpoint, I wouldn't really advocate doing CFD as a way of learning to program, because being a great programmer isn't really the thing that will make you great at doing CFD—being great at math and modeling is. (On the other hand, if someone wants to get into physics modeling or simulation, CFD is quite fun and satisfying.)
I seem to be the exact opposite of you (Doing UI makes me want to jump off the nearest tall building. Scientific computation is where its at for me). And its great that our community has a wide range of personalities.
IMO you'd be better off doing past IOI problems.
I was just commenting that IMO the reason that Project Euler comes up often in discussions amongst programmers is because many programmers tend to be the type of people that enjoy Project Euler style problems.
If you want to get started, try going through TopCoder's high school competition arena. The problems shouldn't be too bad if you have a good understanding of your languages stdlib and about basic data structures (alternatively, it's probably a great way to learn a new language's stdlib). You basically get a problem statement and just have to fill in a method that performs the computations required with the example inputs. Then you can test it against all the test cases once it passes the example outputs. UVa is similar, except you have to take input from a file and it doesn't tell you what test cases your solution fails on (more like the ACM ICPC style of questions).
I prefer TopCoder more since the focus is all on algorithms (UVa's problems will usually require taking input/producing output in very specific ways, which gets annoying sometimes), and since you can see the top ranked competitors' solutions for previous contents. It helps to review these after you solve a problem to pick up little tricks.
[0] (http://www.topcoder.com/tc) - click the O(n) icon in the top left to start the arena applet. Then go to "Practice Rooms" -> "TCHS" or "SRM" and pick a room. Within each room there should be 3 problems valued based on difficulty.
[1] (http://uva.onlinejudge.org/) - go to "Browse Problems" to view them all, but I find http://uhunt.felix-halim.net/ more useful; just enter your username and it'll suggest problems for you to do next (based on increasing difficulty)