I used the "Morse Code Teaching Machine" to learn the letters and numbers. The DOS version ran best on my Windows 2000 laptop. The Windows version has punctuation too, but added a lot of noise on my laptop.
Morse Code Teaching Machine

AA9PW has a site that gives you Morse code practice exams. This is a must to build confidence! You can practice the written exams there too.
AA9PW Practice exams

I used G4FON's "Koch Method CW Trainer" to practise QSO's. If you change the characters number to the maximum it then will show you a "QSO" button. This is a great Windows program, that minimizes to the Systray.
Koch Method CW Trainer

QRZ has a link to many different morse code programs too.

W1AW Code Practice can be downloaded from HERE in MP3 format.

--... ...--
-.- -.. ..... -.-. ..-. --