From: Gregory Brown Date: 2005-11-24T01:07:08+09:00 Subject: Re: teaching ruby as cs intro? On 11/23/05, Mike Schwab wrote: > My school teaches intro to programming with Java or C#, intro to cs > with Scheme, then requires two semesters of C to scare us into being > good and careful. Learning about Ruby has been a way nicer > experience and I think it would draw more kids into the major if it > was taught early on. What do you think? > What I'm about to say might come as a surprise to many, but I personally don't believe Ruby is an excellent language for an introductory computer science course. (Before the axe comes down, bear in mind that in 02 years, the University of New Haven WILL have a Ruby centric class, due to my prodding ) Now back to the point at hand. Good computer science and good programming are NOT the same thing. The lines between programming and Software Engineering blur somewhat, but not even completely, wheras theoretical computer science and programming are barely in the same field. I originally thought when entering my university, wow, CS is going to make me a better programmer. It doesn't. In fact, the limited scope of the courses would actually hinder people from becoming good programmers if they did not go beyond what was taught in class. Ruby is wonderful to work in... it's reasonably easy to learn, and we all know of it's clean syntax, inherent beauty and simplicity, etc. But have you ever stopped to wonder about how it works? How readily could you drop to it's C source and understand how various features were implemented. As someone who's taught programmers and non-programmers alike how to do ruby, I find it is far easier to show them how specific things are used (closures, iterators, etc) than it is for me to explain what's going on under the hood. If CS (especially elementary CS) is all about the things that are going on under the hood, well... Ruby is downright horrible for that because it is designed specifically to seperate us from the low level frameworking that needs to be done to do something simple like something.sort 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 have long suggested that my university teach a course on practical programming tools, practices, and languages. I think this could be an entire track of courses, delving into the agile methodology, revision control systems, continuous integration, unit testing, 'Agile' languages such as Ruby and Python, installation of 3rd party libraries, packaging and preparing software for release, etc. There is a wealth of knowledge in these topics, but when you mix in academia, who knows what will happen to them. Still, this is worthy of seperating from the more fundamental 'computer science' which has excellent application to research and other related fields but limited if not minimal relevance to practical applications. Nevertheless, I do think it's great you're fighting to get Ruby into your university. However, instead of fighting, you might try petitioning for additional courses to be added, rather than changing courses rather radically. This is generally easier on everyone, and doesn't hurt anyone who loves to munge around in C all day ;) Well. theres my rant for the day. Hope this wasn't *too* much flamebait.