When will the the language for Intro/AP Computer Science change?

This summer I took an Intro CS course, and this year I’m taking APCS. Both courses used Java; however, we had a few days at the end of summer school in which we were introduced to Python. Apparently just a few years ago APCS was on C++, and Intro switched to Java a year or three before that.

So obviously the language of initial computer education does change. Given how much simpler and more user-friendly Python is than Java, will/when will they start teaching Python regularly?

As soon as Python becomes more popular than Java. Don’t hold your breath.

As far as I’m concerned, C was obsolete the day it came out. Pascal and Algol were common at that time, and C was the bastard language to make dinky machines do anything at all. Never a real programmer’s first choice, but a kludge.
I still feel that way.

Introductory CS courses need a language that encompasses the most features that are commonly found in Real World or College environments, so that the teacher is able to instruct on those principles.

Java seems like a pretty good choice to me. Heck, my intro to CS was in Ada. ADA!

I think we did it in Pascal, although that might have just been a personal choice. The more important thing is to get the concepts correct. Easier is not the most important thing. You’ll probably end up working with something altogether different anyway.

My first CS course was in Pascal. It’s remarkable how some of those concepts stuck with me – to my detriment – as I transitioned into programming in C++.

I don’t know anything about Python. What I know about Java, it sounds like its probably a good “intro” language if you’re going to be programming in C++ some day, which you probably are.

I wish I’d started with Java instead of Pascal. It would have saved me a lot of shitty coding.

My university has just switched from teaching Java as a first language to Haskell. I think there’s several reasons for this, one being that the whole course structure has changed, and any student doing Computer Science, Software Engineering, Cognitive Science, AI etc. now does two years of Informatics, and two, that the guy teaching the course is Phil Wadler, one of the principle designers of Haskell.

I disagree. Computer Science courses need a language in which it is easy to express algorithms. The course you are describing sounds more like Software Engineering.

That’d be more of a design angle.

I really can’t imagine why any language would be better for expressing algorithms than any other.

Feel free to feel that way, but anyone who thinks Kernighan and Ritchie are not real programmers is lacking some serious historical perspective.

Pascal, btw, was a dreadful language for system programming due to their decision to keep the notions of pointers explicitly hidden from the programmer.

Well… LISP would kind of suck for algorithm instruction.

But any procedural language…

Really? So assembler is just as good as Java or C++?

Some languages are particularly good for expressing certain kinds of algorithms which is why, I think, they used Scheme in the MIT introductory computer courses for quite a while in the 80’s.

Yes, insofar as LISP algorithms are not quite like algorithms in procedural languages, and learning how to write algorithms for procedural languages is a more practical skill. From what I remember about LISP, it definitely did have algorithms though.

And I do think that there are procedural languages in which it is easier to learn algorithms, than in others.

When I was starting CompSci at York, the starting language was another little obscure one, Object-oriented Turing. They switched to Java for the freshmen when I was doing my third-years. shrugs Both of them seemed alright. (I didn’t really learn any Java until after I’d got my bachelor’s.)

You know what I mean.

This is one of those “chacun a son gout” sort of things. As I noted in my last post, Scheme, a dialect of Lisp, was used extensively in introductory computer science courses.

The idea was that Scheme, as a pure (sort of) functional language, effectively removed syntax as a roadblock to understanding the language. Recursive algorithms, in particular, could be expressed elegantly, however Lisp is also extremely good at functionally decomposing problems into conceptually digestable chunks, so it fits very nicely into the top-down programming model.

(To simplify for the non-computer scientists reading this thread, rather than writing one big giganto function to handle a problem, top-down programming supports breaking the problem into smaller functional subunits. Lisp or Scheme makes it very easy to program this way because whenever you get to a part of the program you don’t know how to write, you just leave a placemarker function and define the function later.)

Actually, no I don’t. When you said “I really can’t imagine why any language would be better for expressing algorithms than any other.”, my brain exploded.

My head threatens to explode everytime I even hear LISP.

shudder

Just wondering, from some of the above posts on LISP, was your textbook “The Little LISPer?”

Just out of curiosity, did anyone else notice the error in the thread title?

Bah! The first language I learned was COBOL. <insert puke smiley here>
On punch cards. Young people these days…