Hacker News new | ask | show | jobs
by gcv 5433 days ago
I have taught short programming classes for total beginners, and had the most success by following the first chapter of SICP.

1. It explains what computation is. Total beginners generally have no idea how a program executes and what it does. Explaining it using the substitution model is extremely helpful.

2. It introduces functions right away. This is a way better introduction than trying to explain type-related nonsense like "this is an integer, and this is a floating point number, and this is a string, and these are operators."

3. It avoids IO as the first thing people do. This helps avoid the problem of people thinking that printing "hello world" to the screen is equivalent to returning "hello world" from a function. Beginners should write functions which return stuff, not worry about whether the gets function (Ruby) returns something with a trailing newline.

4. Minimal syntax. Beginners have a hard time with semicolons and begin/end blocks. Python? You're kidding. Beginners don't understand whitespace indentation until they've been programming for at least several days, and making things align right is a horrible thing to throw at them.

I'm willing to accept that SICP's requirement of knowledge of basic calculus makes it a high barrier for many students, but frankly, it's the only book I've seen which introduces beginner concepts in the correct order.

1 comments

There's no denying raw SICP demands a high level of mathematical maturity, since that could be assumed of all students taking 6.001 (all must master the calculus and calculus based Newtonian mechanics and E&M). But since you can't have an accredited by ABET CS program without requiring the calculus....