I can throw in my ramblings as a reasonably experienced programmer who does not know mech e. Maybe this is irrelevant to you, so disregard if you wish.
C++ is an absolute mess of a language. However it is widely used and if for whatever reason your field extensively uses it, well, then you have no choice. In any case, though, I would most definitely NOT recommend it as a first language if possible.
Java was initially conceived as a cleaned up version of C++. Personally I think it would be a much better place to start than C++ (although not ideal). The best thing about Java is not the language itself, it's the platform. Do you need to write a program that runs on Windows, Mac OS X, and Linux, that communicates over a network, that has a graphical interface, and that uses a database? In Java, no problem, libraries to help you do those things are built in. In C++?... Good luck.
I don't approve of the "Learn X in 21 Days" type of books. Writing code is a serious endeavor. Unfortunately there are a lot of people writing awful code and a lot of awful programming books out there. If a superficial understanding can get you by for what you need, then so be it, but I don't like to do things halfway.
The poster above says languages are easy to pick up once you know one. I mostly agree. For instance, an experienced C++ programmer is not going to have a problem learning Java. However, some languages, especially non-mainstream languages, have different paradigms that can be hard for users of other languages to wrap their heads around. When object oriented stuff first started getting popular, a lot of people had a really hard time understanding what it was all about. Some people never did.
As far as being "outdated"... Some of this has more to do with what's trendy than anything else. Java was extremely fashionable a few years ago; much less so now, although still widely used. But its technical merits haven't really changed. It's a mundane object oriented language with extensive libraries, 8 years ago and today. The people who were saying it was the greatest thing ever a few years ago now look stupid, as do the people today saying everyone should stop using Java immediately.
To throw in my last little tidbit... I think all these mainstream languages are crap. There are some really, really amazing languages that 95% of programmers just ignore because they won't help you get a job. ML, Haskell, and especially Lisp. There is a great little Lisp dialect called Clojure which I love to death and which is built on the Java JVM, so you have access to all the Java libraries. Unfortunately your language decision likely has more to do with what language your colleagues will be using than its technical merits, so do what you must.
Book recommendations:
*** C++
Unfortunately many C++ books teach a style of C++ from before C++ was standardized 10 years ago. These are good ones:
Accelerated C++ by Koenig and Moo. Teaches modern C++ for a beginner.
Effective C++/More Effective C++/Effective STL by Meyers. C++ has a LOT of pitfalls. These will help you avoid them. I consider Effective C++ pretty much essential. (These will NOT teach you the language, though.)
Exceptional C++/Exceptional C++ Style/More Exceptional C++ by Sutter. These are basically more advanced versions of the above. Read after you have a little experience.
The C++ Programming Langauge by Stroustrup. The definitive book by the creator of C++. Not appropriate for a beginner though.
*** Java
Unfortunately I don't know a good beginner's Java book. I'm sure there are some out there but there are tons of garbage ones also. I have:
The Java Programming Langauge by Gosling.
Effective Java by Bloch. Analogous to Effective C++ above. Do not attempt to write serious Java code without having read this book.
*** Other
If you have time to devote to this and actually want to become good at it, I strongly recommend Structure and Interpretation of Computer Programs by Abelson and Sussman. It's actually available for free online from MIT: http://mitpress.mit.edu/sicp/ It is supposed to be for a complete beginner, although it doesn't provide as gentle an introduction as I would think ideal.