Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The best way to learn programming conceptually is to read Structure and Interpretation of Computer Programs, by Abelson and Sussman. The book is available free on-line, along with video lectures.

- http://mitpress.mit.edu/sicp/ - http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...

Once you have mastered this material, learning the specialization of web development shouldn't take more than a week or two of intense study.

Plus, as a bizdev person, you will earn incredible street cred with programmers. MBAs with backgrounds in Lisp hacking don't come along every day.



It's such a great book and I basically agree with everything you said, but I feel I should add a little caveat.

SICP is truly a masterpiece, but it might not be the best book for someone just starting out who wants to do productive stuff like prototype web apps. Peter Norvig wrote in his review, "I agree that the book's odds of success are better if you read it after having some experience" and I think I agree too, although I'm biased since I only read it after getting a degree in CS. I don't know how I would have felt if I'd read it as a freshman.

Felleisen et al argue that SICP isn't the best intro in their "The Structure and Interpretation of the Computer Science Curriculum" and although I haven't read the whole thing, I think I agree that How to Design Programs might be a better first book. It's certainly easier going, and you couldn't ask for a better environment than DrRacket to get started. And it's also freely available online.

1st ed: http://www.htdp.org/

draft of 2nd: http://www.ccs.neu.edu/home/matthias/HtDP2e/


The original post asked for advice on learning "the ins and outs of programming" — and prototyping web apps most certainly does not qualify.

No comment on HtDP, as I haven't read it. Heard good things about it, though.


I would advise AGAINST diving into SICP until you are familiar with turning text into a program with at least loops, conditionals, and basic functions.


I've been a fan of advocating SICP as a first text specifically because students would then have fewer bad habits to unlearn.


Have you had success with assigning it? Have you seen beginning students learn using it, or have they come back to and said "gosh, I am glad you told me about SICP two years ago, it put me down the right path?"

You might have higher caliber students than I have had (or am), but I have a hard enough time explaining how to use a text editor in one window and run a script in another. To get to actually doing something useful enough to keep them interested via SICP is, well, beyond even imagining.


I'm about to give it a shot, and I'll let you know how it goes. :) Joking aside, I think the first chapter of SICP is the most useful, straightforward, and gentle (yes, gentle!) introduction to programming in existence.

While it obviously sucks that your students can't figure out text editors and scripts, I hope to alleviate some of the pain by using Racket, its integrated editor, and the "Run" button on the toolbar.


If you wanted to write a blog post about SICP and beginning programming students, that would be great. I think after one has successfully programmed a moderate sized project (a text based game of life, for example, or a simple cgi+session+database app), SICP would be great... but not till then...

(But then I am the type who very early learned to avoid what the best professors thought was a good intro text and only trust my fellow students. Because once you see the field as a whole, you have VERY different taste in introductory texts, and more seem to prefer terse and comprehensive overviews which start from first principles, which are also the VERY WORST sort of introductory text possible.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: