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 >_>