Should the first Programming/Algorithms class be taught in pseudo-code? When I was studying, my professors had different approaches when teaching programming to beginners:


Choose a language with which the professor is comfortable and fulfills the course requirements but might not be so popular in the real world. I had this experience with Mathematica programming. We would spend lots of time dealing with this language and as a result less time dealing with the programming language per se.
Teach in a flavor of pseudo-code. This makes it "harder" to commit errors cause by compilers, interpreters and syntax in general and allows the students to focus in the problem. Naturally has the disadvantage that you can't run your code anywhere.


What do most professionals and students prefer when teaching/learning algorithms and basic programming?
No, it shouldn't.  It's an appealing idea, but when kids are just starting in programming, one of the few straws they have to grasp at is that it is, on some level, very concrete.  I type:

std::cout &lt;&lt; "Hello World!";


... and out prints "Hello World!".  Without the ability to run and troubleshoot code, I'm afraid that everything will become abstract, and most students will simply flounder.

You can choose a language with easier syntax, such as Python, or a visual language like Scratch, but the kids really need something to actually run and manipulate if they are to make early progress.