From: Stephen Kellett Date: 2005-11-24T03:27:25+09:00 Subject: Re: teaching ruby as cs intro? In message , Gregory Brown writes >I agree, Ruby should be taught at universities, I also agree that it >should be taught rather early, but surely not as an intro to CS >course. Computer science is about fundamental operations of the >computer and manipulations of that... that's what makes C ideal for >such things. Programming is about solving tough problems cleanly and >efficiently, and Ruby is great for that. I agree with this. Every software engineer that I have worked with that I respected and knew that I could rely on to get the job done has been someone with a fundamental understanding of the low-level workings, word sizes and so on (I'm well into my 3rd decade on this now). They've all been bitten by rounding and truncation errors due to hardware limitations imposed by the processor and pointer failures and so on. Their understanding is deeper than the people that didn't do the fundamentals. 11 years ago I went to a job interview once where they showed you some code and asked you to list what was wrong with the code. It contained all sorts of syntax errors and some subtle logic errors. I missed most of the syntax errors (as I wasn't looking for them) but found all the logic errors including one that no other applicant had ever found. The reason I found that error was because of my background working in assembler and C on embedded systems where you had to know the word sizes and so on. They commented about me missing the syntax errors and I pointed out the compiler would find those but would never find the logic errors. I got the job. This story isn't to fluff my ego, its to demonstrate the value of this low level knowledge. For the bug concerned the code had an error that caused to only count the first 4 bits of the 32 bit word it was scanning. For the tools that Software Verification make and which I have a hand in the research behind them we could not make or perform the reverse engineering and hooking required without this knowledge. All the Ruby experience and high level concepts in the world would not help in this task. Teach them the fundamentals, with real experience using C or assembler - something where they can make mistakes due to hardware limitations. Then teach them Ruby (and keep them away from Java). Stephen -- Stephen Kellett Object Media Limited http://www.objmedia.demon.co.uk/software.html Computer Consultancy, Software Development Windows C++, Java, Assembler, Performance Analysis, Troubleshooting