So I've decided to start a personal programming project just to try and to improve my programming skills and improve my abilities to organize myself better.
The problem is I've only worked on small assignments so far, at most a few classes (the files of course) per project in Java. We covered inheritance and basic data structures (linked list & stack) in my previous winter semester and am currently taking Data Structures & Algorithms and Advanced Program Design with C++. I intend to do the project in C++ since it'll help me out with the course.
This means I don't have experience organizing a larger project and all it entails. I would love some general advice related to what I've already discussed. I don't have a project idea yet, which I know would help this out a lot.
One thing in particular I'm concerned about is backup, since it would keep my project safe as well as the ability to access from other machines. I've been using Dropbox for my homework for all my courses for a while, but after hearing about their privacy issues I don't really want to put anything important on it. What's a good service for backing up code privately and securely, but so that I can still work on it without constantly redownloading just to unencrypt. Or should I even bother with that and just make it open source? Either way it would be good if the solution were preferably free or very cheap.
In either case I was thinking about trying some sort of version management, but once again I know very little to nothing about it. I was thinking of using NetBeans since it works with everything I need for school so I may as well use it for this as well, so the version management should work with it. Also my preferred operating system is Windows 7 64-bit.
I've heard good things about Git but apparently NetBeans only works with a local Git repository so I'm not sure how well that would work with an online repository.
Also, a quick question on versioning: should the program be in some sort of working state before even uploading it to the version management system, be it on an open source site or not?
I know I'm asking a lot and I bet there are even more things I could ask. I'm looking for as much advice as I can get because I really feel like I have no idea what I'm doing or getting myself into.
Edit: Of course the code should be able to be worked on while offline, when I take the train home for example.