There are some good suggestions here, but I'd like to throw in my $0.02 worth as well. Maybe you'll learn from my past mistakes.
First of all, congrats on wanting to learn code! Once you learn it, you will be opened up to a whole 'nother world of radio.
Many years ago, I used the casette tapes from Gordon West, WB6NOA, to learn code. I'm sure the set is still available, probably on CD now. West's code tapes were a blessing and a curse. I used his tapes to learn at 5 WPM, then the other set to build my speed up to 20 WPM (for the old Extra class exam.) I liked his teaching style, he made learning code fun and simple. However, he teaches the code at 5 WPM which made it more difficult to learn how to read code at faster speeds. Now I wish I had done as others suggested and learned Farnsworth style. Learning code at 20 WPM character speed with 5 WPM spacing would have been better in the long run.
Another bit of advice, if at all possible, learn to hear each character instead of depending on writing down what you copy. The Gordon West tapes encouraged you to write down what you copy, because on the old code tests even if you missed too many questions, as long as you had written down 1 minute of solid copy you passed the test. Once I started using CW on HF I realized that during an 18+ WPM QSO it's pretty difficult to write down everything the other station is saying. It took me several months to retrain my brain to hear code as a language and copy it in my head.
One other suggestion, once you start to learn some characters start copying on the air CW for practice. If you don't have access to an HF rig, try this website:
Morse Resource It will allow you to convert any text to code, and has several practice audio files you can use.
Good luck!