Andrea Griffini <[EMAIL PROTECTED]> writes: > On Sat, 11 Jun 2005 21:52:57 -0400, Peter Hansen <[EMAIL PROTECTED]> > wrote: > Also concrete->abstract shows a clear path; starting > in the middle and looking both up (to higher > abstractions) and down (to the implementation > details) is IMO much more confusing.
So you're arguing that a CS major should start by learning electronics fundamentals, how gates work, and how to design hardware(*)? Because that's what the concrete level *really* is. Start anywhere above that, and you wind up needing to look both ways. Admittedly, at some level the details simply stop mattering. But where that level is depends on what level you're working on. Writing Python, I really don't need to understand the behavior of hardware gates. Writing horizontal microcode, I'm totally f*cked if I don't understand the behavior of hardware gates. In short, you're going to start in the middle. You can avoid looking down if you avoid certain classes of problems - but not everyone will be able to do that. Since you can only protect some of the students from this extra confusion, is it really justified to confuse them all by introducing what are really extraneous details early on? You've stated your opinion. Personally, I agree with Abelson, Sussman and Sussman, whose text "The Structure and Interpretation of Computer Programs" was the standard text at one of the premiere engineering schools in the world, and is widely regarded as a classic in the field: they decided to start with the abstract, and deal with concrete issues - like assignment(!) later. <mike *) "My favorite programming langauge is solder." - Bob Pease -- Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list