First, office suite applications are not computer science. If you want to teach the CS version of word processing, teach them LaTeX. In the meantime, I recommend something that I didn't do: start with a functional language like Scheme (I started with K&R). I TA'd for a Java intro class and it never went well. All the PL (programming language) grad students I know hate C++, and that leaves Python, Ruby, and the functional languages.
Scheme is pretty simple, and probably appropriate for HS-level coursework. One of my intro classes was with Scheme and I liked it (we used the wizard book, a friend of mine had The Little Schemer at his school). I've heard good arguments for using functional languages for introductory courses, but I don't really remember them
I also don't think it's possible to know who cheated, just how many.
Ugh, can we please stop appending '–Madison' to the name of the university? Nobody says 'University of Minnesota–Twin Cities'. I know nobody will listen
-Markus Peloquin, University of Wisconsin
Yeah, I have a bit of disdain for software engineering, so I would never think to mention it. I agree with most of that, except for the UML.
I meant that you learn languages on your own to get along, but it shouldn't be a part of the curriculum. Once you have learned a couple languages, you realize that they're all the same. The only way language-learning belongs in the curriculum is (1) for an intro class, (2) the class spends only a couple weeks on the language, or (3) a low or zero credit course teaches a language.
(First of all, the article title brought the biggest smile to my face.)
At least you can use it. I had Scheme for my intro class, and that doesn't exactly come in handy unless you're in PL. Anyway, I'm self-taught in almost every language I know. Most classes I've had either tell you 'we're using X, so keep up' or 'just write it, we don't care how'. Maybe take each summer as an opportunity to learn a new language.
I definitely get pissed off when I hear whiny untalented graduates say their CS program didn't give them what they needed in the real world (so don't be one of them). Good CS programs don't waste time teaching languages. It's all about the algorithms, data structures, and theory.
That said, you'll need to know some languages backwards and forwards. At least a general-purpose language (C, C++, Java, Go, etc) and a scripting language (Python, Perl, etc). Definitely learn how to do parallel programming in some of them. Also regular expressions: built-in to many languages and accessible from the rest.
Now, some people will claim that having 8-character indentations makes
the code move too far to the right, and makes it hard to read on a
80-character terminal screen. The answer to that is that if you need
more than 3 levels of indentation, you're screwed anyway, and should fix
your program.
And yes, sometimes I do read and write code on 80-character terminals.
I've discovered something nice about using this in C++. The body of a function defined inside a class is implicitly inline, and so it should be very simple. The extra initial indentation immediately gives less space for any complicated functions.
Life is a healthy respect for mother nature laced with greed.