owen

A recent thread on Slashdot asks, “Should students be taught with or without an IDE?” In programming, an Integrated Development Environment is basically a souped-up editor for writing code. The author of the question wonders whether students who are learning to program will benefit more from learning with or without the extra features that the IDE provides. I agree with most of the opinoins offered in the comments of the post, but obviously I have my own take on it.

My initial reaction is that teaching a language using an IDE is a bad idea, but I have certain reservations that I need to think out. Primarily, using an IDE is a bad idea since it doesn’t insist that students type out important syntax structures that are necessary for learning the language. If the IDE closes every function call with the proper parenthesis, and automatically inserts semicolons wherever they are required, students might not learn the necessary elements of the language to be able to do without the IDE. Perhaps this concept is not as important in C++ as it is in HTML.

In C++ you’re not likely to be building applications outside of your IDE of choice. So learning to work without that utility is probably not worth it. But for HTML, there are many cases - you are at a client site, or at an unfamiliar computer, or logged into a remote server via SSH using shell editors of various kinds - where you need to have that working knowledge of valid syntax and a mental HTML reference, without which your lack of IDE will not help you.

Additionally, even if you’re teaching C++, having the built-in compilation features can save tons of time when you’re simply trying to teach the language. Granted, you should have a unit on linking, object code, and compiling so that students understand how it all works. Make them understand what the IDE is doing for them in the odd off chance they need to configure one of the myriad settings that the IDE usually handles for you. But then forget about it. At that point, a very basic IDE (Dev C++ or TextPad, even) would work nicely for easing the compilation process and getting down into learning the language.

Another problem I’ve noticed with fresh students who have come to be hired is that none of them has any experience with debugging. At some point, these college professors are going to need to include some basic IDE-based debugging lessons in their courses. In many courses, all you do is write and re-build until you get the code right. Learning to use a stepping debugger is not only more effective for doing classwork at higher levels (where you want to focus on algorithms and structures), but is very useful in the workplace.

In the few programming courses I’ve taken, most of the code work was done on paper, never having seen an editor, much less a compiler. I think that an approach like this combined with some IDE and by-hand compiler training could greatly benefit students as they leave college looking for work.

So, I suppose that my gut reaction is wrong - IDEs sound like a good thing to teach, as long as you don’t allow students to use them as a crutch and make sure they know what the IDE is doing for them, in case they ever need to do it for themselves.