

High schoolers, advanced placement and Java - nopal

I was looking at my old high school's computer science curriculum, and I saw that Java is their language of choice.<p>Upon further inspection, it looks like The College Board, the company that oversees the Advanced Placement Program (AP) has also standardized on Java, which I'm sure influenced the school's decision.<p>Before learning that my alma mater offers modern programming classes, I was considering volunteering to teach an adaptation of MIT's 6.00 course as an extra-curricular course. 6.00 uses Python.<p>This has me thinking about the best language for new programmers. Java is obviously a powerful language with many useful add-ons, and I don't think it's bad for students to have exposure to it, but I wonder if it's the best language to start with.<p>Are there any teacher hackers out there that can shed some light on this? I'm not a teacher, so this isn't my area of expertise.<p>Any info on The College Board's reasoning would also be appreciated.
======
nzmsv
My university switched their CS 101 course from C to Java to Python. I tutored
students in CS courses, so I've seen what problems they had.

C is easy enough until you hit pointers (and arrays give people trouble,
strangely enough). Eventually pointers were just dropped entirely, and the
students were told to memorize that scanf is magic.

Then came Java. It was taught as if it were a prettier C. No objects anywhere,
just a bunch of static methods. The students were told to memorize a bunch of
magic once again (what's a "class"? why do I have to type "static"?).

I did not get a chance to help anyone struggling with Python. I think it is a
better teaching language, but you still have to teach a subset. If you show
beginners a list comprehension, they will likely swear off programming forever
:) The advantage is, the subset you teach can avoid magic.

One problem: Java is a (current) standard. Schools want to teach things they
think are useful in the workplace. Interestingly, students want to learn these
languages for the same reason. Just google "what programming language should I
learn", and read the responses. A large number will base their answer on
"what's used in industry".

~~~
nopal
Thanks for the info.

I wish the focus, especially for the AP program, was less on what the industry
is doing and more on what is best for becoming a successful computer science
student.

If a student is taking an AP course, they're not looking for vocational
training, and I don't think that's what colleges are looking for, at any rate.

~~~
kleinsch
The AP is a program for college credit, so they look at what colleges are
expecting. The majority of colleges are using Java for their intro computer
science classes, so the AP adjusted the class to account for that. The major
industrial players keep nudging colleges towards Java because that's what they
all use for their applications. We all like Python, Ruby, Scheme, etc, but
Lockheed Martin comes to a university with a $500K donation and suggests that
they teach Java, it's very persuasive. ;)

------
rwl
I don't know much about the College Board's reasoning, but I know that they
don't seem to be able to make up their minds. In the 7 years since I was in
high school, the AP course (which may have some freedom in the language it
uses, but ultimately must teach the language on the AP exam) has used at least
Scheme, Java, C++, and, possibly, C#.

The real question is: if you're going to teach an extra-curricular course,
what do you want to expose the kids to? A practical language that makes it
easy to do projects at home (like Python)? Some more theoretical CS ideas,
which can be expressed elegantly in Scheme? Both?

Keep in mind that the kids who take this course will probably also be in the
AP class, so you should try to complement whatever material they get there.

~~~
smanek
The AP exam has never been scheme.

It was: Pascal since at least 1990 (probably earlier?), C++ since 1998, and
Java since 2003.

Note: years are from memory, and may be off by a bit, but the general idea is
right.

------
johngunderman
I believe the College Board's choice stemmed from the fact that most large
corporations use Java for their infrastructure. While unfortunate, Java is one
of the most taught languages in colleges.

I took AP Comp Sci AB last year, and I found that although the material was
somewhat easy, many of the students had difficulty dealing with the syntax.
Another major issue i noticed was with the concept of OO programming. IMHO it
would be better to start an AP CS course with a semester of Python, so that
the students can get an idea of how programming works, without having to deal
with Java's verbosity. Then you can spend the second semester exclusively on
Java. Because the students will already know the basics of programming at this
point, they only really have to deal with the syntax and with generics,
instead of having to learn syntax and coding at once. That's just my 2
cents...

------
riahi
The College Board change to Java is not a recent development. The last year
that CB tested AP CompSci in C++ was when I was a freshman in high school
(circa 2002-2003). Since then, they have used Java as the teaching language.

As someone who went to school during the transition period, it was weird to
take intro to programming in C++, then swap to Java for AP-level work, but at
the same time, the change wasn't that great since the syntax is quite similar.

When I was in high school, the explanation for the change was always along the
lines of "Java is cross-platform and going to be the industry-standard by the
time you come out of college." Now as a senior in college, I wonder if that
statement is true these days.

------
crs
I don't think there is any perfect language for beginners. I think the most
important thing is teaching problem solving. So choosing a scripting language
like python and getting your students used to solving problems with it is a
really good basis for the future.

------
william-shulman
6.00 uses python now? :(. Call me old-fashioned but I think scheme should have
remained. I feel I really benefited from scheme being my first programming
language. Recursion is in my blood now :)

~~~
nopal
Yup, looks like it: [http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-
Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-
Science/6-00Fall-2008/CourseHome/index.htm)

