Ok, with the first edition of Basic Programming Concepts complete, there is one question I should address. Up until this point I have taken an agnostic standpoint on what Object Oriented Programming Language is the best. The reason for this is that I honestly feel that there is no one perfect solution. As a result, I find it odd when I am asked for a recommendation on what programming language to learn.
Now, the honest truth is that to learn the concepts behind Object Oriented Design, and various development strategies such as Test Driven Development I recommend picking one language and staying with it for a reasonable amount of time. In addition, the truth is that basic books such as Big Java do show how the syntax of a programming language works, but often don't cover many of the design concepts. With that in mind, I strongly recommend looking up books such as The Pragmatic Programmer: From Journeyman to Master to help with that. Most importantly though, creating our own projects is probably the best way to learn how to code. Now there will be various jobs that certain languages can do better or are needed for when working with certain platforms (of note being Apple's obsession with making people use Objective-C for iOS prior to 2010), but when learning how to program, picking any halfway decent Object Oriented Language and sticking with it should work.