(forwarded on behalf of Andy Ko)
I'm amazed to see so many recommendations based on power, consistency,  
expressiveness, and performance. These qualities are great properties  
for people using languages on a daily basis to build shippable, robust  
code. But in most cases, trying to teach what someone ought to know  
ideologically (objects first, elegantly designed languages, etc)  
overlooks the fact that the complexity of these languages quickly  
exhaust any motivation such students had to start with. Unless one has  
an amazing teacher to help every student overcome the upfront  
complexity with sheer charisma, the only students still paying  
attention at the end will be the ones with a high tolerance for failure.
My advice: tell the students upfront to expect constant failure,  
intense debugging, and give them guidance on how to respond tp such  
failures. Do that and it doesn't really matter what language you use  
first. Teaching these courses is a matter of managing expectations and  
providing concrete, reusable disgnostic strategies. Save the  
principles for once they have these strategies, and they'll have a  
much better experienced-based insight into how and why the principles  
Andy Ko
Information School
University of Washington
(Andy: I have added your mail to both announce and discuss lists.
Cheers, Chris)
Chris Douce, Institute of Educational Technology, The Open University,
Walton Hall, Milton Keynes, MK7 6AA
+44 (0) 1908 653 414

Reply via email to