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?

20 of 812 comments (clear)

  1. Testing times by Neil+Blender · · Score: 5, Funny

    For C++ you get 3 hours. For the new Java test, you get all day.

    1. Re:Testing times by System.out.println() · · Score: 5, Funny

      To code it or to run it? :)

      (On a related note, an exam based on AppleScript would take about a week...)

  2. My impression of the exam by Profane+MuthaFucka · · Score: 5, Funny

    The exam takes too long to complete, and requires way too much memory as well. They should go back to Pascal, as it was more efficient.

    --
    Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
  3. Language shouldn't matter! by ajiva · · Score: 5, Insightful

    I don't see how the language should matter in these sorts of exams. Personally I rather have the AP test be questions about algorithms, ideas and concepts. Something like:

    1) Write PseudoCode for an AVL Tree
    2) Describe the benefits of a hashtable

    etc...

    No coding, just ideas that a smart student can take to any language, whether its Java or C++ or anything else.

    1. Re:Language shouldn't matter! by addaon · · Score: 5, Funny

      2) Describe the benefits of a hashtable

      it keeps your hash off the floor.

      --

      I've had this sig for three days.
    2. Re:Language shouldn't matter! by Goyuix · · Score: 5, Insightful

      The problem with this approach is it rules out an entire class of problems such as class B inherits from class A, has such and such static methods and member variables..... what is the output of this code?

      While writing code is somewhat less effective than perhaps discussing principles and theory, you certainly need a language as a base to "measure performance" in a test like this. Not that it isn't without its own set of problems, but it is a necessary evil. You need to have a base-line to measure objectively, something that is hard to nail down using just pseudo-code.

    3. Re:Language shouldn't matter! by pyite · · Score: 5, Insightful

      OS Design? Fascinating, but ultimately irrelevant for 99% of coders. Implementing your own hashtables? Useful to gain an insight into how they work, but virtually any development platform people work in except raw C these days will provide highly tuned and optimized hashtable implementations. If anything you shouldn't roll your own, as it'll make your code less readable, more bloated and probably slower.

      No offense, but people like you are the reason I'm glad I didn't major in CS. If you can't see the value of OS design and learning how hash tables work, stop, do not pass go, do not collect your diploma, it's utterly wasted on you. I'm amazed at how many CS graduates I've spoken with that have never heard the name Donald Knuth or at least borrowed a copy of The Art of Computer Programming. The fact that Computer Science is a MATHEMATICAL SCIENCE seems to elude most people who'd rather worry about how good of programmers they are than about knowing how the hell things work. None of the coding I learned came from a school, and frankly, I'm quite happy about that, as too many schools are all about the "latest and greatest" technology. The AP exam is a PERFECT example. Not sure if This Fool still has anything to do with AP CS, but his AP CS book was probably the worst computer related book I've ever read (littered with errors, for starters).

      It seems no one cares how things work. The "black box" analogy was emphasized in AP Computer Science from Day 1 when I took it. The worst possible thing you can be telling budding Computer Scientists is that we don't care how it works, it just does. That's fine when you've proven your ability to perform and are working in an environment where it's literally impossible to know how everything works. It's not acceptable, however, when you know nothing and the sole purpose of a course is to teach you. OK, I've gotten myself quite angry over this post, so I'm ending it now.

      --

      "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

    4. Re:Language shouldn't matter! by diamondsw · · Score: 5, Insightful

      Quite simply, those people went into business, not teaching. Those who became professors are researchers, and as such teach the fundamentals, the algorithms, and such.

      I would wager, however, that the fundamentals they teach (good algorithm design, how OS's and programs work on a very low level, data structures, human-computer interaction) will give you the base to figure out these "day to day" things, whereas the day to day things will not help you with fundamentals. People with a rigorous computer science background learn to appreciate things like structured programming, extensibility, flexibility, planning, etc. These are what make a good software engineer for decades, as languages, platforms, etc change.

      International code is an interesting example. Everything you've mentioned is API-specific, so why should they waste their time teaching me that API when it will be dead in a few years? I can learn that from reference docs. However, they should remind me not to hard code numbers, values, formats, strings, etc, just as a good fundamental programming practice. If I do *that*, then I'm already prepared for international coding.

      So to answer your question, I'd much rather employ the person who knows how to think about all aspects of a software project, plan it up front, know how it's going to interact with its environment (and internally, with itself), and I'll buy a book for them on specific API's.

      --
      I don't know what kind of crack I was on, but I suspect it was decaf.
  4. easy by will_urbanski · · Score: 5, Informative

    honestly, i didn't think it was that hard. If it was in C++ i would have spent much more time prepairing, but Java is so straight forward that I flew through the test without a lot of studying. Now, whether or not you have a decent teacher plays a lot into this. The questions weren't too hard or too complicated; even the more complicated ones had anwsers that could be eliminated after looking at it for a little while. I'm glad it was in Java-- C++ would have been a lot harder.

  5. Rules by Anonymous Coward · · Score: 5, Funny

    REMINDER

    It is against the College Board rules to discuss the multiple choice problems EVER in your life, and you must wait 2 days after the date of the test to discuss the free response questions. Failure to adhere to CollegeBoard rules may result in invalidation of your scores, loss of privilege to take future AP exams, and legal action may be taken against you. (Those who take APs should be familiar with this statement)

  6. One year? by Anonymous Coward · · Score: 5, Informative

    What's the story with C++ only being the test language for one year?

    I took the test five years ago and it was in C++. Did they switch back to Pascal or not give the test for a couple of years? Or (as seems more likely to me) is the Slashdot summary wrong?

  7. It sucked by Anonymous Coward · · Score: 5, Funny

    Basically, the entire test was over ArrayList and recursion, the two things we spent perhaps a good ten minutes reviewing the whole year. Screw the college board for switching to Java. In fact, screw the college board in general. Basically, there are two questions I'll tell you (there's a lot of lame laws about not talking about the test, so you didn't see me do this) 1. How many times do you want to punch Leon Schram (author of "Exposure Java" CDROM book series) in the balls? (cirlce one) 1 2 3 4 5 The correct answer to that one is circling all of them. 12,345 times. 2. How many fists do you want to use in the acts described in question one? (free response) Basically write something about "all available limbs and body parts"

  8. Language lengths by Jadsky · · Score: 5, Informative

    The test was converted to C++ in 1999. This means that C++ was the language of the test for a full five years, not just the one mentioned in the posting.

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

  10. I took the last Pascal exam... by Dr.+Bent · · Score: 5, Insightful

    My graduating class was the last one to take the Pascal AP exam. When I got to college, all of the classes were taught in C++, and I started in a second year class based on the AP credit I got from the exam. I was expecting it to be very difficult, considering I had never had C++ before, and it was...for about a week. Then I realized that a Stack is a Stack and a Linked List is a Linked list and once you learn the syntax of the particular language you're working in, Computer Science is really language-neutral.

    Computer Science is not about programming. It's about finding solutions to problems using computers, which is a very different thing. Moving the AP exam to Java seems like a good idea to me, but I doubt it will have any real impact on the curriculums of the schools that make the switch. The principles and concepts taught in any decent Computer Science undergrad program were just as valid and relevant 50 years ago as they are today as, they will be 50 years from now.

  11. Re:Since when... by Neil+Blender · · Score: 5, Funny

    What the hell is with all this highschool crap on /.?
    Since when did /. become some place for high school loosers to hang out?


    Oh, since, well let me think...SINCE FOREVER!

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

  13. Re:I say great! by Rosco+P.+Coltrane · · Score: 5, Insightful

    ya seriously - with processor speeds what they are these days, there is 0 reasons to use assembly for anything besides device drivers. hardware is cheaper than the extra man years of developer time.

    You Sir, and the people who think like you, are the reason I still have a great job.

    There is more about computing in this world than PCs and Macs. What do you think runs in your microwave oven? or your fancy watch? or your car's engine computer?

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
  14. Programming !=, er, isn't Computer Science by The+Prognosticator · · Score: 5, Insightful

    Let's not confuse programming -- the practice of using a computer language to do one's bidding -- with computer science -- the more generic, language agnostic study of computers. That's why the exam is called AP COMPUTER SCIENCE and not AP Programming. I wouldn't say that the use of Java on the exam is a great boom for Java per say, just a recognition that it has many features that are useful, and not available with previouis languages in this exam setting.

    I think this misconception causes many students to inappropriately major in CS in college because "they like programming", or "they like computers". And some of them, from my experince at engineering school, end up in other majors as a result. Not all though, but enough for me to feel I should comment...

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