Hello and good day: For a long time I loved to learn how to program, but recently I took the plunge and started taken classes in a nearby school, because I believe to learn something right you will need a teacher. I finished my first year and we learn a little C as an introduction to programming, basics of Java, Database and web design.The problem is I found most of their curriculum is in a practical direction, with less theory. I am a Laboratory Technologist and most of my work is practical, but all that theory we studied in the university and we hated it , it came very handy in the real life and helped me a lot to solve some work related problems. I know programming is practical but it's important to me to learn the theory behind it and learn how to THINK to program. So, can you direct me toward some resources to help me in that matter ( Think how to program, how to approach and solve the programming problems, and most important how to transform an idea to a working application). perhaps I am a little in hurry here, I am planning to continue to finish all 3 Years in this school, and may well study some of this things in the future but from what I saw it doesn't seems we are going to get a lot of it. Another advise needed, in second year, I have a choice between C# and .NET or Java, what you think it's better and will help me when I start learn mac programming by my self since there is no mac related topics in our school ( bought the recommended books, start next week). Any other tips are appreciated Sorry for any grammar/spelling mistake, english isn't my native language. Edit: Generally, I want to better understand programming concept and idea.