Re: Just teach them Python
I have to agree with the recommendation for Python when teaching the basics. Anyone planning a course has to deal with the reality that there are a very finite number of hours in which to teach, and the toughest decisions are which of the "essentials" to leave out of the course rather than what to include.
The design of Python allows the basics to be covered without requiring knowing the advanced features. Knowledge of syntax and features can be added to the course incrementally, instead of requiring the student to learn a large amount of what they would see as "mumbo-jumbo" up front.
The standard library is very comprehensive, which allows topics such as simple databases, regular expressions, string formatting, file and directory handling, socket I/O, servers and clients, graphics, simple GUIs, etc. without using third party libraries. The syntax of the language itself supports dictionaries, lists, sets, etc. Teaching all of these would be impossible in the time available, but it gives the instructor a good selection of topics to choose from without a lot of teaching overhead.
The on-line documentation for Python is superb, being some of the best that I've seen for any language.
Another big advantage of Python is that it is more or less self contained. It comes, as the saying goes, "batteries included". Installation is simple (if it is not already pre-installed). Again, this is very important from a teaching perspective, as there needs to be minimal overhead involved in the students installing it on their own.
No IDE is required, and none should be used in the course. There are many simple free text editors available which will do syntax highlighting and auto-indenting and require minimal time to learn. I have seen how introductory courses go where some students are still struggling to get their complex IDEs working three classes into the course and as a result haven't complete the first assignment yet. Class assignments are short and simple, so you aren't dealing with searching across massive code bases. If you "need" an IDE in order to use a language effectively in a classroom, then it's the wrong language for this application.
The Python compiler rigidly enforces a set indenting style, which again is a big advantage in a classroom environment. This means the style of code as taught by the instructor will be close to that written by the students, so the instructor doesn't have to wade through a mess of unindented code ("I was going to clean it up after I got it working" is the typical excuse) when students come to him with problems.
Overall, the reasons for using Python as a teaching language are quite compelling. For someone who is going on to take a degree in computer science, Python, or indeed any other single language, is not enough. I would expect them to learn a number of different languages, giving exposure to different concepts. 'C' is very important for a "serious" programmer to learn, but I don't think it's appropriate these days for an introductory course.