Slashdot Mirror


First Java AP Computer Science Exam Complete

BlindSpy writes "Yesterday, Tuesday May 4th, high-school students all over the U.S. took the first-ever Advanced Placement Computer Science College Board exam based on Java. The exam is given as an opportunity for high-school students to earn college credit in programming. The test is based on whichever language colleges are looking for, which signifies a significant step for Java. In past years, the exam has been based on C++ (1 year) and Pascal (around 10 years)." If you took the exam, what were your impressions?

34 of 812 comments (clear)

  1. Java? by CowboyShit · · Score: 2, Interesting

    Don't you mean Visual Java?

  2. Java has become a standard in many schools by Omega1045 · · Score: 5, Interesting

    When I was doing CompSci (about 10 years ago), they were just switching from Pascal to C++. Many of the files at my fraternity were in Pascal (so much for those "references"). However, speaking with younger students that have worked for me over the last several years, more and more of them have been taking Java instead of C or C++, and many have never seen Pascal.

    Another thing that I have noticed is that a lot of students are also taking VB in college, and some of the windows based scripting languages based on it like ASP. I have also seen a lot of PHP experience. This is especially true of engineering, and compsci related courses (not hardcore compsci).

    I am surprised that the AP exam for Java wasn't around several years ago based on what I have seen in a variety of school via 2nd hand knowledge.

    --

    Great ideas often receive violent opposition from mediocre minds. - Albert Einstein

  3. I say great! by Rosco+P.+Coltrane · · Score: 4, Interesting

    The more Java programmers the schooling system churns out, the more work for us old-style programmers who know C and assembler.

    You'd be surprised how much the industry is sick of Java programmers, and on the lookout for good low-level engineers, or people who can do Forth or COBOL.

    It's the current schooling system that allows me to keep a dot-com salary, so don't change anything for me thank you very much.

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
  4. Re:Good for them! by Anonymous Coward · · Score: 1, Interesting

    My question would be - where are they learning this stuff? Clearly it never has, isn't and probably never will be something taught in school... and it seems really weird that you would be allowed to take a highschool test on a topic that you learned entirely on your own, in your own time, with your own resources, on your own whim...

  5. Re:Language shouldn't matter! by NitsujTPU · · Score: 2, Interesting

    That doesn't really cover "first year" CS though.

    I would imagine that creators of AP tests are trying to test what a student entering university would test out of. At my alma matter, the first class was basically coding, then data structures, then algorithms and hashing, and so forth.

    The language seems unimportant to us because it is unimportant to us, but with no knowledge of any languages, how is a student to learn the rest?

  6. The least funny... by Anonymous Coward · · Score: 1, Interesting

    thing about the AP test was when they threatened "copyright infringment" if you discussed specific multiple choice questions.

    I'm under the impression this is b.s. If this were true, then anyone who ever said anything bad about a writen publication would be sued.
    It kinda mad me mad, actually.

  7. Re:It sucked by Anonymous Coward · · Score: 1, Interesting

    hahahahahahaha

    if you can't do recursion you suck balls.

  8. polyglots only? by moviepig.com · · Score: 2, Interesting
    Java, C++, or Pascal. Hmmm.

    If the intent is to measure a grasp of computer fundamentals, why not use a toy language comprising the programming primitives common to all three? (Such a toy language would would be simple enough to be defined on the spot ...including only, say, assignments, conditionals, loops, and maybe a simple I/O.)

    But, if the intent is instead to measure proficiency in a particular language, then why not offer all three?

    --
    Seeing bad movies only encourages them. Watch responsibly
  9. Re:Testing times by Anonymous Coward · · Score: 1, Interesting

    It was a joke....but I guess the moderators are as slow as java today. A similar joke a couple posts down got modded up as interesting.

  10. C++ ? good god ... by vlad_petric · · Score: 2, Interesting
    Pascal is reasonably clean, but C++ ... ? c'mon.

    Top reasons I hate it:

    Operator overloading - the most abused feature, as it makes coders feel "in control". It's very rarely useful for non-library stuff (container/matrix/numeric code that's already coded), but it manages to screw up projects very easily through abuse.

    References. They're simply idiotic. You can't really do useful stuff with them, as they can't be NULL, . Java references are fine, C++ references - a pointless feature meant to save you a "*" or "->", that doesn't really offer any advantage over pointers, but manages to make code unreadable if you use pointers, statics and references at the same time.

    Memory management. Either you are a high-level language and you do GC, or you're low level (like C) and you fully control it. C++ manages to get the worst of both worlds here, as object orientation w/o GC is a big mess. (leaks because "ownership contracts" are not respected are very common)

    Templates. I do think generic types are a good idea, but what's the f* point of making the template sub-language Turing complete?? (Yes, you can write partial recursive functions to be evaluated at compile time ...). Furthermore, if you allow member functions to be templated individually of the class, things can get really tricky.

    Multiple inheritance. Everything's ok, until you get a piece of code that works when you inherit A then B, but fails if you do it the other way around. Happened to me ...

    My point - C++ for AP ? Worst idea ever.

    --

    The Raven

  11. I was a taker by Medieval_Gnome · · Score: 5, Interesting

    I took the AP AB Computer Science exam, which covers all that would be covered in the first year of a college level CS class, as opposed to the A exam which just covers just one semester. Most CS classes in high schools are just A level, so taking the AB involved doing stuff on my own (ick).

    Before this class, I had been programming for a while, and was self-taught in QBasic, C, C++, Perl, some Java, and Python. So my perspective might be a bit on the 'too easy' side.

    That said, I thought the exam was really well done. It covered simple things (giving a 'mystery' method and making you figure out what it does) up to more complicated things (binary trees, recursing through them). Something else they covered, which I think is critically important, and also think wasn't covered under C++, is the efficiency aspect of programs. Some questions would ask which is more efficient, quicksort or insertion sort (easy answer), while others would get a bit harder, giving the runtimes of two unknown sorts on a random array and on a sorted array, and making you figure out which sorts they used. All efficiencies were in 'Big O' notation, not being as in-depth as Art Of Computer Science, but what can you expect from high school students?

    Also, there was a marine biology case study which was a larger body of code to deal with and worked our abilities to deal with things that we can't see the source for. This was also present in the C++ version of the AP exam.

    --

    :wq

  12. Re:Language shouldn't matter! by Anonymous Coward · · Score: 2, Interesting

    At the University of California, Irvine, we learn AVL trees and hash tables in the third quarter of the first year. The APCS AB test gives credit for the first two quarters of computer science here, although most students with AP credit take the honors intro series (including myself.)

    The people with no starting programming experience have a lot of trouble the first quarter, some trouble the second quarter, and eventually get it by the third quarter.

  13. Re:C++ for only 1 year? Don't think so by togofspookware · · Score: 2, Interesting

    > Note to students that have Physics B or
    > Calc AB schools: do yourself a favor and
    > study and request to take the Physics C
    > tests and the Calc BC. The Physics B is a non
    > engineering/science major exam it won't do
    > you any good for those programs. Physics C
    > will generally translate to your first 2
    > semesters of engineering/science physics.
    > Calc BC can cover 2 semesters rather than
    > the AB 1 semester.

    That's good advice. Nobody I asked seemed to know this, so even after taking AP physics in high school and getting a 4 on the B test, I'm now having to take 2 more semesters of physics, which cover the exact same things we covered in high school. From what I hear, the C test isn't even especially harder than the B.

    Here's some more advice to Software Engineers:
    When you first get in, tell that you're a CS, test out of as many programming classes as you can, and then change your major back to SE. At UW-Platteville, anyway, the tests are pretty easy, but only if you're a CS. SE's gotta do a lot more work. This will do wonders for your credits and amount of free time :)

    --
    Duct tape, XML, democracy: Not doing the job? Use more.
  14. Re:Testing times by Kinesthe · · Score: 2, Interesting

    Not true. I took the ComSci A test yesterday, and you only have 3 hours. The test was as follows:

    Multiple choice (40) - 75 minutes
    Open-response (4, multi-part) - 105 minutes

    On another note, the questions were too simple. Although every subject was covered (recursion, inheritance, searching, sorting, etc), there was nothing in-depth. According to a past student, the C++ exam was similar last year. Maybe I'm just better at this than most high school students, but it seemed far too easy to get a 5.

  15. Bad prescedent by mnmn · · Score: 2, Interesting

    I do not mean to bash Java, but I think it is wrong to push for a closed-source language which does not really compile into direct-to-hardware code. This does on one hand increase software portability, but its an enormous waste to run everything in Java, which is designed only for applications which must be completely portable.

    People developing 3D games, drivers or operating systems do not need Java, nor to embedded systems developers. C is considered God's language and is used to compile everything from 8-bit microcontroller TCPIP implementations to GUI toolkits. For its simplicity and ubiquitiousness, it should be taught as the primary language of choice, and C++ comes close to it.

    java simply locks everyone into Sun's grip (teaching them C# isnt much better either) and produces programmers who do not have a clear concept of how the source code is being compiled and run. It does make programs cheaper, code reusable and all kinds of hardware hosts for all Java software. However, once in a while you have to completely reimplement the code for a cleaner designs, like the kernel 2.6, like Apache 2.0, like BeOS. This is actually easier with C/C++ than with Java because C forces you to have a bird's eye view of the code.

    --
    "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
    1. Re:Bad prescedent by Qwaniton · · Score: 2, Interesting

      Your post misses the point, but you also made some valid points.

      People developing OSes or 3D games don't need Java, nor want it.. The downfall of civilization started when OS coders stopped using C.

      C is far too advanced for your average high school. You may not think so, but it is. Java is a much simpler language for high schools than C. It's a great beginner language[1].

      The C++ AP did not go very far into C++[2]. For example, they never covered pointers. Rarely did you code your own classes. Most of the time, AP C++ revolved around the "AP classes", prewritten classes for the class. (I'm tonguetied.)

      [1] I still loathe Java like the plague.
      [2] C++ is a hideous language. OOP is a cult! C forever!

  16. Re:What about building a foundation? by mackstann · · Score: 3, Interesting

    I can't say I know if either approach is better, but in my personal opinion, I don't think there's a huge advantage to learning either higher-level or lower-level languages first. Many people started with assembly and now code Java and do just fine. I, on the other hand, started with scripting languages and worked my way down (to C so far, I'll tackle assembly eventually) -- and I do just fine. I think the importance of ability of the individual dwarfs the importance of what order things are learned in. If you have the right mindset to be a programmer, you'll figure it out either way. If you don't have the mindset, you'll probably suck either way.

  17. Re:It sucked by blackmonday · · Score: 2, Interesting

    I've been programming Enterprise Java for 4 years and I'm sure I would fail this test, since I don't know anything specific about either one of those terms. And yes, I'm a good programmer. Just a thought.

  18. Are Pointers malloc() and free() Computer Science? by Soong · · Score: 4, Interesting

    Because people sure aren't learning them from Java. C hackers are getting harder to find.

    I just had a thought. It seems to me that the old dichotomy of CS, Systems and Theory, have spawned a bastard child: Vocational Programming. It's probably a natural progression as the field matures. This third class of people in the CS world don't understand either end of the old spectrum well enough to fit in. Java might just be the perfect language for Vocational Programmers.

    Now the questions are: Do we like this direction? Is it the right direction? What's broken, what would be better?

    --
    Start Running Better Polls
  19. Re:CLEP and Test Out by jdog1016 · · Score: 2, Interesting

    If you can go to a school and test out of "a lot of CS classes," then your school probably has very little to offer anyway. A degree is about more than knowledge--it's about achievement. There are VERY few people, if any, that come out of high school that have enough knowledge or experience to even approach that level. As for testing out of a degree, any school that would give a degree to you after a semester is not worth your time or money.

  20. CS AP test: 1984: Pascal was new and scary by Riventree · · Score: 2, Interesting
    As a member of the class of 1984 at TOHS, I'd done BASIC and assembly (6502 on Apple, 8080 on a CP/M machine) but only had about 1/2 a semester on Pascal when the test came, and I'd only seen the pointer notation the week before. I knew what pointers were at the assembly language level, but there was some abstraction in the Pascal versions that made em different.

    When I got there (the test wasn't offered on campus, for low-subscriber tests you had to go to another location) there were no other students there, and the proctor didn't even know that Computer Science was being offered that day. They dug around in the documents, and out pops the one lone copy of the test that the AP folks had mailed out. Turns out I was the first student in all three counties to ever take the test. (This is in a middle-class southern-california area... there'd be dozens and dozens taking it today)

    A big shout out to Gary Talbot of TOHS for teaching CS well enough in generalities that I got enough partial credit on the pointer stuff to earn a 3. YOU ROCK MR T!

  21. You Missed One Detail. by HopeOS · · Score: 5, Interesting

    C, C++, and ASM are low-level languages.

    COBOL, Java, and C# are high-level languages.

    High-level languages come and go because they are written to solve the problem of the decade. For COBOL it was record management and batch computation. For Java and C#, it's applets, serverlets, processlets, and sandboxed code. What will tomorrow bring?

    By contrast, C is still solving the problem of the century -- how to write portable assembly, and assembly is still solving the general problem of computing -- how to get the most processing for the least memory and time. Java and C# can't touch this, nor was this the purpose for which they were designed.

    -Hope

  22. AP Test by dretay · · Score: 2, Interesting

    I have the benefit of having taken the AP CS test in both JAVA and C++. When I took the C++ test most of the questions centered around coding/analyzing loops and algorithms. In the JAVA test I took this year I only remember a few questions about O(n) and loops. All the questions about algorithms centered on how they functioned and under what circumstances each would be implemented. Most of the questions centered on OO concepts such as the differences between Abstract and Interface classes, and the difference between final and static variables. As a side note, there was a very large section of the test dedicated to all flavors of binary trees. Anyway, just my $0.02

  23. Much more than 10 years by Aidtopia · · Score: 2, Interesting

    I took the Computer Science AP test in Pascal in 1985. I doubt that was the first year it was offered (although I was the first from my high school ever to take it). So Pascal has been used in this test for much longer than 10 years.

    While I agree that those pursuing a CS degree should be more interested in a theory-based test rather than a programming-based one, it is useful for those going into other technical fields who need some programming experience that they can apply.

  24. Re:Good for them! by Rallion · · Score: 2, Interesting

    C++ teaches you more about writing good code, however. People argue with me on that, and say that the sloppy code RUNS, and teaches kids it's okay. But Java doesn't teach people to be any cleaner. I see plenty of comments about how most Java code is bad code around here. In fact, I would say that it does a worse job at teaching good practice because it removes a good deal of responsibility from the coder due to the way it handles memory management. It's fine if you stick with similar languages, but habits that made wonderful Java programs would make you cringe in C++. I've seen a raytracer written in C++ that never used the delete command. I kid you not.

    C++ might be more complex, but hey, computers are complex. Programming can become very complex. Kids need to learn to deal with that, as well as learning about pointers and memory deallocation and all the various ways one can screw up. The earlier they learn it the easier for them.

    Also, I wouldn't say that interfaces are a better way to do multiple inheritance. It may be safer, but it's less powerful. I speak from experience, having been annoyed by the limitations of interfaces at times.

  25. Let's not be so quick to jump all over him by FanaticalDesperado · · Score: 2, Interesting

    I've been programming Enterprise Java for 4 years and I'm sure I would fail this test, since I don't know anything specific about either one of those terms.

    Perhaps I misinterpreted his comment. The use of the word specific made me think he has some fundamental knowledge of what recursion and ArrayList are but he does not remember the details. I know that I seldom use recursion, so when I do I have to sit down and think about it or just use a book to get a quicker refresher. No, it's not a real difficult concept. I'm sure that I'm not the only one here who doesn't bother remembering the details about what parameters every method takes. That's what books are for.

    But, if he doesn't even know what they are then you guys are right to doubt if he is a good programmer as he claims.

  26. Re:CLEP and Test Out by speby · · Score: 2, Interesting

    I'll agree that the CLEP can get you more credit, however, many high schools right now offer 'AP' classes as part of the curriculum for eligible students. In other words, the classes themselves perpare students for the exam by covering required material. So, for many students who may not be able or willing to study the material on their own, they can have a class that will prepare them for the exam to which they can hopefully get a good enough score on to receive college credit from the university or college they attend after high school.

    I myself took AP Comp. Sci. (when it was C++) and AP Calc. and recieved 11 hours from university for the two of them, almost a full semester. That, coupled with taking a few more hours than normal each semester enabled to me to graduate in three years.

    So, if there was one thing I'll make sure my kids (if and when I ever have any) is to make sure they take college credit examinations, if for nothing more than to save money. Seriously, avoiding just ONE year of more schooling saved me about $12,000! Plus, by graduating early and going to work (or a master's I suppose), I can increase me earnings potential by one entire year. I only wish I had taken more AP exams.

  27. Re:One year? by SullDogg · · Score: 2, Interesting

    They're just wrong, I took it the last year it was Pascal (my Junior year) and the first year it was C++ (my Senior). The Pascal/C++ switch was in the summer of 1998, so 6 years ago. I took them both, which was ridiculous, considering the first class didn't count towards colleg eand the second didn't count towards HS. Even though the head of our math department was the AP CS teacher, and he petitioned the school to count them as separate courses, the administration said they ahd the same name, so they must be the same course! I mainly got to do my own thing (since I was auditing it), and do a step beyond each assignment since I'd already figured out the algorithms and such. It really helped me get into complex inheritance and such. On a side note, our class of about 15 had one kid get below a 4. We also did Knuth and other algorithm analysis on top the AP. I also took classes taught by and TA'ed for Astrachan at Duke. He gets derided for the Tapestry stuff, but he's devoted his life to making CS accessible to everyone, and he's a phenominal professor.

  28. Re:Testing times by FrozedSolid · · Score: 2, Interesting

    It's probably worth mentioning that the sources to the "bastardized classes" (apstring, apmatrix, apvector, apstack, etc) were all GPL'd, as was all of the code to the Marine Biology Case Study (a series of exercises that involved examining, editing, and revising prewritten code, as well as implementing undefined methods to various classes).

    Interestingly enough, the new java case study is also GPL'd. However, parts of the exercise involve closed source classes, illustrating "black box" concepts.

    GPL violation anyone? :)

    --
    When all freedom is outlawed only the outlaws have freedom
  29. Re:C++/Java by wan-fu · · Score: 2, Interesting

    Two things:
    1) I never said anything about the "precious AP libraries" - I don't know anyone who likes them and/or misses them.
    2) You are REQUIRED to use the AP libraries on the exam.
    I'm talking about the problem of having an AP-specific library on the exam and teaching theory through Java in the classroom. I'm not talking about using the AP C++ library in class.

  30. Re:Testing times by murcon · · Score: 2, Interesting

    Reminds me of the (inaccurate, somewhat apocryphal) story about Perl and programming contests. Turned out to be a bit of an exaggeration.

  31. Re:CLEP and Test Out by Anonymous Coward · · Score: 1, Interesting

    That's not necessarily true...
    When I went to college 10 years ago, I only took AP tests, and I earned enough credit to be classified as a sophomore when I started. I tested out of Calc I, Calc II, English Composition, one History class, the Foreign Language requirement, and a science class.

    Posting AC, 'cause I don't want to brag too much.

  32. AP Tests by MicroBerto · · Score: 2, Interesting
    Just a general comment to all those in high school and planning on going to college:

    TAKE AP EXAMS!! TAKE A LOT OF EM AND STUDY HARD!

    I passed out of about 35 credits for college becaues I had an awesome AP exam showing, and many were offered at my school. 15 credits of math, 5 for computer, 10 for history... then some spanish I got credit for.

    Not only will you save money, but you'll be able to skip menial stuff and get into your major courses earlier - and will get yourself a more spread-out schedule so that you don't have to cram a ton of classes in because you "lost" freshman year.

    I have it on easy street now for my last year because of AP exams. And the history classes i missed are HARD to get A's in, i hear. So take the time, study it, get a 5, and forget it :)

    --
    Berto
  33. Re:Language shouldn't matter! by tigerc · · Score: 2, Interesting

    Here's an example of a problem:

    Which statement about parameters is false?

    (A) The scope of parameters is the method in which they are defined.
    (B) Static methods have no implicit paramater this.
    (C) Two overloaded methods in the same class must have paramters with different names.
    (D) All parameters in Java are passed by value.
    (E) Two different constructors in a given class can have the same number of parameters.

    The answer is C. I'll take that. But look closely at answer D. For objects, references are passed, not values. However, the AP exlpanation was, "Choice D is true even for object parameters: their references are passed by value."

    How much more asinine can you be?