Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
High schoolers, advanced placement and Java
10 points by nopal on Nov 30, 2009 | hide | past | favorite | 11 comments
I was looking at my old high school's computer science curriculum, and I saw that Java is their language of choice.

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.

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.

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.

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.

Any info on The College Board's reasoning would also be appreciated.



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".


>C is easy enough until you hit pointers

You forgot recursion. If there are two things you can count on CS1 students to not understand, they're pointers and recursion.


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.


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. ;)


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.


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.


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...


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.


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.


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 :)





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: