I definitely recommend learning to program in a different language before you take your Java class. Java makes things more complicated than they need to be for a beginner, so it’s good to have a conceptual foundation in a simpler language. If all you care about is being able to reason abstractly about recursion and that sort of thing, Scheme is a language that’s good for beginners and will teach you to do that. (You could download this and read this free book or this free book.) If you want to focus more on kicking butt in your Java class and building games/web applications/scripts for automating your computer, I recommend learning Python (I like this guide; here’s another free book). These are both great choices compared to the languages people typically start learning to program with. I would lean towards Python because the resources for teaching it to yourself are better (there’s a Udacity class, the community online is bigger, etc.) and it will still give you most or all of the rationality-related benefits of learning to program. Search on Google or talk to me if you run in to problems (teaching yourself is tough).
I definitely recommend learning to program in a different language before you take your Java class. Java makes things more complicated than they need to be for a beginner, so it’s good to have a conceptual foundation in a simpler language. If all you care about is being able to reason abstractly about recursion and that sort of thing, Scheme is a language that’s good for beginners and will teach you to do that. (You could download this and read this free book or this free book.) If you want to focus more on kicking butt in your Java class and building games/web applications/scripts for automating your computer, I recommend learning Python (I like this guide; here’s another free book). These are both great choices compared to the languages people typically start learning to program with. I would lean towards Python because the resources for teaching it to yourself are better (there’s a Udacity class, the community online is bigger, etc.) and it will still give you most or all of the rationality-related benefits of learning to program. Search on Google or talk to me if you run in to problems (teaching yourself is tough).