|
|
|
|
|
by lekanwang
5433 days ago
|
|
How introductory programming is taught should really be approached from two directions these days. (1) How to teach a firm foundation for those likely to pursue computer science, and (2) how to motivate and teach a breadth of material to those students who likely will not take more computer science courses. At a place like Stanford, a majority of undergraduates will have taken an introductory computer science course by the time they graduate, but it's obviously not true that a majority will be computer science majors. And while I appreciate SICP and Scheme and functional programming, and completely understand why that kind of thinking should be valued, it may not be the best way to present a breadth of introductory programming knowledge that will motivate, interest, and offer practical examples. Sure, lambdas are awesome, but when you are just starting out in your first programming course, the deep theory behind why lambdas are so interesting will almost certainly be lost on the students. It's like building up a field of math from, say axiomatic set theory or algebra. By the time you get to multiplication and fields (perhaps akin to variables or for loops in programming), you gain a very deep understanding and appreciation for the topic that can only be gained by this bottom-up problem based approach, but then again, a non-mathematician (or non-computer scientist) could have probably just assume the existence of multiplication or loops for the sake of solving higher-level problems. |
|