The best way to learn composition? The absolute best way?? Take a full score of anything (piano sonata, violin solo, to a full symphony) and transcribe it by hand using all kinds of crazy, time consuming exactness. As you're copying great masterworks (you probably only need to do one or two, a large work and a small work), you will become a part of the harmonies. Listen to the melodies as you're writing them.
You get (kind of) into the head of the composer this way. You are actually "writing" the music. Trust me, I did this over the summer, and I am world's of a better composer because of it. Of course, if you just copy it, then you're not gonna learn anything. You have to consciously get involved in the "writing" process. haha. It gives you a different process and a different mindset. Copying a John Adams or Ligeti score is gonna be completely different from a Scriabin or Durufle score or even Chopin or as far back as Mozart... or even farther back, Bach. Choose a score in a style you're not used to. it will FORCE you to think differently and it will greatly influence your pieces.
Do some melodic and harmonic analysis. Maybe do ideas in different colored pencils. I dunno. Go crazy! :) It can be really fun. Make sure you choose a piece you "like", though. Spending months on doing it with a broadway score when you can't stand the strained singing? Not a good idea. You'll hate it and you won't learn anything. There's a difference between repulsion and a difference of opinion.