Language choices for APCS
Over on Facebook the semi-regular "is APCS-A going to Python" once again appeared. I'm not going to get into Python vs Java. Each language giveth and each language taketh away but it got me thinking about the history of language changes.
I titled this "Language choices for APCS" not APCS-A because back in the day it was just APCS. At some point that split with APCS-A being similar to what we have today and APCS-A being that plus a CS2 (data structures) class. Finally after 2009, APCS-AB was dropped due to low participation, I mean, my school represented 10% of the total test takers - that's nuts - 10% from one school.
I took the exam during the first administration in 1984 and taught APCS-AB from 1991 I think up until I left Stuy.
Originally, APCS was in Pascal. Back then, the course guide said that they intended for the exam to become language agnostic but that never happened. Instead we went to C++ in 2000 and then to Java in 2004.
Now, I don't have any inside information here. I've never been in on any internal meetings so this is all just conjecture but I think it's interesting food for thought.
Back in 1984, schools were transitioning from either no computers or Commodore PETS to Apple IIs. At Stuy, where I was a student, the teacher had a single copy of a Pascal compiler on a floppy disk and he made copies - one for each computer in the lab. Not too much concern about piracy here.
As we approached 2000 when APCS switched to C++ the knocks on Pascal were:
- It's a teaching language
- You can't have programs that were more than one file.
- It wasn't Object Oriented which gained a lot of steam over the decade.
The first item was also mentioned as a strength and item 2 really wasn't an issue in terms of what most people taught. In any event, the College Board decided on a change.
I started thinking about why C++ over Pascal? I know that C++ was the hot industry language at the time and to be honest, I don't remember what other languages might have also been viable. I did think though about one big factor in C++'s favor. By this time schools were moving to IBM PCs and C++ had a really big hidden value - the existence of Turbo C++. A C++ compiler and IDE that ran on the IBM PC and was cheap. Prior to Turbo Pascal and Turbo C/C++ schools didn't have the ability to cheaply compile programs and certainly students who were fortunate enough to have computers certainly couldn't afford a compiler.
I have no idea if this factored into the decision but I think the economics and the fact that compilers and development environments were just not that available back then are an interesting bit of history.
What about the next change? C++ to Java in 2004. By then I had moved Stuy over to Linux but most schools were still on Windows. By this time there were more affordable and even free compiler choices so I'm guessing school economics didn't have to enter the decision. What probably did was the fact that APCS-A participants were stagnant and APCS-AB were declining. One might conjecture that the complexity of C++ had something to do with this. While Pascal also had memory management C++ memory management is more complicated and less forgiving. Also, since C++ is really a multimodal with "many ways to do it" it was probably much harder for both students and teachers, many of whom didn't have a CS background. Java was the hot up and comer, was not multi-modal but was indeed object oriented, and really is a much simpler language.
Now, as I said, I have no idea what was discussed internally at the college board but I think it's interesting to think about the history.