Tell me more ×
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.

This summer I would like to not only improve my programming ability in C++, but I also want to learn how to think about the design of computer programs. I've only been programming for about 4 months, and next semester I'll be taking an "Advanced Programming with C++" class. Despite the name, its only an intermediate difficulty class. During my Introduction course I learned a decent amount of C++, but I didn't really understand the logic and design behind some programs.

I read through some of the threads to get an idea of what I should read, and this is what I came up with: The Pragmatic Programmer, Accelerated C++, Structure and Interpretation of Computer Programs

The first book is to learn general software development, and Accelerated C++ is to go through the tools that I'll be working with in my next class. SICP was recommended to me by a friend who claimed that it will alter my perspective on programming, which is what I'm really looking to get out of this whole thing.

The main goal that I'm trying to get out of this is to develop a mental toolbox to have at my disposal when I'm writing programs. I want to really understand what I'm doing instead of just writing out random code. It really isn't about getting a good grade in the class though, its about learning important skills that will help down the road in my career.

I have about 10 weeks of summer break so I'd like to read as much as I could. Could you please recommend some other books for beginning students? Also I'm sorry if this is the wrong place to post such a time, its my first time posting >_>

share|improve this question
Don't read, practice. Make a fun little project. – nightcracker May 16 '11 at 8:00

closed as not constructive by Mark Trapp Dec 9 '11 at 18:40

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

4 Answers

Effective C++, More Effective C++ are a must read books if you want to learn and master C++. The topics covered in these books will help you to avoid days (perhaps weeks) of debugging, and sorting out what's wrong with your code. Strongly recommended.
As for practicing, I'd suggest Project Euler, where you can find tons and tons of interesting problems ranging from "Hah! Peace of cake" to "oh God...what's that!?".

Don't try to attack huge projects designed by C++ gurus from the beginning as failure might demotivate you. Take it slow. Learn the tricks of the language, apply the language to rather small problems (which involve a lot of thinking though). Just systematize the process. Gradually you will feel more confidence, and ability to handle more.

share|improve this answer
I was actually recommended Effective C++ as well, but would it be something understandable for a beginner? – artz0024 May 16 '11 at 8:11
Since you've already had an introductory course, I assume you are familiar with the pointers/arrays, functions, classes, etc. So, I don't think it should be hard for you. – Sorantis May 16 '11 at 8:13

Reading all those books is good, it fills your head with theorical stuff that you'll need to know at one point or the other in the future, and most of the time you'll really understand most of the advices in those books only when you'll face real problems they help to solve.

Now, the problem with theory is that it have no real effective value without practice.

So, I suggest you to read those books but also have a project (a little game for example) to practice your skills. Maybe a textual adventure/rpg might be big enough for a summer without requiring to know graphical stuffs (that's a whole subject) and concentrate on C++ while doing something fun. You can do something else than games, just make sure it's an interesting project to you AND that it's a small project.

share|improve this answer
Thanks for the feedback! I'll definitely have to do a bit more research and thinking as to what kind of project to work on. – artz0024 May 16 '11 at 8:12

You may want to try something other than C++ for a change (I guess since you'll be doing A LOT of C++ in your courses). The Pragmatic Programmer book will actually give you the tip of learning a new language every year.

So don't be shy to test out languages, that can get you going quickly such as Go, Ruby, or Python to figure out language constructs you wouldn't be familiar with in C++, or tools that you might need to use such as build tools Make, Ant, or Rake. Version control tools such as git, hg, or svn is something that is uncommon in academia but very important in the industry that you might want to learn.

You don't need to learn every single detail about the language or tool, but just enough to get you going with small scripting. What I've found is that a lot of times this helps letting you script something quickly to assist in your regular development efforts.

In your case; even if you mainly do C++ it wouldn't hurt to know Make, so you can do clean builds of your software, or Python to create some scripts that may spare you from some repetitive work. If you're productive enough, you might want to put your project in git source control.

share|improve this answer

I'd recommend Code Complete over the Pragmatic Programmer. They're both good books but Code Complete covers more ground.

As for the other books? Start a small project and when you're blocked, look it up. Some simple games to program are for example Minesweeper, Snake or Tetris. These can be programmed in a day and will teach you quite a bit.

share|improve this answer

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