Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a grade 11 student and have Computer Science... I just love the subject.. We are doing C++ ... I have loadsss of interest in this subject ... I am kind of able to do the programs but would like to master C++ before college itself... It would be kind enough if someone can tell me some sites where there are source codes of some good programs (specially library systems)...Also, can anyone recommend any books!

Moreover, to have a profession as a C++ programmer, what is required? I mean what type of courses in college should I apply to? Do I need to do Computer Engineering for this?

share|improve this question

closed as off-topic by MichaelT, gnat, Bart van Ingen Schenau, GlenH7, Dan Pichelman Oct 3 at 19:45

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, gnat, Bart van Ingen Schenau, GlenH7, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

You can also check out this question. –  Mahmoud Hossam Jan 2 '12 at 10:41
What does "master" mean ? Knowing all the rules of the language ? Being able to write working programs ? Knowing as much APIs as possible ? C++ is one of the hardest computer language, even after working with it for several years you will learn new things all the time. Rather than wanting to "master" it, change your objective to creating cool programs with C++ as one of your tool, and you will learn a lot of things along the way. –  Jonathan Merlet Jan 2 '12 at 10:57
With extreme difficult.y –  DeadMG Jan 2 '12 at 11:40
Using this method, you can do it in about 21 days abstrusegoose.com/strips/ars_longa_vita_brevis.PNG –  Glenn Nelson Jan 2 '12 at 12:41

10 Answers 10

  1. You buy yourself good C++ books and work through them.
    Buy one book at a time and take your time to understand everything.

  2. You set yourself programming tasks and try to write programs that solve them.
    Start out with easy ones. Ideally, the books already provide tasks. (Many do.)

  3. You ask at Stackoverflow as soon as you run into a dead end.
    Try to solve the problem yourself, and if you can't, ask a concrete question about a concrete problem you have. Learn how to boil down a piece of problematic code to a 20-lines repro case. Learn to ask good questions.

  4. You spend a lot of time on this.
    C++ cannot be picked up as easily as some other languages. Be prepared for this to take months, if not years.

Learning C++ will be pretty good in the long run, since picking up other imperative languages is comparatively easy once you know C++.

share|improve this answer

Learning by doing is most critical.

Quite often theories themselves may look exciting or boring - but unless we put things in practice, we don't really get a real feel for what it means. The point that drives the learning is when we have real questions raised in our minds - quite often beyond what text books poses.

It is very important that you chase behind something which is worth it. As we do things - we evolve our thinking. you will see yourself from asking "how-can-i-do-this" to "why-does-it-work-the-way-it-is".

Now coming to the concrete answer to your question. Here are some simple suggestions:

Learning process for you will have critical steps.

1. Problem Solving
The first thing to learn is learning a language as a problem solving tool. This will start with learning the programming syntax and semantics. (this is enough learned through the class room assignments. And later you should try to implement Data structures and Algorithms on your own.

You can study from many possible books and implement something on your own.

by this time, you should be able to solve problems well using C++.

2. Learning elegant design
One of the most important corner stone for being able to write good programming is to be able design good object oriented code. This is essential. My personal favorite book is from James Rambaug. What is important is that you must get concrete reasoning - ask why rather than how about learning this.

At this stage - learning would be best when you take up some full project on your own. I would strongly advice that you should do an assignment on your own fresh rather than start some existing code at this stage. It should be small, but it must have some good puzzle in it.

Only when you look at multiple object/ algorithms interacting you will learn that there is a good deal of possibility when you take the problem as good-design rather than just-make-it-work.

3. Learning software development practices
Finally, as you manage to write a full-thing on your own, and would have solved issues that pained you, now, by the time you have got to this stage, you will begin to realize that there are good-ways-of-doing and bad-ways-of-doing. This is where practices comes in place.

You can refer to the books like "Effecitve C++" as already pointed by many. Also, i would add another book in reference as "Code complete".

At this stage you must take up a fully functional Open source project to see how things work. Take up something small but that excite you; and at once - you will find many things a bit not-so-obvious.

As you grow with some of the projects - you will begin to see blend of great-problem-solving, elegant-design and dependable-practices. That's all it takes to become a good software engineer!

Important thing is to remember to ask - How and why at all times.

One final reference. Read this: Teach yourself programming in 10 years.

I don't know how much you have actually reached, but you can guide yourself to this.

share|improve this answer

If you want to study loooong listings of C++ source code written by other people, you could go visit various open source projects. SourceForge.net is a good place to start.

Books... I do not know, but I am sure someone else will mention some.

In order to get hired as a C++ programmer when you are straight out of college you will need to be able to demonstrate a good grasp of the fundamentals of C++, which are basically object orientation, pointers, memory management, preprocessor macros, standard library functions, and common usage scenarios of the stl types. If the employer is extremely demanding, they may also expect you to be able to read and understand templates, or perhaps even how to write your own templates, though that's unlikely if they are really interested in hiring a fresh graduate.

University courses which may be thought of as relevant to C++ are operating systems and computer engineering. (When you are coding in C++ it helps to know how the memory is organized, how the CPU executes instructions, what is a register, what is the machine stack, etc.)

All that having been said, I would recommend that you do not focus on C++ too much. Software Engineering is more about the concepts, than about the language. In certain schools the computer science curriculum does not even include programming languages, the rationale behind this being that the focus of the degree ought to be on the science, about which we can reason exclusively in terms of pseudocode, whereas the programming language that might eventually be used to implement the theoretical concepts is considered simply as a technicality. (This does not mean that there is no programming going on in these schools; as a matter of fact, they expect the freshmen to be already familiar with some programming language in order to be able to complete assignments; it is just that they don't waste time teaching languages.)

Also, as you learn more and more about software engineering, and more and more about different languages, your favorite language is likely to change. So, don't put all your eggs in one basket.

share|improve this answer

I suggest also learning some other languages, like Haskell, or Ocaml, or Common Lisp, or Erlang, or Opa.

I also suggest reading some good computer science book which are not focused on C++, like e.g. SICP and some algorithmics books.

Both ways (and others) will improve your skills, even in C++, because they will make you think differently.

Learning and using a free operating system (like GNU/linux) is helpful, in particular because you can study (and improve) all the source code inside.

And I suggest, if possible, to continue your studies at University or equivalent.

share|improve this answer

SourceForge is a popular place to look through piles of source code. I have no book recommendations.

Moreover, to have a profession as a C++ programmer, what is required?

Simply to get paid for it. That's pretty much it. College helps with that. A lot. Both to help you get your foot in the door and to force you into the parts of the profession that you might otherwise neglect.

I mean what type of courses in college should I apply to?

You'll be forced through a syntax class, try not to get bored. You NEED an algorithm class. Also: data structures, networking, discreet math, operating systems. A low-level class that shows you how a processor physically works really helps. Some sort of web-dev class is a good idea. Some SQL is useful.

Do I need to do Computer Engineering for this?

No, but it depends on the University. I went through ISU's CompE degree where the engineering college was heaps better then the ComSci department. Computer Science is technically what you're asking about, but I hear some schools are more about the science and less about the functional application thereof. In general I'd recommend an engineering degree, but go for software engineering if they have it.

share|improve this answer

Here some books you should put on your shelve:

  • The C++ Programming Language by Bjarne Stroustrup himself. This is the book on C++. Well written, comprehensive, but no easy read. If you are serous about the topic get this book.
  • Effective C++ by Scott Meyers. The "first second book" on C++. This book answers a lot of essential questions and gives recipes to common problems. Before I read this book I didn't know about a lot of mistakes I made.
share|improve this answer
Both of these (and a lot more) are listed in the Definitive C++ Book Guide thread I referenced in a comment above. Why duplicate information? –  Péter Török Jan 2 '12 at 13:42
"receipts to common problems"? Did you mean recipes? I would edit, but I am not sure: it may be an idiom I am unaware of. –  Mike Nakis Jan 2 '12 at 18:24

Practice makes permanent. Only perfect practice makes perfect.

Learning by doing is the best, but be sure that your "doing" is right (be selective about your sources). Also important with using any tool or language is learning when NOT to use a tool. The best practitioners are those who know when not to use a certain tool, and when another is more appropriate. Many people fall into this trap when they learn design patterns at first- they try to fit the problem to the pattern, not the other way around. That said, consult a variety of techniques and sources- as you expand your toolbox you'll notice that certain things work better than others.

Write code, use different approaches, and use different high-quality resources (especially when they don't agree).

share|improve this answer

Keep practising and keep moving from the smallest programming paradigm to the greatest like meta programming, STL etc. Get your hands on C11. if you really want to master C++. In a year or so programmers will be known complete if they know C11 altogether with legacy C.

share|improve this answer

If you’re interested in and have a knack for programming languages, you should seriously consider pursuing a computer programming degree once you finish high school. You could pursue either an Associate degree in computer programming to lay your groundwork in the subject, or pursue a Bachelor in Computer Science with an emphasis in programming. Whichever you pick, make sure it’s from an accredited college, or your degree will be worthless. According to Payscale, Computer Science was one of the highest paying majors in 2011.

share|improve this answer
Hi KennyClark. Please avoid HTML in your posts, and prefer the Markdown syntax when possible. –  Yannis Rizos Jan 11 '12 at 8:36

Reading and practicing is a good combinations. Remember that more important that you sit-down and code 8 hours, is the discipline of make it everyday at least 1 hour. Be focused on your goals. Read, read and read books, forums, tutorials. And implement your own ideas.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.