Self-taught programmer here.
mangetout’s suggestion makes sense to me based on my experience, but I would not suggest working through examples in a book. Pick a topic ripe for automation that is of interest to you and automate it. Buy a good book only when you get stuck, have been stuck for days and are getting frustrated. A “good book” is defined as one that you can see answers your question when you browse through it in a bookstore with a lot of choice.
As far as an introductory topic is concerned: try and make it work related. Get some kind of mock up done at home, then bring it to work and mention to your boss that you’re working on it (on your own time, hasten to add, and definately not plugging unauthorized programmes into production machines!).
This will accomplish a number of things: you will be learning real-world coding problems, because you will be solving a real problem; you will be showing your boss (and anybody within the company who cares to listen) that you’re a keener; when you interview for your next job you will be able to bring up the topic and possibly get the assignment of building the programme for their system.
For example: I’m in the investment business, on the buy side. Do you know that there are still many, many companies out their who calculate their account performance and composites thereof using Excel spreadsheets? And there are other companies who spend a quarter of a million dollars on a turnkey solution? And then God knows how much on data interfaces (or even wholesale reformatting) so the turnkey solution will have a key to turn? And that writing a programme to calculate composite performance is not exactly the world’s most conceptually difficult job (tedious, yes: data has to be pulled in from all over, cleaned, error reports written, etc.; difficult, no)?
Assuming that your math degree does mean something (I’ve met PhD’s for whom it doesn’t) you will want to stay away from RAD (Rapid Application Development) languages like Visual Basic; you will want to get into the very atoms of the code so that your implementation of your understanding of the problem at hand will not be handicapped by large ‘grain-size’ of the compiler. As suggested above, C++ and Java are both good choices. I would add Microsoft’s new C# to the list of possibilities: I know absolutely nothing about it beyond the Microsoft ads (and I’ve only skimmed them!) but not only is Microsoft the standard-setter (for good or evil) but you will be learning a language that doesn’t have as much established competition as the other ones.
Note that this will not protect you from the ignorance of Human Resource departments (notorious in the field for wanting 5 years’ experience in technical specialties that have only been around for 2), but it won’t hurt.
Your morse-code programme certainly indicates at least a little interest and proficiency; as mangetout noted, you really have to find out for yourself whether you like it or not; you also have to determine whether or not you’re any good at it. There are a lot of very smart people out there, some of whom have degrees in math, who can’t programme to save their lives … it’s not just a skill, there’s a certain amount of talent involved. When I’ve hired people in the past for investment/programming jobs, I’ve always emphasized the programming aspect … you see, investment stuff is something I can teach!
Good luck!