Reddit reviews How to Design Programs: An Introduction to Programming and Computing
We found 7 Reddit comments about How to Design Programs: An Introduction to Programming and Computing. Here are the top ones, ranked by their Reddit score.
Mit Press
I recommend to read this book first before starting with the book mentioned above (this one teaches scheme as well).
http://www.amazon.com/How-Design-Programs-Introduction-Programming/dp/0262062186
Or read it for free online: http://www.htdp.org
C++ has more meticulous detail that just about any other language.
This book would be a good place to try again. Or if you're really ambitious, this one. Both will teach you more of what programming is really about, using a language that has a minimum of syntax to deal with.
It's more of a reference book. If you're just learning Scheme I'd recommend SICP (of course), HtDP, and the Schemer series.
You should check out How to Design Programs.
> This introduction to programming places computer science in the core of a liberal arts education. Unlike other introductory books, it focuses on the program design process. This approach fosters a variety of skills--critical reading, analytical thinking, creative synthesis, and attention to detail--that are important for everyone, not just future computer programmers.The book exposes readers to two fundamentally new ideas. First, it presents program design guidelines that show the reader how to analyze a problem statement; how to formulate concise goals; how to make up examples; how to develop an outline of the solution, based on the analysis; how to finish the program; and how to test. Each step produces a well-defined intermediate product. Second, the book comes with a novel programming environment, the first one explicitly designed for beginners. The environment grows with the readers as they master the material in the book until it supports a full-fledged language for the whole spectrum of programming tasks.
Entrepreneur Reading List
Computer Science Grad School Reading List
Video Game Development Reading List
Amazon: $63
Google Shopping: $30 - $115
The book "Structure and Interpretation of Computer Programs" (SICP) that I mentioned in my first post says (to paraphrase) "Computer Science is about managing complexity." Lots of people would say SICP is overly pedantic, but I think a general course in computer science would help you to think about big, difficult problems by creating a better framework from which to "manage complexity" (so long as it's not a shitty course). For example, if you can create solid abstraction layers, you'd have an easier time converting your ideas into code.
Looking at that "Learn Computer Science with Python and Pygame" book you mentioned, it doesn't really seem to do much to capture that concept. The problem with learning with these languages is that you can't really help but be bogged down by the syntax, and by the time all is said and done all you've really learned is about how to use <insert language>, but not for anything particularly useful. That book literally spends every chapter explaining Python to you, which is fine for learning Python, but it only scratches the surface for learning programming.
On the flip side, SICP spends roughly a single page describing its language because Scheme (or at least the subset/variant it uses in that book) is so damn simple. SICP is also really fucking hard, though. I've heard How to Design Programs is a pleasant alternative. But there's a reason these two classic CS books use Scheme, and if you look at the tables of contents on these two books you'll see how they're fundamentally different from the Python book you used (they actually teach programming instead of how to use a language -- they give you a context for things like OOP).
So here's my recommendation. Keep working with Python because it's a good language, but note that you're just now getting over the hurdle of having learned the language and you still need to learn how to program. A lot of people do well without having read SICP or a similar book, but I think that comes from looking through a lot of other people's code and figuring out how they structure their programs and whatnot (i.e., how they manage all that complexity).