I'm studying physics at uni and as part of my course did a brief introduction to C++, roughly covering the topics in the tutorial here. I really enjoyed it and would like to learn more, as it would be very useful to me in a future physics career, and also because I'd interested in learning about careers in programming/software development.
My question is, where do I go from here? What do you think are the most important topics to study? What books or courses might help me? Some have suggested to me that the way to really learn programming is to get work experience in the real world - at the moment though I'm pretty sure I don't have enough knowledge so how do I get to the stage where that's a possibility? (I'm very aware I've only just scratched the surface of this!)
I'd begin by reading a good book on it, like "C++ primer 4th edition" that should give you the basics and a bit more. There's probably much you already know but it won't kill you to take a second look at it.
It most certainly did not kill me. ;)
After that, well that's up to you. Join an open source project, or something that makes you feel that you are the weakest link in the chain, it's always a good push to learn more.
Given your background, in addition to a C++ tutorial, you might also be interested in a "numerical methods in C++" book.
I don't know which books are in vogue, but you could Google for universtity reading lists which include them (this is my standard way of finding solid books).
I came into softtware development via physics, and my earliest proper programs (as opposed to the ones I wrote out of interest as a teenager, ...) were written to model physical systems.
Using your programming skill to solve physics problems will give some focus to your C++ studies. Outside of algorithmic work, it should also motivate basic GUI graphic, for examples.
Andy
P.S. And algorithms are not only one of the main things you need for physics programming; they are also one of the highest paid skills in the financial programming world.
Books are awesome.
Websites are great.
People can teach you.
But the greatest thing you can do is practice. Come up with tasks you want to accomplish and iron them out in code. You'll learn a ton, and the things you need to learn will come up when you need them =]
When I first started I had several goals, after they came into fruition, the knowledge that I gained sprouted new ideas, and it just kept going off, like a chain of small bombs flowering out. It just keeps getting better =]
(even then when i did NOT know what parameters to the main function was all about)
Next i just made experiment with printing (aka std::cout'ing) varibles and text. Next big heap (to me) was learning usage of if (condition) // And "derivates" such as else if and else (also switch(condition)) .
After those learning for, while, do-while loops was easier (at least to me).
Next big thing was classes and how to use them wisely... (still on that path :P)
GUI-wise -- are you going to be starting off with Mac or Linux or Windows?
One possibility is to look at a cross-platform GUI toolkit, like Qt, wxWidgets, or FLTK
Andy
P.S. If you google "Qt vs wxWidgets" you will find loads of debates about this.
P.S.S. You can also search this site for "wxWidgets" and "fltk" and look at the "should I use..." type of threads. They will usually compare toolkits against each other. (the site didn't let me search for "qt" -- I guess it must ignore very short words?)
P.P.P.S. As ultifinitus has since pointed out, the previous P.S. should have been P.P.S.
I do have some knowledge on C but I know that it is different from C++ I just don't know how far is their differences. And so, I am trying to learn things in here. :)