I agree with the previous posters wrt taking an intro-level course to UNIX systems (and/or operating systems in general). This will give you a solid understanding of the environment you'll be coding in. When I studied (in the eighties), this was usually part of the intro to programming courses, but that may have changed.
I've only just started programming in Objective-C, and what a pleasant surprise that has been. My main programming life has been in C, C++ if I had to, and my daily bread in everything from COBOL to Ada. I guiltily admit that Java doesn't 'wire' into my brain. No matter how many times I've tried, my intellectual capacity just goes on the fritz whenever I've tried to learn Java. I think that holds for almost every programmer. Some languages fit like a glove, others like a vise.
Anyway, ObjC is extremely pleasant to program in. The strict superset makes it easy to learn, and the messaging methodology really takes some the best bits of Smalltalk.
Why the whole spiel? Because Apples ObjC (and XCode) documentation is some of the best I've ever seen, bar none. The Cocoa framework is so well documented, that you could actually learn everything you need (with one caveat) from the documentation alone.
The Caveat? Programming is not just painting something on a screen, attaching a few objects/classes/methods, compiling it, and presto, instant magic. That only works for the 'Hello World' class of programs. The second you begin something more complicated, you have to design (plan) what it actually is you need to do, and then learn how to do that.
I've helped many into the world of programming, and one thing that has struck me is that the 'pessimists' tend to last, while the 'optimists' give up eventually. By pessimists I mean those who approach the problem as 'given Foo, what can screw up Bar', in other words they program defensively. Typically their code has far fewer bugs and gotchas, than those who program without taking into consideration "what might go wrong (including the stuff I haven't even thought about)".
Design, test, program, iterate may sound stodgy (it isn't), but like everything else, with practice it becomes instinctual, and, dare I say, fun.
Sheesh, I'm rambling a bit here, sorry. Bottom line: at your level, worry about language and coding last, and learn the theory and methodology first. And as said previously, practice, practice, ad infinitum.
Best of luck.