What programming language to teach?

You really want a static type-checked language for learning; it separates the oddities that arise from type issues from other run-time issues.

Dynamically typed languages may be easier to do as a pro, but IMO just muddle things up and make it harder to debug for beginners.

My vote would be Pascal; it’s relatively easy, and it’s specifically designed as a learning language. It’s not sexy, and it has its warts, but it’s still miles better than teaching beginners C, which should be a crime.

Teach the little hackers C and have them write their own Pascal compiler with it. That’ll teach’em.

Shit Yeah!
Fortran 77

Then tell the little bastards to go read this and not to come back untill they’ve mastered data structures and double linked lists.

I agree with having a compiler. It will help beginners to have something looking over their work to find errors. However, I would recommend Java over Pascal. Pascal is a great teaching language, but it’s hardly used outside of school. It would be better to teach Java since it is widely used in business and will look better on a resume.

Do not have them use any sort of graphical IDE. They should use a plain editor to type in. An IDE will prompt them along too much and they won’t learn the language as deeply. They need to actually type the whole program in themselves for it to stick in their head. For example, I’m doing a project now in Python using an IDE. I cannot remember any of the imported methods and their parameters because the IDE automatically fills it in. Previously, I was writing Java in a plain editor and I could write out a complete program just from memory. So from a learning standpoint it’s probably better to write everything out and then switch to an IDE later for efficiency.

MIT, at least in 2008, used Python. Also, Wesleyan university also uses Python.

“static type-checking” and “having a compiler (as opposed to an interpreter)” are not synonyms, for what it’s worth. E.g., Haskell, Standard ML, etc., are statically type-checked but can be used with an interpreter.

I don’t think anyone’s going to give a damn what language they took in high school.

IDEs come in different flavors, and most are configurable. I personally found the syntax checking and ability to set watches and breakpoints of IDEs indispensable for learning how to program… some 22 years ago. Typing it in and dealing with makefiles and compilers was a PITA step backward when we moved to UNIX machines a year or two later.

A small Relational database project would be interesting. Mp3 songs for example. Create tables for Album Title, Song Title, Artist, , year, chart position etc. I did a lot of those types of projects in Dbase III. I had all my albums entered. Wrote reports and queries. For example, list all my Boston albums in my collection. Which album has More Than a Feeling on it?

I taught myself a lot with projects like that and they were interesting enough to keep me motivated. I’m not sure whats popular today? MySQL seems too ambitious for a beginner. I strongly dislike Access but it’s fairly easy. DBase is still available. Whatever is current and easy to setup would be a good choice.

We only had ones and zeroes! Most of the time we didn’t even have zeroes!

I think this is the winner. If I work with java I can expand the current class into an AP class.