Slashdot Mirror


College Board AP CompSci Exam Will Be In Java

orangesquid writes: "Looks like the College Board has changed the tune for their AP Computer Science test: in a few years, it will be in Java. Eep!" From the announcement linked to in there: "In October 2000, the AP Computer Science Development Committee made a formal request to the College Board that the AP Computer Science curriculum be revised to include object orientation and to use Java as the delivery language for the AP Computer Science Examinations, beginning with the 2003-2004 academic year. The request was approved by the College Board in November 2000."

8 of 323 comments (clear)

  1. Read the spec! by tmoertel · · Score: 5

    The Java2 spec clearly states:

    A conforming Virtual Machine implementation shall support automatic garbage collection. The garbage-collection method is unspecified and left as a design decision for the implementor to consider based on the desired runtime characteristics of the Virtual Machine. However, it is required that any conforming implementation's garbage collection satisfy the required characteristics defined in Section 6.5.2, namely that it be godawful.

    Wow. Go figure...;->

  2. Why confined to a language? by Kastagir · · Score: 4

    Why does a compuer science test have to be confined to a language? Regardless of the arguments that the language could die, or changes too fast, it seems a little restrictive. I've taken many pseudo code and theoretical tests which in my opinion are much better for testing understanding of the material such as procedural vs object oriented, algorithms and complexity, data structures, etc. They could have chosen Perl, Python, [insert your favorite language here] and my answer would be the same. Test theory, at least at the AP level.

  3. Link for full specs by Alien54 · · Score: 5
    The page with the full specs is here.

    to help clarify:

    In this section, we discuss the Java subset that students will be expected to master to take the AP CS exam. We also mention a number of features that are potentially relevant in a CS1/2 course but that the AP CS exam does not cover.

    . . .

    Keep in mind that this subset is intended for the AP CS exam. The purpose of the subset is to enable the designers of the AP CS exam to formulate questions relating to the AP CS syllabus. The AP CS subset is not intended as a prescription for a computer science course. We expect courses to cover language features that go well beyond this subset. For example, many instructors will choose to cover applets, graphics or user interfaces. However, none of these topics are tested on the AP CS exam.

    To help students with test preparation, the AP CS subset is purposefully kept small.

    We omitted language constructs and library features that did not add significant functionality and that can, for the formulation of exam questions, easily be expressed by other mechanisms in the subset.

    For example, inner classes or the StringBuffer class are not essential for the formulation of exam questions -- the exam uses mundane alternatives that can be easily understood by students. Of course, these constructs add significant value for programming.

    Omission of a feature from the AP CS subset does not imply any judgment that the feature is inferior or not worthwhile.

    etc.

    worth looking at just to see what they'll be looking for

    --
    "It is a greater offense to steal men's labor, than their clothes"
  4. Why not SmallTalk? by TagrenHawk · · Score: 5

    Yes, Java is much easier to learn than C++. (Although, I have heard some purists argue the point.) Yes, Java does teach basic "object orientedness," but if the aim of the Board is to teach true object oriented programming they ought to teach/endorse SmallTalk where EVERYTHING is either an object or a message between objects. Granted, we want our high-schoolers to stay sane, however, there is something to be said for teaching the right way the first time.

    Sometimes I worry that our high-schoolers are being taught tools instead of concepts. I know that univerities go much more in depth than any high school can. At the same time, I sure wish that I had had a stronger theoretical background in computer science from my high school that only taught Word Processing and Basic.

  5. It used to be Pascal by crow · · Score: 4

    When I took it in 1986, it was based on Pascal.

    The language doesn't really matter, the programming concepts do. However, it's very difficult to talk about programming concepts in the absence of a language, so they need to settle on one.

    It makes sense to use one that has real practical use, so students can learn relevant skills along with the theory. That makes the education more valuable and easier to grab onto for the students.

  6. Functional, SML, pointers, open minds. by barracg8 · · Score: 4

    I am a final year CS student, in the UK. On my course, we were taught SML, lisp, mips assembly & C in the first year and Java from the second year (amongst other languages). From next year on, SML & C will be cut, and they will teach Java from day 1 of the course.

    The C course was tough for people new to the language - and most people like me who knew the language well skipped every lecture & aced the exam. I can see an arguement for dropping C from the core compulsory syllabus - most of the language overlaps with Java - and there are many CS related jobs in the world for which you never need know what a pointer is.

    But it is a shame that SML has to go. SML is a functional language, and few people had programmed in it prior to starting the course, so it brought everyone to the same level. It taught something new to everyone, and opened up the minds of a bunch of hardened C hackers to a different paradigm. I'm sure exactly the same could be said for lisp, but I hated the lousy stinking language myself ;-)

    I'm sure that most people reading this have probably never programmed in a functional language, and if you are a C hacker I recommend you do so - it will expand the way you approach programming. Or try something ever more, uh, different - go look up the language brainfuck, and get yourself stuck in a turing tarpit.

    End rant. Just thought I'd relate this experience :-)

    cheers,
    G

  7. Re:Good. by woggo · · Score: 5
    Yeah. While we're at it, let's not impose Latin, French, difficult sheet music, The President's physical fitness test, or calculus on them either. God forbid anybody should be challenged by an AP exam.
    You're missing the point. Teaching high-school students Latin is teaching them a language. Teaching high school students computer science is teaching them a sort of epistemology; an entry into a discipline. Teaching students difficult sheet music is teaching them an application of a physical skill and intellectual interpretation.

    C++ is the medium, not the message. The class isn't "AP C++", it's "AP Computer Science", and my original point was that C++ is an unnecessary encumberance on learning computer science. I learned French in high school by studying grammar and conversing, not by reading Sartre. The medium can interfere with the message. Why do you think children don't learn to play, say, the oboe or bassoon at a very young age, instead starting on the clarinet? Unnecessary complication gets in the way of learning the basics.

    The goal of computer science education is not to churn out C++ coders; rather, it is to churn out people who are capable of describing solution generators rather than merely "solving problems", people who are capable of procedural epistemology, abstraction, and analysis. That is why the language for the AP class ought to be absolutely as simple as possible to convey the concepts. I taught myself Java and implemented LZW in a total of three hours, because I had a strong foundation in the basics. Making students learn computer science via C++ is like making them take the President's physical fitness test in shackles.

  8. From a C++ programmer... by rjh · · Score: 5

    Why does everyone on Slashdot hate Java so much?

    The losers and poseurs hate Java. The real hackers see Java as just another tool in the toolbox. It's not a tool I have much use for, nor a tool that I'm particularly fond of. But I don't go out of my way to slam Java, either, and more to the point, I don't know a single serious programmer who does.

    I consider the One True Language belief to be a childhood disease.

    C++ is simply a pain in the ass and it's [sic] OO design is crap.

    Please show me how its OO design is crap. Just give me a good, solid example of unadulterated crap in the C++ spec. I've been looking for years and I haven't found any. That's not to say there aren't warts and blemishes on C++; but unlike almost every other language out there, C++ was not designed--it evolved.

    There isn't a single feature in C++ which went in just because it was "elegant". Nor is there a single feature in there which was left out to "enhance the purity". C++ was originally C With Classes, when Bjarne was just starting out... and then people gave him feedback, and then people began to mutate Bjarne's C With Classes to fit their own needs.

    A lot of people complain that C++ lacks garbage collection. That's a fair criticism; that is one of the warts of the language. What people don't understand is that C++ lacks garbage collection because GC is something that's very hard to implement correctly. C++ lacks a standard thread library for the same reason.

    Compare C++'s lack of GC and thread libs to Java. Does Java have GC? Yes, and it's Godawful. Does Java have a thread lib? Yep, but it changed dramatically between 1.0 and 1.1, and even now Java threads still are being tweaked on.

    I originally learned OO programming in Eiffel for NeXtStep here and that was coming from learning Pascal for the AP test back in 1996.

    I'm happy for you. Now open your mind a little bit and realize that Eiffel is not the be-all end-all of OOP. Nor is Smalltalk, nor is Clu, nor is Simula67.

    OOP is a concept, not a concrete reality. Just like a PIII is conceptually a Turing machine, but it doesn't have a paper tape and a symbol scanner. There are dozens of implementations of the OOP concept--I've seen them done in C, in C++, in Java, in LISP (!), in Simula67, in Smalltalk, in Objective C... and all of them have their warts and flaws. But by studying them and realizing where they're flawed and where their flaws are actually stunning successes, I've been able to better grasp the abstract notion of OOP.

    If the only thing you study and appreciate in your CompSci career are languages you think are neat, you're going to wind up a well-educated idiot.

    Java is NOT bad

    Undisputed by every programmer I respect. Of course, just because it's not bad doesn't mean it's good, either. I'd give Java a grade of "painfully mediocre", myself.

    Java has the best networking API on the planet

    How many networking APIs have you studied? Have you fully grokked the raw power of the UNIX C socket API? Have you seen the beautiful elegance of some of the C++ socket libs out there? What about Perl and its networking abilities? Python? CORBA?

    They're all just tools in the toolbox. Use the right tool for the job. If you like the Java networking API, fine; I'm not going to tell you it's bad (because it's not). But if you're going to say Java's API is unquestionably the best, you're going to have to prove it, and I don't think you can.

    C++ is crap for OO

    You apparently don't know beans about OO, or programming in general, or else you'd know that this statement is false.

    Is C++ perfect? God, no, not by a longshot. I beat my head against it frequently. But that doesn't change the fact that for OO, C++ is one of the best languages out there. Not the cleanest, not the most elegant, not the best-designed... just one of the best.

    If true OO design philosophies are held so highly by all of the geniuses on Slashdot why do programmers for Linux make EVERYTHING in C and then try to fool themselves into thinking they are actually OO when they are not?

    Ever seen GTK+ or GNOME? Both are object-oriented. Written in C, natch. This probably boggles your mind, since you think that C isn't OO. The truth, which all of us real OO programmers know, is that almost any language can be used to write OO code. C++ just provides some syntactic sugar to make it easier.

    The kernel is also rife with objects.

    Motif is OO C as well.

    Maybe if people learned OO programming...

    ... like you did?

    and used decent OO languages...

    ... like the ones you think are decent?

    before trying to do everything in C and half attempts at C++...

    Define a "half attempt" at C++, please. I can write procedural code in C++ and have it be perfectly valid C++.

    then we would have a better Linux/Unix today.

    I think you need to learn a lot about OO, and expose yourself to a lot more languages and paradigms, before you'll be able to sell me on any of this.