   Studying Tecnhiques...(?)
  Just wandering,How do you guys study C++ programming? What is your technique? How many hours?.. etc   
  When i did the small amount of C++ I have done, i sat down with the "Learn C++ in 21 days" book, and worked through it. Its pretty structured, so you don't ahve to bulldoze all the information in one go, and you only cover per day whats detailed, so its at a nice steady pace (sometimes..too steady hehe)At the end of each chapter, i used to make up my own programs for what we had covered, or altered what we had covered..But, the other books I've read its been kind of read as much as possible, whilst coding at the same time..depends on book / Subject in the book..   ;  I used the workshops at the bottom of the forum to help me learn C++ and C#. My routine generally went like this:1.) Read the assigned chapter2.) Any time I saw source code examples, I manually typed them out and ran them to see what happens2.1) I read through the source code line by line and made sure I understood why things were the way they were (why was there an int and not a double, or how come he used a for loop and not a while loop)3.) After I read the entire chapter, I hopped on over to the workshop forum and looked at the quizzes. I then proceeded to answer all the questions, while looking up the answers to any that I didn't already know4.) After answering the quiz questions, I did the review exercises. These generally consisted of writing a short program demonstrating the topic learned in the chapter. 5.) Experiment!!! At this point, I started to think of ways to solve problems with what I had just learned. I liked to take the review exercises and change them a bit. For instance, if the exercise was to write a program that asks what the users name is and say hello, I would change it so that it asked for their name, height, and weight, and gave them their Body Mass Index. (You get the idea where I'm going here :P)I hope this helps you,--Vale   ;  Works for any subject really.Take an hour, read up on the subject.Take a half hour to hour break.Re-read what you did in hour 1. Then do the homework/practice problems/examples for atmost an hour.Take a 2 to 5 hour break. re-read your examples and do more examples.If you get stuck, take a 5 to 15min break.Once you are fluent with some of the ideas you can spend more time on the subject. The idea is to keep the influx of new ideas: low enough for your brain to absorb, high enough to keep you challenged, and repeated enough for it to stick.The most important part though, is application (examples, homework).  Don't just read math or programming. Program. Do. There is a whole host of problems in programming that for some reason aren't taught well, or at all. 1% is understanding how to write a program (ie, find the first 100 primes. print them).  The other 99% is understanding how to debug all the errors you encounter while writing the program ( compile errors like "missing ;", and runtime errors like "why did it print 4, 4 isn't prime" ). But all the reading in the world can only take you so far. You'll have to apply.Personally, I don't remember what I did. Started programming in basic when I was 9, and the theory of programming I think became more of a second language.  I'd sit down after school about half the days, and work on little text adventures/roguelikes.  College I did ACM and TopCoder challenge matches, tutored friends, and attempted to make an RTS. Now I take weekends and read up on some new technique (like most recently fluid simulation), and try to implement it in a day. Either I do or I don't but the challenge keeps me sharper.Aside: You know. Does anyone actually know of good debugging tutorials? That DOES never seem to be taught. And good debugging seems to separate the best from the good in programming.   ;  There is a huge difference between learning a programming language and learning to program. Make sure you learn to program as well!   ;Quote:Original post by KulSeranAside: You know. Does anyone actually know of good debugging tutorials? That DOES never seem to be taught. And good debugging seems to separate the best from the good in programming.I only have two bookmarked:http://www.gamedev.net/reference/articles/article2322.asphttp://cowboyprogramming.com/2008/09/09/debugging-memory-corruption-in-game-development/   ;  Learning to program is like learning to do pull-ups.Reading about it isn't enough - you need to actually do it.  Maybe you can't do even half a pull-up now.  So get a chair (a book/tutor/etc.) and use it to help you do your first assisted pull-up.  Keep doing that, but with less and less assistance each time.  One day you'll hop on the bar and do a full pull-up on your own (your first self-written program).  It's not much, but you're learning.  Keep doing that pull-up frequently and you'll get to 2 pull-ups, 3, 4, and so on (bigger and bigger self-written programs).  After years of work you'll be a professional at it and be able to knock out 60+ pull-ups.   ;  They way I learn is by making games. When I come across something that I don't know how to do, or wish I knew a better way to do, I post it here, and usually get informed of a much better way.For example, I recently learned about enable_shared_from_this after asking on the forums here.I think "studying" programming is not particularly useful. Practical experience is much more important.   ;  I always learn best by jumping into a project that's way too hard for my experience level.  I do research or make a forum post here when I'm stuck on something, then I go back days/weeks/months later and rewrite all the horrible code.  This works for me because I'm never in a hurry to get a finished product out, I enjoy the learning experience.Programming is not something you choose to study for X amount of hours a day in my opinion.  Instead you PRACTICE programming because you enjoy it, the same way you would practice playing a sport or playing an instrument.  Sure, you can buy a book to study a sport or study playing an instrument but the majority of the time is spent practicing -- same with programming.   ;  Personally, I learn the quickest by jumping straight in the deep end. Pick something out of my league, figure out as much as I can by myself (by playing around, seeing what does what, etc), then research the parts I had trouble with, then try and apply that to what I know. After I know as much as I can know by myself, I'll grab a book, or run through some beginner stuff, reinforcing my knowledge, pretty much just ticking off stuff I already know, to confirm I'm correct or not.I learn better by directly playing around with what I'm learning. Reading text books or having a lecturer tell me stuff, doesn't work for me. It does work a bit however, after I'm slightly familiar with the material, and can apply what I'm being told in my head as I'm begin told it.When I started to learn C++ (The language that is, I could already kinda program), I jumped right in, and started making a multi user chat program (client/server socket). I busted out as much as I could, then looked up some beginner tutorials, then went through researching what 'vector<int> a(50)' meant, what the hell '<<' was for, how pointers worked, etc, etc.Knowing how the rest of c++ worked, I found it pretty easy to slot those things right in to my knowledge base. Then I spent a bit of time breezing through a bunch of beginner, intermediate and advanced tutorials and books, confirming what I figured out about c++, was in fact correct.I follow this same procedure with learning anything new, including speaking other Languages (Japanese, German), theoretical physics, advanced mathematics, etc, etc, even playing a new video game (I go through the tutorial only after playing a bunch of rounds first)As for time investment, it doesn't really matter, as you never stop learning. Learn something new everyday, and never stop playing.   