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?
For C++ you get 3 hours. For the new Java test, you get all day.
FWIW, I'm currently employed as a developer, and I'm glad to see our young people being tested on their knowledge of Java.
After all, if being a developer has taught me anything...it's that I need to know all about my caffiene. [grin]
RomSteady - I came, I saw, I tested. GamerTag: RomSteady / http://www.romsteady.net
Do I get AP credit?
I got cheeeese, hoez, and a bunch of fucking dope. / I got peeeeeas, coke, and some killaz at da doo'.
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!
I probably got a 1.
the exam has been based on C++ (1 year) Is this true? The test was only in C++ for 1 year? Wow, I got really lucky taking it last year...
This sig is only here so people stop skipping the last lines of my posts.
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.
Don't you mean Visual Java?
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.
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)
Does the College Board have any way to normalize scores between tests given in different languages? Or are they only looking for relative scores among people taking the same tests?
I should be able to voice my opinions about something even if I have never taken this test or any other CS AP test.
awww yeah.
I'm against picketing but I don't know how to show it.
Pretty good.
I took AB, it covered all the topics pretty well, although I wish I had studied big-oh ALOT more, there were like 10 questions on it throughout the whole test.
The difficulty level I thought was well within the grasp of any good student. The Part IIs I thought were particularly simple, I was expecting alot more, especially after what my review book was serving up...Yet the hardest thing was traversing some trees.
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?
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"
It was C++ three or four years ago too. So no, not one year.
I took the test in Pascal about 6 years ago. I don't really understand why they moved it to Java. It seems to me, at that age, the fundamentals of programming basics are fairly important. I almost wish it would stay at C or Pascal for a while. While Java is nice and all (lots of creature comfort built in), it seems like moving backward from Java to something less comfortable (low-level C coding in the Linux kernel perhaps) is counter-intuitive. When you have the basics, extending to Java seems easy. Vice versa doesn't seem a pretty picture....
It's only when we've lost everything, that we are free to do anything...
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.
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
I have never used Pascal since, and I felt it taught me some incorrect concepts. A small percent of my class (myself included) then took the course again over the summer in C++. I felt the C++ experience was much more worth my time. I honestly don't know about how I think about teaching kids java first.
I think you should start with C and assembler. Learn the very very basics of computing before you teach OO programing. I personally don't consider my AP experience worth while. Its hard to get a decent computer science professor in a highschool and even harder to teach complex concepts to students who think computer programming is "making video games" and "lots of money". This was especially the case when I took it (during the dot com boom) and even terrible programmers were making lots of money.
What was the test in from 2001-2003? I took it in C++ in 2000, which must have been the lucky year. If not, it must have been in C++ for at least 3 years (was 2000 the first? I can't remember).
Many years ago I took "o-level" computer studies, which nicely finessed the issue.
took it. failed. know nothing if programming.
What is 2++ 2?
har har har
I was sure they were going to go with Forth this year.
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
The AP tests are decent, but it's been my experience that taking a CLEP test is easier, faster, less expensive _and_ tends to get your more college credit for the same amount of knowledge.
The next best thing is taking classes to fill up your "full-time" requirements of a certain number of units per semester and then testing out (by taking the final and passing) of the classes you already know. Many on Slashdot could probably get a lot of CS classes passed that way, for example. Those credits count towards "in residence" requirements as well. (The colleges want those tuition bucks, they don't care if you had to go to the class or not as long as you paid them for it.)
AP tests are probably the third best way, but not as useful as the above. I took and passed AP English (5) and AP U.S. History (4) in H.S. and got a lot more credits out of their CLEP counterparts.
Also, if you are good at tests and already fairly knowledgeable, check out Western Governors University, a fully accredited University that does all classes via certified testing. That means if you know your stuff you could pay for one sememster and then test out of a four-year or master's degree. Difficult, but possible.
The party of stupid and the party of evil get together and do something both stupid and evil, then call it bipartisan.
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.
i was expecting a bit of a challenge, but it was laughable.
i was done with the first twenty questions in 15 minutes, the mult choice section in 40 minutes.
the written section was a bit more difficult, but not much. 105 minutes were alotted for it, only 60 were needed.
they either need to make the test shorter or add material to avoid boredom.
Back in 95 I took the AP Pascal exam. That was the first year of the "new" exams, so we didn't know what to study. I think I got a 2. I never went to college anyway, so I guess it didn't matter.
Good thing it didn't matter; what do people still use Pascal for anyway? At the time, C++ was an elective course (I took it the following year) with no available AP exam. Java wasn't even invented yet. These kids today have everything.
-Jem"In past years, the exam has been based on C++ (1 year) and Pascal (around 10 years)."
That might explain why I did so poorly several years ago when I tried to take the test based on Java.
hurry
I took it yesterday in the morning, as I think everybody did.
Overall, I think it was relatively easy (not to toot my own horn or anything)
Comparing to what i've seen of C++ and it's AP Exam, I _think_ the ease came mostly from the ease of Java itself, and the APPENDICES!
Most of the good heartly case-study code was included, along with a 'cheat-sheet' with method headers for the ENTIRE case study.
I'll get back to you in a month or two with my score, then we'll see how 'easy' it was
Error 407 - No creative sig found
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.
I took in Pascal and got a 5. I'd just like you all to know that.
I remember when starting Uni in Autumn 1997, Java became the mandatory module instead of C++... so much so that we were really the guinea pigs because the lecturers hadn't taught it before.
Most of us were wanting C++ modules to be bought back as an option, but were denied... and when I did get involved with C++ I found it made it harder learning the memory management issues (i.e. pointers) going from Java to C++.
Mind, Java has certainly progressed from being regarded as a 'university fad' programming language (AFAIK), but one or two years after we started, I think the uni reintroducted the C++ modules.
Are you local? There's nothing for you here!
Bada-bing-bada-boom. The one day project! Massively parallel programming! Now, if only I can find away to harness the power of bajillions of people sorting playing cards in solitaire to crack encryption codes! Muahahah!!!
[coughs] [takes medicine] Alright, I'm okay now.
The meek shall inherit the earth, in 3 by 6 plots. - Lazerus Long
I took the test both in Pascal, and then again the next year in C++ (I believe the 98-99 school year was the one in which the exam was in C++).
Anyhow, the Pascal exam focused quite a lot on whether you understood basic algorithms and data structures.
The C++ exam, in contrast, focused on whether or not you knew C++.
For the record, I got a 4 the first time, and a 5 the second.
Alan
In past years, the exam has been based on C++ (1 year) and Pascal (around 10 years).
I think the poster may have his numbers confused. It was in C++ for as long as I can remember (up until the change to Java of course). I took both the A and AB tests a number of years back and both were in C++. In fact, my teacher also took the exam when he was in high school (only the A test was offered then) and even then it was in C++.
What the hell is with all this highschool crap on /.? /. become some place for high school loosers to hang out?
Since when did
Oh, since, well let me think...SINCE FOREVER!
I took this test in May 1999 and it was "C++". My shitass school didn't offer the class, but the College Board requires the school with any AP program to proctor any exam a student requests. Needless to say, once I discovered that I ended up taking a lot of APs.
The CompSci AP was really easy. It was based on C++ but it was not really full C++. They had their own custom simplified STL. It was really more about time/space complexity and algorithms and REALLY simple data structures.
As many people say, the language used at this level doesn't really matter it is just a vehicle for some higher level concepts.
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.
I took AP computer science in high school back when it was Pascal, based, in 91-92. I mostly remember the exam as being surprisingly easy.
I took 5 AP classes my senior year, and one my junior year. CS was significantly the easiest test, without much competition. In case you care, the others were english, physics, math bc, biology, and music theory. No, music theory wasn't the second easiest, or even the third.
CS was also the only class where by january we had covered all the material on the exam. I hope it's gotten more challenging since then, or it's basically a waste of time in terms of demonstrating much knowledge. I guess it's ok if it's just being used to pass you out of a beginning class, but it's certainly not as challenging as a beginning class at many colleges.
I took this exam in 1998, at which time I had not seen a line of Pascal for about three years. My school didn't have a class for the exam, so I just took it on my own. I "studied" for about half an hour the night before, finished the exam early and got a 5 (the maximum possible). It was a joke, but it did get me out of the first semester of Computer Programming at university, so I'm very happy I took it.
As for the debates on whether this qualifies as "computer science", I think it's a moot point. Kids in elementary school take "math", even though true mathematics doesn't actually deal with any numbers, but it's something you need to learn to get started. It really is a programming exam, but it's very basic. (One of the questions was basically, "write a flood-fill subroutine".) If you're examining students at that level, they will not be able to analyze an algorithm or tell you what an AVL tree is. It's intended as a replacement for the basic freshman-level university programming class, and it does just fine in that capacity.
Mod down posts with a "Free Mac Mini/iPod" sig, they're spam!
I took it back in the pascal days. Useless, really. At least going to UCSB the best it'd do is give you credits. It wouldn't get you out of any required CS classes...I don't think.
As far as I could tell, for engineers, math, gov't and history AP were the only tests worth taking unless you plan to be low on units (which is tough as an engineer). Possibly lit, not sure what you got for that. Even chem wouldn't get you out of the required chem for science/engineering majors, it'd just give you credit for the easier one for non-tech majors.
Don't kill yourself senior year with 7 AP classes without double-checking that passing the stupid test'll help you in college. I took five classes (2 APs, gov't and calc) senior year, got to hang out with the other slackers after lunch, got into a UC, graduated and am now at least as successful as my friends who's parents would probably beat them if they didn't take every AP available and spend all waking hours senior year studying for the SATs...
Here is a little background from a student who take the AP Computer Science test for 2 consecutive years, last year, and the year before. There is an 'A' level and an 'AB' level. The AB level covers more material such as big-O notation, searches, amd sorts. On the A test I got a 5 (the highest score possible). On the AB test I got a 4.
The test is separated into two sections: multiple choice, and free response. The free response questions involve writing a function, or a few lines of code.
C++ was the topic of the test for both years that I took it. This year, they moved to Java, which I know, but I decided not to take since I am already taking 5 other AP tests over the course of this week and next week.
The AP tests are tricky; you have to be sharp in order to score well on them.
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
The C++ exam was definitely not only one year in the running. It was for many years, probably 5+ or so, Pascal being supplanted in the mid/late 90s. I took the exam years ago and I think it's a good move to bring the AP to Java for a number of reasons.
The biggest reason is the computer science AP when administered using C++ required students to learn the "AP" libraries. That is, they actually developed their own versions of the important data structures that most people use. I think this was mainly due to the fact that most people see the STL as bloated and under-utilized. On the other hand, everyone uses the Java libraries and this cuts out the need to learn additional code (not to mention that the AP code like apvector, apmatrix, etc. wasn't even written that well).Of course, teaching Java does seem to abstract memory management too much, and this is a negative as a result of moving to Java for the AP exam. However, this is outweighed by the consideration above and the fact that I think it's genearally "more fun" for students to learn Java.
By "more fun" I mean that every student will be able to write applications at home or at school and be sure that it will run elsewhere regardless of what system they have. I remember as a TA for a high school programming class that sometimes code wouldn't work going from home to school to other machines at school (e.g. Visual Studio->CodeWarrior->KDevelop) and often, people who wanted to do more advanced things with graphics were limited by the libraries (though I guess we could've done stuff with Allegro or something of the sort). With Java, there's instant gratification in being able to drop in an import for awt and swing and immediately get GUI feedback.
Finally, because it's most important to learn theory in these courses, Java makes for better teaching in comparison to C++. Stronger typecasting, no multiple inheritance, etc. makes Java a language that is "better" in terms of teaching computer science theory (though it's not necessarily better so in practice).
Being a Java test - the higher the score, the slower you think.
I took this AP exam (AB, not A) yesterday. The multiple choice was 40 questions and they gave you 1 hour, 15 minutes. For the 4 short answer ones where you actually wrote code, you got 1 hour, 45 minutes. The multiple choice was pretty long and took me the whole time, whereas the short answer part was easier and took under an hour to complete for almost everyone in the class. There were many questions about the Big-Oh efficiencies of various algorithms, especially sorts. A lot of the exam was independent of the language used, just about algorithms, but there were a few about the details of inheiritance and other Java-specific things.
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
who catches the exception?
MARIJUANA, SHROOMS, X: ONLINE?! - E
I took it yesterday, and a month ago i had virtually no knowledge of programming beyond qbasic, and ti basic (texas instruments crappy on-calc language), and read an ap prep book, took the ab test and i think i did pretty well on it. The questions were all relatively straight forward, and they gave you an appendix with pretty much all the java you needed to know, so anyone who knew c++ would have been able to take the test. The one thing i did notice was a lot of big O notation crap for analyzing effciency, but i didnt think any of it was that hard
I took both the A and the AB tests in C++ - and i know it was C++ for alteast 3 years because I took the A test in 2000 and the AB test in 2002
On a sidenote: it should still be in C++ - java = BARF
If you cannot keep politics out of your moderation remove yourself from the Mod Lottery.. NOW!
this one was a lot easier; especiall ywhen compared to Physics which kicked my tail pretty bad...
...the right of the people to keep and bear arms, shall not be infringed.
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
Glad you like the past - because you will be staying there for quite some time!
I took it...I know about 3 Java commands. Its kinda useless, all you see it used in is crappy Yahoo games. Besides C++ is much more useful.
I took the test the first year it was C++ and got a 5 out of 5 points on it, but when I got to school they gave me 2 credits (i.e. almost nothing) for it. It was a real let down putting all that effort into it and getting so little (scholasticly) in return. Of course knowing C++ while still in high school and being able to explore compsci on my own I think very valuable.
-Benjamin Meyer
Do you changes clothes while making the "chee-chee-cha-cha-choh" transformation sound?
I took Computer Science at my school. The teacher wasn't particularly challenging (or good, as he didn't teach much). I looked at the AP concepts list, and realizes that the AP comp sci required stuff is pretty much worthless, IMHO, especially the A list. The 'A' list is "Do you know the syntax?", and that's about it. The B list introduces data structures, but the requirements aren't very difficult. You can look at their lists on the apcentral website, and it's almost a joke, imho.
I took the test yesterday, at about 8 AM. Only two other APCS students took the exam from my school, so we were considered "special" and took it in a conference room. I took the AB version (the "harder" of the two available, A and AB).
AB covers things like heaps, queues, stacks, and trees, along with more advanced sorting and searching methods.
The point is, and should be... language does in fact NOT matter. Actually learning the language is very simple. Learning how to *use* the language to accomplish classic and very useful techniques (tree searching/sorting, recursion, etc.) is the real test of knowledge.
Even though College Board switched from C++ to Java (and I prefer C++... well, C, actually) really makes no difference. They provide a supplemental booklet that describes briefly the standard features in Java (Maps, Lists, Strings, etc.), so you can really just focus on solving the PROBLEM.
While we're not allowed to go into specifics, I am going to say, for the benefit of all who may take the exam in years to come, learn the ins and outs of the Marine Biology Case Study!
I was having absolutely no problem with the exam until I hit the problem (with three sub-sections) based on the MBCS. In my APCS class, we hardly ever "played" with the case study. The result was that I spent 30 minutes reading the provided code to the case study in order to familiarize myself with its API so I could write the code necessary to complete the requirements for the problem.
This hangup ultimately cost me 1/4 of my free response section (there were only 4 problems), because I simply ran out of time - and 30 minutes was more than enough time to complete the last problem, and I was more than capable of doing it (it was on binary trees).
The bottom line... 1) the exam does a great job on testing how to solve problems; it does not specifically test your knowledge on Java, so the language switch shouldn't be much of an issue at all. 2) Know the case study! They publish publicly the material that is given as supplemental material on the exam.
Also, I read in a thread that we had "all day" to take the exam compared to only three hours in previous years... this is false. The exam has two parts: a multiple choice section that takes 1:15, and the free response section that takes 1:45. A five minute break was allowed for between sections.
Hope this helps! KNOW THE CASE STUDY!
--Aaron
this test (computer science A, our school didn't offer AB) was NOT a major step for java in my opinion.
it was incredibly easy; at this level of programming, you might as well have known c++ and then just some of the changes. since this was the first year to have the exam in java, our teacher gave us a copy of the c++ exam from last year, and after explaining the minor differences such as between System.out.println() and cout, etc., it was apparent that at THIS level, we could do all of those questions and do equally well as in java.
for instance, all that the free response required was as such:(hypothetically that is...in case there's some collegeboard people seeing this..:D) loops, if/else statements, single-dimension arrays, and basic knowledge of how to work with boolean logic and ArrayLists.
is this a major step for java? it certainly is not. c++ is (in my opinion) easier to learn, and with that you can get acclimated to java in a week...at this level. at least that's how it was for me.
Don't even try to argue. It is NOT worth the while to go round the world to count the cats in Zanzibar.
I took the test yesterday and I think I did great. I took the test 2 years ago as well, when it was C++ and got a 4 (I took it again this year because i wanted to take an AP class that I knew I could pass and the teacher diddn't care if i took it again). sorry to anyone who thought it was hard, but you probably didn't have to take the AP stats test right after. I dont know who on the college board decides the schedule, but why cant they make AP stats the same day as like... AP studio art or AP basket weaving?
I'm glad the new test is in java, mostly because i understand java better than C++ (dispite the fact that it tends to be a more confusing language).
My parents thought "hey, he's good with computers" and signed me up for the test. So I show up with my minimal knowledge of C# (which is ever so close to java, I got lucky) and do what I feel was a fairly good job on the multiple choice. As for the free response.....whoever grades mine will have an easy time since the majority of my writing was comments to the grader. p.s Yeah, I know I'm an idiot for a) letting my parents sign me up for the test b) not canceling the test c) not studying/seeing what was on the test. Oh well, I was the only one in the city who took it.
As a CS major myself, I am amazed at the number of CS majors these days. Why bother? There are virtually NO entry level jobs for CS majors! There are some for the very experienced, but that is about it. THere are still some jobs for admins. THat would seem a more suitable goal.
Come to think of it, why are so many people still wasting their good young years and mortgaging their future on getting a BA/BS? There is a huge oversupply of such people already.....
Just goes to show you the power to propaganda and the power of inertia.
eat shiat and bark at the moon
Not giving you a hard time here. I have a friend who swears Forth is the greatest thing ever, but I rarely hear of people using it.
...and I found theme extreamly easy. These two AP courses could most certainly be combined into a single couse and still be completed well within a single school year with ample time to review and practice for the exam.
Anyone with any kind of inherent talet for computers/programming could spend less than a month teaching themselves to program and still get a 5 (out of 5) on the exam after doing one practice exam and reviewing it for a day or two. I have seen non-computer-oriented people (some who don't even like math or science classes) ace the exam.
I do not intend to insult anyone who can not handle the test, I mearly wish to point out that the exam tests ONLY the very basics of "how to program" and simple data structures.
http://brandonbloom.name
The MBCS was easy. Hell my friend and I did the exact same thing in class for the hell of it since we were bored.
I'm not a morning person so I spent the first 1 hour the free response staring at all 4 questions trying to figure out what it was asking. After that I spent 15 minutes writing all the code.
The harder part of the test was sitting there for the last 30 minutes trying to retain my sanity with nothing to do.
Firstly, the entire AP process is terrifying, because they relaly want to make sure that the test questions do not escape into the free world, because apparently it would throw everything into chaos. The tests are sealed, and requisite you to sign on the front that you took it on the exact date and time, and that you promise not to take the test from the room, as if we'd try, the guy running it was a nut.
As for the test itself, it was fairly easy. The trickiest parts were the involved code questions about midway through the multiple choice, but we had plenty of scrap paper to work everything out. 40 multiple choice and 4 short answer, by the way. The short answer were very simple, and the only thing i had to wrack my brain for was remembering if casting a double as an int would throw and Arithmatic Exception for loss of precision.
Otherwise, smooth sailing. One last thing i'd like to note, though, there was a question regarding hexidecimal on the test. It said, 100hex - 10hex = ?dec, and while i knew the answer, it seemed out of left field, and my computer teacher verified that it was not part of the subset. Does anyone know anything about this?
Why don't they base it on an open-standard language like C++ or C#, or a "academic" language like Smalltalk, Squeak, or MIX? That would be much better than supporting the pedophiles who support Java?
Best Buy can have you arrested
The math department head at my high school said I had to take calculus in order to take the C++ class. I said calculus is a bullshit prerequisite for C++ (since, you know, C++ has nothing to do with calculus). She refused to make an exception for me.
At the end of the year I demanded to be allowed to take the test to prove to her that the prerequisites were garbage and that the school was probably too clueless to teach C++ anyway. She couldn't refuse (the AP classes are not mandatory) and so I took the test, although she insisted that I reconsider and that I should take the classes and that I'm otherwise wasting everyone's time.
It turns out that I was the only one in my entire school to show up for the test.
I scored a 5 (the highest score). Came in and stapled that to her forehead.
Spite: it's what's for dinner.
Is it just me or is this all completely backwards? You should have every right to talk about the exam you've just taken, it's the exam board which definitely should NOT have the privilege of preventing your freedom of speech, just because it can't be bothered to invent some new questions....
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
At the first university I went to, I placed out of the math requirement by exam. After taking time off and then going to a community college, I was excused from math because of my high SAT scores. When I was finally ready to graduate from a university, with a Bachelor of Arts degree, my 9 year old AP Comp Sci credit satisfied the math requirement.
- Greg
Start a happiness pandemic
It actually wasn't too shabby... Not too difficult for the most part, slightly annoying in the fact that things like the Marine Case Study were on there, and personally I think it's the devil :P
I took the test at an Orange County, CA high school. We had to be in the room from 8am to 12 noon. There were 40 multiple choice questions and 4 free-response ones. The test seemed to stress 1-dimensional arrays, ArrayLists, and the marine biology case study. (MBCS) The MBCS was a program that simulated various fish in a two-dimensional array. The source code for this program was included, and it had helpful //comments throughout. The free-response was java coding, and each answer was only a half-page long. Real easy if you studied, IMO. Note: I took the Comp Sci A test, not AB. A = 1 semester of college, AB = 2.
Agreed. It just wasn't funny. I cut it down.
I took the AP exam when it was C++ and the only credit i ended up getting was a buisness programming class. The CS departments aren't going to give you much credit for the exam unless everyone's required to take an intro to programming freshman year or something like that. The stuff covered in the AP test is pretty much amounts to learn the language and get a broad overview of some important topics. once you get to school they cover everything in a lot more depth. it's definitely good experience but don't think that you're going to be getting out of any useful classes if you're a CS or Computer Engineering major.
I never said I was smart, I just said I was smarter than you
...and I'll be honest that I thought it was pretty difficult. I guess i'll let you all know how I did when i get my scores in August.
I got an A- overall in the course, too.
I've been teaching AP Comp Sci for the last few years so I though I'd toss out some info that seems to be lacking around here: First off, the entire aim of the test is to measure how well a student would do in an introductory college course in the subject(1 semester course for the A exam, 1 year for the AB exam). The validity of the scores are tested by giving the exams to college students at selected universities and comparing the score with their grades. Comparing Java scores with C++ scores with Pascal scores is not really an issue, in each case, its simply "Here is how qualified we think you are to be considered having passed 1 term of this subject 5 most qualified to 1 not qualified." Because college Computer Science departments have not been static for the last 10 years(duh!), neither has the AP exam in its effort to reflect that. In 1999, the exam switched to C++ to reflect that C++ was the most often used language for introductory courses - for the 90s it was Pascal, and back in the 80s the exam was in BASIC - this year it changed to Java to reflect the changes in college courses. The test is hand written, so there are no compile time issues(and no issues of unfairness to schools that don't have newish computers. As a teacher, it rather sucks that they only release multiple choice questions after 5 years. Every other subject has books out of 5 years of old exams. And despite a few minor tweaks, Calculus really hasn't changed in... oh... 100 years(note: introductory level). For Comp Sci, that means this year they finally released the first year of the C++ multiple choice questions. Great, that helps my students prepare loads for the exam in Java. Free response questions get released 48 hours after the exam. Btw, my students thought the exam was easy. I have one special ed kid who gets extended time on tests. He finished the free response(supposed to take 1 hour 45 minutes) in under an hour - and that sat laughing with me downstairs at the other kids who were forced to sit in the exam room for the entire duration, twiddling their thumbs. If you are looking to take the AP in the future, definitely take the AB, the A material doesn't have that much too it and really, a fair number of kids should be able to pass that exam just picking up a Barrons book and working on their own.
I am currently a junior in florida. Last year I was the only sophomore to take the AP CS A test. Of course I found that test really easy. This year's AB test took me most of the time to complete. I finished the multiple choice in 45 minutes and then went back over it and checked a couple things a few dozen times. Overall the exam wasn't so bad. There are lot of people in my class who didn't come close to finishing the exam but that is mainly because of the teacher of the class.
The worst part about the test was the emphasis they put on tracing recursive code. One or two problems should be enough to show that you get the concept! It's really a pain to do, especially when there's a lot of state to keep track of. I question its usefulness.
If my teacher had actually taught us the stuff better i think i woulda done well on it. Not that we didn't learn it. Just that it wasn't taught as well as it coulda been. But the test was pretty simple especially the multiple choice part.
The huge disconnect here, in my honest opinion, is that the vast majority of Computer Science students are only going after a Computer Science degree because it's the only way to get a job as a computer programmer - but the universities are all treating Computer Science as some form of abstract mathematics. Heck, some universities have Computer Science as a Liberal Arts degree.
Real computer programmers need to understand pointers. Java does not teach you how to effectively use pointers. In fact, it makes it harder to learn pointers, because you learn such bad habits.
Garbage collection is nice, but the majority of computer programmers don't have access to it. Universities should offer Computer Science and (Applied?) Computer Programming degrees, and the AP tests should similarly be targeted for Computer Science (Java, maybe) and Computer Programming (C++, definitely - with exposure to other things as well; Java, Python, Scheme, Lisp, Perl, whatever.)
Education is the silver bullet.
"...and many have never seen Pascal."
I *wish* I had never seen Pascal.
Or COBOL, for that matter.
eleven plus two / twelve plus one
The buissness teachers at my high school say that it is a waste of budget because only 3 out of 2000 people will program, but everyone has to make webpages and type. They think we only need keyboarding classes, HTML, and Cisco. Next year they are canceling Cisco due to lack of participation. I wish I could take AP computer classes. Well, I suppose there is always college.
C++ at least had some value to it beyond dang applets. Having taken the Comp AB test last year when it was C++ based I would say a majority of the test would not translate over this year. A lot of my friends who took it this year said it was far too easy (this coming from people who got 2's last year). For example, C++ forces one to understand the construction of a binary tree to parse data, but Java has built-in commands such as those for linked lists, so what are kids actually learning? Java is, in a word, cheap. Sorry to all those who think it has some merit beyond being way too user-friendly.
The exam has been in C++ for a good bit longer than 1 year (I took it two years ago). I would put much money on the fact that the difficulty of the exam has not change at all, especially since most of the code you have to actually write might as well be in quasicode. The test isn't particularly about the language; there's a decent amount of coverage of algorithm efficiency, data structures, searches and sorts, and object orientation that can be applied to a whole host of languages.
"Legal action"??? Come on! A person just out of college isn't going to be worth enough money to sue.
File under 'M' for 'Manic ranting'
Now that poor US students take their CS exams using Java we can count on more and more serious programming jobs outsourced to other countries where people still learn programming through languages that actually teach something about how systems work.
There's no such thing as an object oriented hardware architecture; teaching programming to young students with OO languages is like putting a wall between their brain and decades of still valid knowledge on the way computer machines work.
OO is useful at prototipying and getting the work done +after+ you have enough knowledge to avoid shooting yourself in the foot.
Honestly, does anyone else have the time?
ZINGER accomplished!
When I took the AP CS exam back in the day, I got a 5, two years later in college I discovered that it didn't count for any CS requirements, but I could use it towards a free elective. Same went for calculus as well.
Well that 8 credits only cost me about $150, alot better than the $1600 I would pay for them now.
On a side note, who here had the BigInt case study?
It's all good.
Speaking of computer science tests, the GRE Computer Science Subject Test is extremely difficult! At least they didn't ask to implement malloc().
It wasn't just you, I considered the free responce questions quite... well.. not worded clearly at all.. The objectives wern't clearly spelled out anywhere...
A lot of people are pointing out that concepts should be tested, not implementation details. Keep in mind that these tests are graded out of 5 based on whether the marker is convinced you know your stuff. Those markers are looking for evidence of an overall understanding of the concepts, not implementation details.
I wrote the AP CS exam two years ago. I was required to write and analyze C++ code, a language I had never used before (although I knew several others quite well). I didn't even know the basic syntactical structure. However, by looking at the various code snippits throughout the test booklet, I was able to get by. I'm sure my answers were riddled with implementation errors, but that apparently didn't matter to the marker who gave me 4 out of 5.
I should point out that the reason I was so horribly underprepared was that I had invested no time, my school footed the bill, and I didn't expect to have a chance at passing (I thought it'd be way over my head). It was sure nice to get a University credit, though!
I'll admit I don't know Java or much about it, but I did take AP Comp Sci last year (when it was C++) and I took the harder AP Test (AB I think). Now, let me explain that I could have friggin taken a two hour nap and still gotten a 5 on the test (I did get a 5). The entire class was a breeze, but I got a C avg. in it because I spent the time helping the other students. Our teacher wasn't too good with C++ and I was, even back then, a much better coder than her. The class never even got into Win32 programming or even something as simple as using the mouse in a program! I had to friggin teach the other kids how to pause a program, how to delay and how to use a damn pointer! The class was a joke and I knew pretty much everything that was gonna be taught. What I didn't know, the sort and search methods, can easily be found online and adapted to many different languages. *sigh* Sorry for ranting but I just cannot express my disillusionment in computer science education. I don't even know if I should bother going to college for Computer Science now. Maybe I'll post an "Ask Slashdot" on what people recommend.
Wheel in the sky keeps on turnin'.
The first page of the appendex book was an excellent idea. It was a cheat sheet of the various functions needed in the rest of the test, things you'd have if you were actually writing code.
The other problem I had was that you had to reuse implemented features in the case study, they'd count off if you didn't use the things they gave you. However, for one part I couldn't find any way to reuse code. I wrote an elegant algorithm that would work, but they're gonna count off because I didn't do it like they wanted it done.
Can anybody tell me how they did it? (post anonymously, though)
-twb
not bad. The MC was littered with annoying recursion questions that take way too long to trace through. And I hate those I, II, III questions, they're a pain in the ass.
I thought the long answer was really, really easy. The Case Study question was like copying out of the appendix. The hardest thing was a bit of Binary Tree Functions, but even that was a standard algorithm (insert).
And to comment on what someone else said earlier, that there should be more less focus on implementation. There is in a way, methods that you don't need are encapsulated and you only need to worry about what you have to write.
3 AP exams down, 3 to go
4B4556494E
I took the test yesterday, and with a 102.5 degree fever, no less. It was all and all a basic generalized java-oriented test. The AB exam had some more complex questions, mainly tracing some recursive methods, but the thing that really made me laugh about the test was that in the forbidden multiple-choice questions, 2 of them had invalid method headers! I looked them over and over and over again to make sure my fever was screwing around with me, but lo and behold, those 2 unnamed questions did in fact have illegal method headers... you think that all the hype built around this test would have made them, you know, proofread the thing?
so let's go and get a.... wait... what where we talking about?
I have discovered a truly remarkable sig which this 120 chars is too small to contain.
Oh, since, well let me think...SINCE FOREVER
:0
shouldn't that have been:
Oh, since, well let me think...SINCE 4 EVAR!!!
I took the test last year in C++, as a junior, and somehow managed a 5 even though my teacher didn't tell us about the case study until the day before the test.
I know some people who took the test this year, here are some of their responses:
*got raped by CS AP Exam*
--------------------
okay, so after the multiple choice was taken up robin realized she didn't bubble in her answers
then.... sean like farted or something in the middle of the exam and me and robin both just started cracking up, and we almost got our tests taken up and we got a huge lecture
-------------------
There were about 15 students there from my school, and about 8 from another school in my district. After about 45 minutes into the free response, 10 students from my school had given up and were sleeping or drawing pictures in their response books, while the other school's students were still trying hard to finish the test.
Shows you how well my teacher prepared us.
As a person who took both (last and this year, for C++ and java respectively) I cvan tell you that java, they tolds us, was going to be much harder exam, but it was much easier. Amazindly easied. written took about 45 minutes oc complete on avergae in my class, and we were given 1 hour and 45 minutes. multiple choice took all but the last 20 minutes for us all. It was extremely easy. A joke, thats what it was!
-------
1. Enjoy your job
2. Make lots of money
3. Work within the law
Choose any two.
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
I took the AB version - it wasn't very difficult. What struck me as really funny was that, although the "B" part is supposed to be a full semester of class, it was very little - we had to know how to "design" classes, and a very small amount of DS&A (hash tables, binary trees, and qsort, but not a 2-3-4 tree, graph, or path-finding algorithm to be found). According to the policy of the school that I'm going to I'll be able to skip a year of intro CS courses if I get a 5, but I'll want to check the curriculum and make sure the AP was actually as comprehensive as it's supposed to be before jumping ahead.
...in 1997, and haven't touched the language since. My C, C++, Java, perl, etc. haven't been hurt by the experience. If two months from now, Java isn't the right language for students who just took the test, then they'll use something else. No tradgedy.
Start Running Better Polls
I just can't watch that movie enough...
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...
It's the same exact length as the C++ test so you do get the same exact amount of time, 3 hours. I found it to be exactly what I expected it to be which isn't suprising because we had all spent the entire year preparing for a single test. I'm not allowed to discuss the multiple choice, but there was this one free response question that was a bitch. Traverse a binary tree without recursion, meaning using a stack. C'mon now, that's just garbage.
I took the test yesterday. All standardized tests are a joke. People who say pascal should still be used seem to be forgetting that:
1) The test are based on whatever language the majority of colleges are teaching.
2) Java is natively object oriented. Pascal is not. Object oriented concepts need to be tought along with algorithms, they are now almost as important.
One thing should be noted, there are CS AP A and AP AB.
The AB is much much different from the A test.
It goes into data structures and things like that.
The test had some sick obsession with recurson, infact alot of the code was put in a way to obfuscate the main purpose to require a desk checking approach. I was surprised only 2 questions (not exact but close to) involved the Marine Bio case study.
A class on CS (as opposed to programming in java) ought to define the laguage in two pages at the front of the test.
Anyone familiar with the concepts of programming out to be able to learn a simple language for the test from that.
I suppose that the language could vary, every few pages. The first one could be like basic, the last like smalltalk.
But I suppose teaching concepts to high-schoolers is a lot harder than teaching very concrete stuff.
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!
no damn text slashdot!
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
I honestly thought it was one of the easiest CompSci tests I've taken thus far. I'm a senior in high school this year, and my teacher essentially knows nothing about Java (though he has a lot of CompSci backgroup, OO programming escapes him). I didn't study either and finished the multiple choice with a half hour left over and the free response with over 45 mins left. I remember the C++ test being a lot harder! /theskyjet
I took the test last year in C++ and this year in Java (my school offered no other way for me to learn Java).
The Java test was a lot harder than the C++; while last year's was largely about more general computer science concepts and basic, universal programming practices, this year's (at least the AB exam) was almost entirely on higher data structures like hash maps and binary trees.
Of course, they didn't skimp on the recursion either.
Glog!
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
Have you ever taken an AP computer science test... on weed?!
Nyo nyo, the Neko Boy has spoken.
Our schoold district has a policy of "approving" textbooks before they can be used, and they were too frigging slow to approve the new Java books, so this year when I took the AP Programming course at my school, it was taught from last year's textbooks (in C++).
So I didn't even get to take the test, and it's all because of our retarded beaurocracy.
(Just more proof that my school is in fact run by imbeciles.)
68.3% of all statistics are made up on the spot.
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.
I took it as Pascal...easiest exam ever (needless to say, I scored a nice 5/5), and that's not just among the other AP exams I took back in the day.
either way, thx alot...now I feel old. Wonder if Cowboy Neal feels the same way.
indeed it was.
and i want the find the author of this test and beat him in the face for the amount of recursion included on this test!
C++ was a lot easier.
...are best practices. No just WHAT to do, but WHY you do it.
In no special order:
1) Requirement gathering (with biz SIGN OFF!)
2) Error handling!
3) Trace/debug modes
4) Param validation
5) Source Control
6) Bug tracking
7) Configuration management
8) Release management
9) Multiple environments (dev,test,stage,prod)
These are the things that *good* experienced developers know and do because they've learned the best practices over a long time. The overhead is minimal, and the payback is huge in easily maintainable apps with excellent uptimes. Other developers who don't understand the WHY cannot be browbeaten into doing the WHAT because they just dont believe. They just do it half-assed or not at all. The crap gets thrown over the wall and burns up in production and the whole team looks bad.
Do I sound bitter?
Vonnegut was right: Of all the words of mice and men, the saddest are, "It might have been."
You mean all over the WORLD. There are other people out there!
4B4556494E
and VBA programming. Not my choice, it was what most corps wanted us to program in.
In my area there are very few Java programming required jobs and they are mostly filled by H1B and L1 Visa holders working cheaper than most of us US citizens work for. The rest of the Java programming is outsourced to other countries.
Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
There should be a .NET AP. If Microsoft is not shy about giving out engineering degrees, I'm sure they're not above giving out their own kind of AP exams.
I can't believe the grandparent got modded +5 insightful. Is everyone that reads Slashdot still in college or highschool?
If I missed more than four multiple choice questions, or if my first 'n-1' essays aren't absolutely perfect (and of course, I'll never know these...), I'm gonna be pissed.
Everybody else in my class---all but two definitely 'not geeks'---chickened out and will take the make-up at a later date.
Interestingly, today's Calculus BC exam was less exhausting than Comp Sci AB.
By the way, anybody else get a good chuckle out the portion of the verbal directions that essentially threatens cheaters with copyright violation?
... since most of the development jobs are in Java.
"If you took the exam, what were your impressions?"
I did an impression of Richard Stallman and demanded that my exam paper be released under the GNU GPL.
I then shaved my beard off and did an impression of Bill Gates and claimed that my fellow classmates were unamerican by not charging the going rate for solving the problems presented by the examiners.
Finally, I doffed my smelly clothes and put on a charming two piece suit and in my best Steve Jobs voice, suggested to the attending tutors that my exam be given the highest marks because it looked more attractive than eveyone elses -- the pinstripe shading on my paper took ages to complete.
It seems like everyone I have talked to has said that the CS AP has been easy, almost too easy, but I think there was a reason for that. Since this is the first java AP ever the people at college board didnt know what to expect, and they didnt know how easy or how hard to make the AP. My guess would be that the first ever C++ AP was extremely easy aswell, but year after year or so, the college board people were able to hone in on a difficulty level. For those of us who took the test this year, we got off lucky with the guinne pig test. As years go by, the test will probably get harder.
My school splits computer science into two years. I took the first year last year and was interested in the subject, but because of scheduling conflicts I could not complete my second year until next year. Does anyone have any studying tips for the AP exam to help me remember what I forgot over the year?
i can see why java would be better than c++ but come on! it still sucks. what langiage should they use?
Ruby
1. Write a function called "swap(x,y) that has the same effect as the pseudocode "t=x; x=y; y=t;".
:-D
2. Define a new data type called "TableIndex" which is a synonym for the "int" basic type. (If your programming language does not support "typedef," a macro is an acceptable substitute.)
3. Illustrate how to parameterize your swap() from #1 so that it will work with any basic type (e.g via function templates or macros).
4. Create an array of integers, and illustrate how to resize the array. (Since dynamic-casting is obviously poor programming practice, feel free to utilize class templates if the language does not natively support resizable arrays.)
5. Write a function that accepts a variable number of floating point arguments and returns their average.
6. Without relying on a compiler from another programming environment, show how to call some simple functions from a C DLL.
7. A mobile robot has 3 states, "roam", "sleep", and "evade". For a collection of 100 robots, demonstrate how an array of function pointers could be used to represent these states.
Uh... hold on a sec! Java doesn't HAVE pointers, typedefs, templates, macros, resizable arrays, ability to call C functions, argument lists, or function pointers!
Cheers,
-Gonz
(Either that or 'Very Frickin Scary').
My impressions: http://www.invertedsanity.com/wp/archives/2004/05/ 04/ap-computer-science-test/
Wherever you go, there you are!
I finished the test in about half the time that was given. The multiple choice we somewhat of a challenge, but the free-response was a joke. I responded to each with 10 lines or less of code.
The first year of AP Comp Sci being in Java was also the first year my high school used block scheduling. For those who don't know, block scheduling is having four one-credit classes per semester instead of seven half-credit classes. This was extremely bad for the students in the class, including myself. The class was one of the few, if not the only AP class that was not expanded to a full year of 90 minutes per day. AP Calculus was extended, and it now covers the BC topics as well. AP Chemistry was actually two periods under the old (~50 minute per day) system, so block scheduling actually shortened it (2/8 of the year instead of 2/7).
AP Comp Sci was only offered second semester so that our instructional time would be closer to the AP test date. However, this made it so we had, as a fraction of the course, much less instructional time before the test. We didn't even cover all the topics in our very basic book before the date of the test. Now we have over a full month of school left, but it's too late to help us increase our scores. We were expected to learn the topics not covered during class over Spring Break (the week before the test), which is totally unrealistic due to people being out of town, and generally not feeling like learning topics on our vacation that should've covered weeks ago.
We spent the whole first month of the class reviewing topics from the intro course ("Java Programming"). This is with 90 minutes per day. Not enough time was spent doing activities that were related to the exam. We had maybe three days to spend in class reviewing; all but one was before break. Even then, it was only in small groups, never as a whole class. We had time for two quizzes over the course of the class: one of which was only on the review material from the intro course, and the other was on sorting algorithms.
All my classmates' experiences could've been increased greatly if the class had been a whole year long. The whole time felt rushed. We weren't even able to get the case study working on our fucked up school computers until a week or two before break. We only had time to do the first two chapters of the case study in class, and most people didn't get through the whole second chapter. If the class had been a whole year long, we would've been able to safely spend the first month on review, which some of the kids definitely needed. We would've been able to cover at least the whole book. We would've had time to learn more interesting things and the class would've been more relaxed.
The most painful thing about the class was kids not understanding what an ArrayIndexOutOfBoundsException means. As if the name isn't verbose enough, you get the line number and attempted index as well. Solving everyone's trivial little problems takes time; there was only one teacher and over 25 students. While kids were waiting for help, they couldn't do much other than just that. I, being a bit more advanced (some classmates claimed that I "wrote Java"), tried to help out where I could, but it wasn't enough, which leads to my next point.
The only blame I can place squarely on the teacher is that she wasn't good at predicting at how long it'd take the class to complete assignments. Over half the assignments had their due dates pushed back, sometimes as much as three days. This lost time adds up over the course of the semester.
I'm ranting like this because I think its fucked up that they screwed around with the schedule and only gave AP Comp Sci one semester, while all of the other APs got a full year. Comp Sci isn't any easier: most of the grades of the people in my class are similar to most peoples' AP Chem and AP Calc grades. If you want to shorten an AP class, shorten AP Statistics, that class is a cakewalk.
If your high school ever goes to block scheduling and decides to make AP Comp Sci one semester only, take this message and shove it in the face of whoever is pushing for the transition.
Sick of people knocking on Gentoo's greatness in completely unrelated
gcj
Compile Jave to J-code, Java to native, and J-code to native. Is GPL'd. With libgcj to provide the API's.
Besides, I think your comment about closed-source language are off base. A language must be well specified to be useful, and thus an opensource compiler/interpeter can be written, always. The only issue with this would be patents, and I would agree that using a patented language would be a problem.
Well, since their going to outsource our jobs, they might as well gear it to the future.
The test was based on C++ for a lot more than 1 year...at least 3
(Please excuse my lack of details, it's not my idea of a nice day to have the College Board terminate my scores)
I took this year's test and found it overall pretty good. I'm not a good programmer by my own standards, but am second best in the class so far this year. (The kid that did better is some ubergeek that totes in his Linux laptop everyday and puches out code like nothing) I found the test to be hard enough to weed out everyone that doesn't know their stuff, but not difficult enough to present a real challenge to someone that really knows the material.
The thing that annoyed me most was that they coded the mystery methods in the most roundabout way possible in most cases. They overstressed some topics (recursion, linked structures) and didn't go anywhere near some others.
IMO, Java was a good choice of a language to base the test on. It kept the overall topics (ADTs, recursion, efficiency) as the main focus without too many detials. They didn't test on quirky systax, and whenever I didn't remember an obscure syntax piece it was easily found in the appendix.
Given the number of responders to this thread vs. the number of responders to any given thread... that really shows how much of this population is comprised of 17 yr olds. Given that I can remember the Pascal test, I really need a life. ;)
actually your right - "it started being c++ in 1999 but they did do 1992 and 1993 in c++" my friend matt (quark_m13) just informed me of this. But thats not the point. The point is that they used C++ as a transition into Java.
Whoever dies with the most toys wins.
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.
I took the C++ AB (5) last year too and I just took the java AB. I think that the java was a bit more difficult, but then again I didnt pay attention in class or actually study for the test - I dont really like Java ;) Anyway I think that they should go back to Pascal or even C++, so the kids actually learn something instead of just how to copy and paste. Personally I think that they should learn( and understand) algorithms first and then code, java isnt the language to teach a kid how to think like a programmer.
I thaought the test was going to be much harder than it was, but I knew everything :). I did not have enough time to answer the last 6 multiple choice questions, but finished all of the free response. (This was my first AP, and I am a 9th grader)
We had 1hr 15min for the multiple choice, 1hr 45min for the free response, same as the exam for C++ was.
I thought it was overly easy, but then again, I do go to a top private school... I wasn't doing very well (low C) in the class, but I'm 90% sure I got a 5 on the exam. Basically, if you knew the marine biology case study, it was simple.
Remember kids, tin foil doesn't work, so use LeadHat.
I had an AC/DC concert to go to that night...so I kinda skipped out of the exam early
- Double Linked List
- Minesweeper
- Free Cell
- AVL Tree
- Graph
- Djikstras Shortest Path Algorithm
- Hash Table
- Quick/Shell/Merge/Heap Sort
I left out the really easy assignments but that's hardly Freshman year stuff.All the reasons you dislike C++ are the reasons that I'm a fan. I use many languages, but C++ in particular gives me more leverage overall.
1. Operator overloading - mandatory for best use of templated functions and algorithms. If people make poor decisions with respect to what they overload, that's hardly a problem with the language. I would consider not being able to overload an operator a problem with the language.
2. References are required for any function that returns a "left-hand value." If that phrase does not mean anything to you, then you are not actually discussing C++ references at all, merely glorified pointers. Since left-hand values cannot be NULL by definition, your misunderstanding with regard to their purpose seems likely.
3. Memory mangement is identical to that of C. The addition of the new and delete operators is nothing remarkable - they just call malloc and free. They are also overrideable on a per-class basis if that is not good enough for you. If by "memory management" you mean "takes complete control of object lifetime" than no, C++ thankfully let's you do whatever you want with your objects.
4. Templates are very powerful. They allow with a single declaration the ability to generate code optimized for a given problem. If you are complaining that the mechanism is too powerful, well, some of us like the extra capacity.
5. As for multiple inheritence, I use it frequently. Some types of inheritence are unfeasible, some are unimplementable without substantial performance penalties, and most are simply doable. If you're having trouble, and your inheritance tree is sound, then file a bug report for your C++ compiler.
Genuinely, most of your complaints misrepresent C++ as something it's not, namely a high level language. If C is one step from assembly, then C++ is maybe a step and a half. That's by design.
If I want rapid prototyping, I'll use PHP or Python. I'm not sure what Java gets me other than a sandbox and some friendly exceptions when things go wrong. That's nice, but I don't write weak code, so all that padded insulation does me no good at all.
-Hope
This might, just might be a reason Java is taught now.
:
Java forces an OO model. C++ is very liberal on this matter.
In C you have to take care of your own garbage collection, Java takes care of most of this for you. And java is pass by val ( reference) which C++. I'm not all to sure what they have against the use of pointers. Ofcourse this is just a speculation.
On a side, but nostalgic note
Man i remember learning pointer arthimatic that was some good stuff and a great learning process. You get to learn first hand what makes up strings. And how to manipulate them to their full potential. There some serious power behind this language.
Well, I am in the 10th grade, I started studying programming since 8th grade. I know C++, C, PHP, SQL, and Java. One month ago, I did not know anything about Java except it runs through the JRE. I decided to take the CS AP A test and see how it went and I am completely self-taught. I must admit, the exam was really easy for me and I know I got a 5. Maybe it is because of my background experience. However, less than 5 days ago I did not know merge sort nor binary search. I looked it up on the internet, learned binary search and I still don't know how merge sort works apart that it is a "divide and conquer" sorting algorithm. This did not affect me in the test. In fact, I think that if I should had now known binary search, merge sort, insertion sort, and selection sort I would still do great. This is because they test algorithms giving you some code, and a predefined array and they say "what is the content of the array at the second iteration?". In the free response section, you can use sequential sort and get the problem correct. I bet that in the universities don't allow this freedom in the test. I am taking the AB test next year, I hope I can use my mind instead of having fun taking the test because its too easy.
We learned about 8 months of superfluous crap, of while about 2 weeks worth of info actually showed on the exam. I feel dirty for knowing Java, and although it is a widely recognized language, I feel it is archaic and that C++ would have been MUCH better to stick with. The exam was rather easy though! All PR2004 robots REPORT! =D -----Nate c/o 2005
nobody gives a shit about high school ap tests
In the real world programmers don't have time to pore through their code for memory leaks. They don't have time to write every last bit of functionality from scratch. They can't sit down and go through a core dump for every exceptional condition; they can't even afford to take the system down every time an exception occurs. They can't take the time to learn the architectural nuances of every platform in existence.
The real world requires the use of libraries that provide common functionality at the expense of efficiency. Comprehensive garbage collection and exception handling keep the system up at the expense of operating efficiency. And virtual machines and multiplatform toolkits hide architectural differences that would otherwise improve performance.
There are many applications where platform-specific enhancements are necessary; there are many others where this is not possible.
Took it that day, yeah. Really easy, but then I have the coolest teacher. Even while having it be fun, he had us practice questions that were harder than the test. But they gave way too much time, even though I finished pretty quickley for both of them, if I had any more time I would have gone to sleep!
Last year (as a sophomore), I took the
Computer Science class at my high school.
A fairly good intro to C++ (I already was
proficient at the time, and rather obsessed with
assembly...), very good detailed look at searching
& sorting algorithms. At the end of the year,
I took the AP Exam and got a 5.
This year I took it again because of the change
to Java. Not good. (the following is what they
do at my school, I, of course, don't know how
they teach it at other facilities). Quite boring.
Java is a fairly big change in the way things are
done than C++, yet it gets taught in nearly the
same manner. More emphasis needs to be on the
OO concepts and how to get objects to work together
instead of algorithms that will generate slow(er)
bytecode when you can just call a built-in method
that probably ends up pre-written in native code.
I know for a fact that most of the kids in my
class don't even know it's not native code...
(my favorite quote "What do we have to import to
use while?")
I didn't take the AP Exam again this year, mainly
because I realized I don't like Java as much as
I thought I did/would.
Some thoughts...
Just look what AP exams did for Pascal!
I got a 4 on mine (I think) and it was [Turbo] Pascal based.
I did, however learn a LOT about functional programming - most of which I'm trying to forget so I can learn OOP style programming.
Don't think that a small group of dedicated individuals can't change the world. It's the only thing that ever has.
Thanks,
The Raven
While many may have been lucky enough to have been taught this course in a proper manner, our AP Computer Science class was really just the Grade 12s trying to play games on the locked-down old-school Macs at the back of the class. We had a textbook, and that was about it.
Having a grade more than 50% higher than all the other guys in the class, I was the only one who took the exam. To my horror, 1/3 of the exam was about a "case study" I had never seen, but was expected to know all about! I just wrote an explanation that I had no idea what they were talking about and they gave me 4/5 on the test (which surprised me, that's for sure.)
In summary, if you're taking this class and your instructor doesn't know what they're doing, make sure you find that year's case study on the AP site and study it!
- Allen Pike
Altering time, one time at a time.
I took the exam though because of all these papers I had to sign saying how I cannt talk about the specs of the test I can say how it was generally. I should probably start out by saying Ive been on computers all my life(mainly using linux), my dad started me out and I have been coding since the age of 7 or so starting with simple HTML learning C, C++, a little bit of IA-32 ASM, VB(I needed it for a job), and Java. I started Java out a little bit on my own. The way my school has it set up you have to take an intro course and then the AP class. I was lucky to get into the intro class freshman year since you have to be in Algerbra 2/Trig to get in. I really took the class just for my college application. The class was pretty easy we followed a work book given to us by the college board it went through all the easy stuff if statements loops objects memory sorting and searching ect... I though as well as my class mates that we were well prepared for the test everything but one question was covered. The free response was pretty easy and most of the time I at least was checking for typos. I think I got a 5(the highest grade you can get on it) but only time will tell(we get the results the 3rd week of July). It was a four hour test(from walking in to the class to walking out) and while it required alot of brain power I though I was prepared. The only thing I really didnt like about it was the fish case study and that was because I dont like working with programs I didnt write and if I have to I like to have the full source, not just memorize a bunch of methods and what they do.
I took the test on Tuesday. Three hours alloted, used about 2.5 of that. The free response section was a real snap.
the exam has been based on C++ (1 year)
Wrong! I took it the 2nd year it was ever done in C++, that was 2000. So lets see C++ in 1999,2000,2001,2002,2003. I count 5 years of C++ and now Java in 2004.
That is an interesting commentary on how well respected Java skill is in educational institutions.
(I'm not arguing against its usefulness.. Java IS a sexy language... But against its usefulness as an instructional language? Perhaps.)
Who mediates your information?
Personally, I like the direction. Having taken C and having been a stalwart supporter of that languages power, I cannot tell you how happy I am you don't have to put up with this bullshit in Java.
But that is just the lazy half of me. All the checking and built in handling that Java does slows it down. Not only does it improve life for the developer, by giving him one less chance to mess up, it also helps the end user by giving the developer one less chance to screw up.
But then again it is slow. And C has benefits over Java in some arenas to be sure (I'm hardly an expert but I am sure you and others know this.)
So my answer is don't have all students learn just Java, don't have them all learn just C, or just Assembly. Hell, if you do teach primarily in just one, then force them to take a course in 2 other languages as well, and a course in theory that predominatly teaches the advantages and disadvantges of each with some lab/project demonstrastion...
And for the record, I agree with you, not everyone should be a Java programmer, but not everyone should be a C programmer either...
It was basically "Copy this to the next page"...it was so easy!
I tend to agree mostly with you. Computer Science really should be a science again - and Software Programming should be created to fill the 'programming' void left by that refocus.
Some schools have a "software engineering" area or speciality and that is fine too. But the science should be learning the hash, optimizing the hash, focusing on algorithms. Those are the tough courses and so many CS and CE students struggle through them because it's so depth. Instead, make the CE and SE/SP students take Algorithms I and move on - and then the CS students can take Algorithms II and really master the concepts and then be able to apply them to make environments faster and optimized. (ideal)
That question took me approximately five minutes. Also, I compiled the case study code about a month before the test and can assure you it works. Maybe you should rtfm? Incidentally, the review book I used for the test seemed to mention that recursion was the way to deal with binary trees, though I didn't really look at that closely because I was taking the A test.
-insert a witty something-
Posting or discussing specific test questions is not authorized by ETS, and may result in legal action against the person posting them by compromising the security of the tets.
I took the last C++ AP exam offered. I chose the A section not AB. I started learning C++ my sophmore year in highschool to practice for my school's ScienceBowl team. I immediatly got hooked and continued casually programming on my own. I took the C++ AP exam my senior year and passed with a 3! Ya!
:-/ It's too bad my school didn't offer a C++ class.
:) ;) gimme new AND delete anyday ;)
There was only one other person that took it with me, who didn't do so well.
Overall, I found the test to be pretty easy. At that time I wasn't too comfortable with classes, let alone inheritance, but aparently it didn't affect my grade too much. The hardest part (and the most fun) was Definatly the free response. English free responses are boring compared to writing a free response in C++. It was interesting because we had no way to check our cod e(yeah I reply on compiler errors Way too much).
Over all it was a good expirence. It gave me more confidence in coding, and hopefully it will get me some cheap units in the future.
I'm so glad I took it when I did. I don'd trust Java's garbage collection
I took the CS AP test back in Spring of 1999. It was in C++ then. I remember this because I didn't take AP CS as a Junior because I didn't want to bother taking the class in Pascal when it was going to be changing to the more usefull C++ the next year. Then in Spring 2001, while I was in College, I helped my old high school CS professor with Java stuff because he was perparing to change the AP class to Java. Was he just jumping the gun or is this post wrong?
I took it yesterday. It was extremely easy. I am actually in an AP Computer Science AB class, but I didn't really pay any attention at all this year: we students have computers in the classroom, and most of us just browse everyday. That said, you can see that I'm not exaggerating when I say that I studied a total of one Sunday before taking the AB test. The only material I used was the Barron's AP Comp. Sci. with Java. As I had a cold (or allergies) yesterday, I didn't quite finish the first part of the exam. Even so, I still have confidence in getting a 5 on it.
The intraweb? You have Slashdot as part of your LAN's WWW system!? A true l33t one, indeed....
Honestly. If you're going to abuse words don't abuse other innocent words too.
Dear god, Don't take Physics at all AP! Its a living hell, I have the test next monday; and we're (people in my class) are so about to do miserably. Last year, in the "great state of SC," 5 people made 5's (highest possible). 4 went to my school, and studied from the beginning of the school year. Its going to be insane. The Thing is, its appearently very difficult to teach BC Calc and Physics C at the same time. Physics B requires no calculus, while C is based on Calculus subjects. Thats why most high school's offer B instead of C.
Of the four high schools in my larger (15k student) school district, I was one of SIX STUDENTS to take the test. Five of us took the AB version and 1 the A.
It was horrible. Very hard. Our teacher didn't spend nearly enough time on the things that the entire exam was focused on -- the TreeNode class, stacks/queues, sets/maps, and algorithm efficiency.
I would suggest that any other high school nerds out there take the A version, NOT the AB.
I studied for 6 hours the night before, and slept for 14 the following night to 'recharge'. That test was the hardest exam I have ever taken.
I took the Computer Science A exam in C++ in '99 and Computer Science AB in C++ in 2000. I don't think that the College Board switches languages quite as frequently as the sumbutter would like to have us think.
When I took the test it was based on C++
But you had to write it on paper
This presented many difficulties.
Numeber one, I type faster than I write. Second, Making sure everything is properly 'typed' or 'written' properly (semicolons, brackets, puncuation etc) is much easier for me to recognize on screen than paper. Thirdly, I can't run it to test if it works! I don't know about you, but for me, I like to test out my code as I write it to make sure it works. It's like a spell/grammer-checker. And that grammer checker can point out huge mistakes I may have made on mistakes. In the case of English, you may realise that teh sentance has no relevance to the paragraph, and perhaps it belongs elsewhere. And I see a parallel in programming and using a compiler to check code. Not to mention copy/paste!
When I write code, I know there will be mistakes - can one expect to code perfectly? I didn't like the test. (And I'm bitter because I got a lower score than I think I would have been capable with using a computer)
i took the first compsci-ap test in c++ in 1999.
the year-long class taught me more than both compsci1 & 2 in at RPI.
Having taken the test when it was in C++ and now majoring in CS with a minor in math, the test was thoughouly unhelpful. I got a 5 on the test and got credit for a remedial progrmming course. I slept through my first programming class in college b/c it was all stuff I had seen before. I wouldn't reccomend wasting the 80 some odd dollars on the test cause it gets you nowhere.
My school should stop offering the Computer Science AP... To take the AP course there was a prerequisite to take. Introduction to C++. Why not Introduction to Java? That meant that the first 2 months were spent on teaching basics to the people with no programming experience (Yep, they didn't require the prerequisite course this year :/). We started a month late on top of that because the IT department is composed of ex-janitors (I wish I was kidding).
My teacher doesn't know C++ nor Java. Nothing at all. Which is fine, I have learned everything on my own and I planned to. I DID expect her to correctly inform us about exactly what is on the A and AB exams. Instead we got something like, "Oh the AB doesn't have much more then A... Just like multidimensional arrays."
Awesome, I will take the AB and get a 5! Ah ha. No. It is the night before the test and I decide to do some practice AB questions from the college board web site. I got 3/15 correct. Why? What the hell are all these other things? Iterators, Queues, etc...
I pretty much stayed up all night figuring the stuff out. I got everything down pat except the Binary Tree and Big O stuff... I wish I had a few more days to learn the topics... If I am lucky I will pull a 3 - a less humiliating grade...
_________ Help me get a PSP!
BZZZZT, wrong. C++ was for at LEAST two years. I took it last year and I know it wasn't the first year. And what's this about having more time? I took the alternate, and everyone got the same amount of time for the free response. (Boy, don't I miss coding on PAPER?)
-----
Score 3? For what? Being wrong, at length? - smirkleton
okay, i did see one person try to correct the article, the exam was c++ up to and including the last exam preceding this year's, not "3 or 4 years ago" as someone said. i took apcs A (AB was not offered at my school) and it was ridiculously easy. not just for me, but it was unchallenging even for the less skilled, less computer oriented people in my class. so the scoring cutoffs should be close. as for it being java: i personally hate java. hate it. i like c++ far better, but for the purposes of this exam, it doesn't matter. i saw a couple people post comments saying the test should be on concepts, not language. it IS on concepts, the course simply uses java to teach those concepts to students. it is not a language exam. it does not ask about bytecode and package structures, it focuses on sorts, recursion, etc. there is nothing wrong with the exam.
#!/bin/bash
I took the "A" version last year and it was a complete joke. The longest code I had to write was about one line. As for more general "Computer Science" type questions I don't recall anything much more than "gee what is this loop doing" or "whoah, data is usually stored in bytes." On the plus side my teacher did an excellent job teaching us C and C++ (2 semester courses) so that by the time I got to college I skipped cs I and was far ahead of everyone in cs II.
Java, we din't 'ave Java in my day - we had to code using punchcards and our bare teeth and if you passed the exam - you had to work for 5 years for nowt before you got your own desk; and another 5 for a chair. +-- too grumpy for a sig.
Because people sure aren't learning them from Java. C hackers are getting harder to find.
Good riddance. I'm getting annoyed by this constant assertion that C is the only real programming. It's just inappropriate for most of what people are doing with it.
For any chunk of C code using malloc() and free(), there's a smaller and faster OCaml equivalent that's garbage collected.
For fun, go to the Great Computer Language shootout and download the java, c, and ocaml fibonacci code (same algorithm). On my machine, the ocaml version is the fastest, followed by the java version, and then the C version. Including startup time, the java version is always faster (user and real CPU time) than the C version.
I write enough C, but OCaml isn't the first language that's produced faster code than I've been able to produce with a C compiler, nor is it the first that's made it easier to write reliable apps than unreliable apps.
What I really don't understand is the way people refer to free() and malloc() as if they're some sort of fundamental elements of programming that are required to be taken seriously. You know they're library routines, right? Should I not take someone seriously who doesn't use sbrk() directly in their code?
-- The world is watching America, and America is watching TV.
I took the AP CS A exam for C++ last year and I thought that that was not easy, but def not hard. This year I took the AP CS AB exam for Java and the multiple choice were def easy but the free response were difficult
Calculus isn't required I'll give you that. However there is a reason you were told to take it: it teaches you a lot more than any other class. Learning that you will need latter in life, but you won't realize it. I never use calc itself in life, I couldn't do a simple derivative anymore. I use the thinking abilities calc gave me every day.
You are wasting everyone's time by not talking calculus. Most of all your own.
Never bothered to post on /. before.
Took the AB exam tuesday,
just wonder if anyone else decieded that question 35 was either completly nuts, impossible, or anything like that?
All right look. I didn't take the test, but I don't doubt that it was difficult. So it might have been the hardest test ever, I don't know. But that's no reason to take it out on my teacher. Mr Schram is a really nice guy and a good teacher and it's not his fault you didn't know the material.
I was a taker of the C++ AP in '99, and was TA for the course that took it in 2000, we had a mix of AB and A people taking it.
The AB test back then, even in C++ was mainly made up of order (Big-O) and linked-list / tree questions, something on the order of 60% of the multiple choice. The A test from what I've heard from the students covered most everything else indepthy. Several questions on: what does this mystery function do, as oppossed to only one or so on the AB.
Order of algorithms and the basic data structures (mainly how to use pointers) were big on the AB. As most people say, most of what they should be testing for is language independant. If I remember correctly, the GRE Computer Science subject tests all use Pascal (the traditional language used for describing theory and algorithms).
when i took the ap computer science exam in '02 in C++, we spent all year in class doing a fish simulation that was more of a pain in the ass than it was helpful to me. then on the exam we had to 2 parts as mentioned by other people, but the second part was answering questions about the fish problem, i received a 4 on the exam and got credit for it, but as soon as i went to college i had to take a class in java that was the same level as the AP class and I lost my computer science credits that would have transferred. my teacher for the class told us that she was going to teach the class in Java the next year, if she had done that earlier, I would not have wasted my time losing credits. I think it is a good idea to teach the course in Java.
AP tests aren't supposed to predict your future performance directly. They show your motivation and how you did on the same test compared to other high school students in the country, though, and that is useful information. But anyway, the AP score is a way to test out of a class in college.
Cover your eyes and click this link!
the exam was easier than i expected. it was multiple choice and short answer. a majority of the multiple choice questions were about java, but there were a couple more general ones, such as converting hexadecimal to decimal. the short answer, or written part of the exam was worth half the grade and was all about writing java code. however, it was fairly simple classes and methods, mainly about using for loops and arrays. there was also adding on to the MBS (marine biology case study) program. they included a ~30 page appendix with method definitions and much of the source code from MBS classes - a lot more than you need. nothing needed to be memorized; you could do it with basic programming logic and the reference book which we were allowed to use during the test.
I had literally an hour on each section of that AP...what a joke. I took the C++ AB exam as well, and this was nothing comparitively.
I'd have to agree, but recursion and ArrayList are probably the simplest concepts on the test.
What DID irk me what the incessant algorithmic analysis in the free-response and the use of advanced data structures. (note: this was posted two days after the test was proctored and no multiple-choice questions were mentioned.)
I have my MCSE, and I would have to say that either VB or C# would make ideal languages for AP. I wonder why nobody has mentioned these! They don't have malloc() or free(). We need to get the next generation of computer scientists familiar with Palladium and trusted computing.
Argghhh! Computer science is not the study of computers. It is the study of computation. Big difference.
And the AP classes were most assuredly not GPL. There were, however, 3rd-party LGPL rewrites (pretty simple classes). pstring, pvector, etc., IIRC.
NO STACKING!!!
I took that test and while I'm not at liberty to discuss anything specific I felt that the topics covered were fair to the students and accurately tested a students knowledge of not only the Java programming language but their knowledge of software design in general. Has anyone else taken the exam before to tell me if that was their impression then as well?
-Tim Louden
When I started programming outside of class, it was another hurdle for me to leap before sharing my code with others - we used deprecated crap (#include vs. #include ), didn't do anything with stdio.h, and knew nothing about STL. It's not that much harder; students can handle it.
Not familiar with OCaml, but what JVM?
What Compiler was the C code compiled with (with what optimization options)?
Did you try other compilers/JVMs?
Was the JVM already resident in memory on your system?
Not questioning, just curious.
This space for rent. All reasonable inquiries will be entertained at proprietors discretion.
When I took the C++ AP comp-sci AB exam, I was the last one done. In fact, I looked up from my test after about an hour and saw all the other test takers throwing shit around and goofing off! I was so worried! Why the hell was it taking me longer, when they were all done?
You know what? They weren't done at all. They gave up! I was the only one out of my class to get a 5, though there were a couple of fours.
If you plan on taking the test, be sure you can read code. I don't know if things are still the same, but when I took it, a good portion of the test was about extending/understanding a case study. We had the code for the case study to read in advance, but I was more focused on trees and such. What saved my ass was the fact that I managed to read the code that was included in the back of the test for reference... so... yeah..
I am a viral sig. Please help me spread.
Lnaguage doesn't really matter. I took both A and AB exams a few years ago in C++. Almost nothing was language specific on the exam (even arrays and strings are used through CB wrapper classes rather than built in versions). When they ask you to write code, they don't look at syntax as long as they can figure out what your semantics are.
The big difference isn't the exam. With C++ a lot of AP teachers didn't teach object oriented programming. Now they can't get away with that.
-Chris Heriot
Over here at Rensselaer we are actually thinking about teching CompSci I in Scheme because it is very simple (so they say), and a lot of academic types think functional programming is the way of the future. I just spent a whole semester writing other interpreted languages using Scheme and while I do think functional languages are fun, they don't seem to be "all there" yet. I heard MIT doesn't even teach C/C++ and relies purely on languages like Scheme. Any comments? Anybody hate/love scheme?
My AP class was 4 guys including myself who had already taken all of the schools offerings in C++. They considered it an 'independent study' and just gave us a copy of a Java book called 'Java Software Solutions'. We pretty much ignored any and all assignments given to us and just did our own programming projects all semester. None of us found the exam difficult at all. It probably had more to do with our backgrounds the last few years, and 3 of the 4 of us still prefer C++ to Java.
I eat crayons
I took the exam in 1993. The exam was pascal based. I think it was a 1-2 hour written only exam. The exam covered a lot of the basic data structures and algorithims (linked lists, bubble sorts, etc). I personally didn't think it was anything too spectacular.
I'm quite certain that Mr. Bunny would disagree.
$699 please.
-- In Soviet Russia, radio listens to YOU!
ok, tell me what major IS for people who "just like programming" and "just like computers"? what's the name of the major for people who enjoy CREATING software, not just theorizing about the limits of what can be created? what's available for, you know, the richard m. stallman types?
answer me that, and i'll start believing the hype about only looking at computability in computer science.
If two languages have some minimal* expressivity (both are Turing complete) then there is no expression in the first language that cannot also be expressed in the second language. If you need a more formal description of this, please read the Church-Turing thesis. What it means (without formal math proofs) is that "Language doesn't matter". You are being too soft when you say 'Lanuage shouldn't matter'. It's more elegant to say "Language DOESN"T matter".
The minimal expressivity: (stolen from Wikipedia)
1. # The method consists of a finite set of simple and precise instructions that are described with a finite number of symbols.
2. # The method will always produce the result in a finite number of steps.
3. # The method can in principle be carried out by a human being with only paper and pencil.
4. # The execution of the method requires no intelligence of the human being except that which is needed to understand and execute the instructions.
... does the garbage collector deal with all those who failed?
Free Firefox news reader.
How to Design Programs
I took the AP Exam in 95. there were no multiple choice questions. it was all code. at the time the instructor graded it. we got a certificate afterwards to our performace. As far as the language. I like Pascal, it was very nice for learning about CS. granted you can't really teach OOP w/ Pascal, but still, personally, I think JAVA sucks ass, so oh well. Since then I've moved on to more complex languages (not to learn but to use) such as C and ASM. I think it's a shame that the AP tests are moving in such a direction. OOP is nice to learn, but honestly, a programmer isn't worth sh*t if they don't understand the hardware (sorry cross-platform dudes) side of the situation. There is a deep relation ship between code and hardware, and its unfortunate that more students, or perhaps more importantly the instructors, do not understand this. I realize that in theory, you should be able to abstract away from hardware, and specialize in the simple pure logic of the problem. But IMHO that is a wrong attitude. You cannot remove the hardware aspect any more than you can remove the user aspect (even if the program is non human interactive, there is still a human user who implements the system) I think, at that impressionable age, the complexities of software and hardware interaction should be a hands on experience. Both should go together, not one separate from the other. Once the kids have had a taste of that, then they should choose and specialize. just my $US0.02
http://www.idiom.com/~zilla/Computer/javaCbenchmar k.html
Not familiar with OCaml
OCaml will compile to its own bytecode or native code (i.e. not via C).
but what JVM?
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-117.1)
Java HotSpot(TM) Client VM (build 1.4.2-34, mixed mode)
(OS X)
What Compiler was the C code compiled with (with what optimization options)?
gcc version 3.3 20030304 (Apple Computer, Inc. build 1640)
With -O3
Did you try other compilers/JVMs?
I tried it after reading someone's post on orkut suggesting that the java one was faster than the gcc one. The original poster was, I believe, using Linux. I had the same results on my Mac.
Was the JVM already resident in memory on your system?
I did multiple runs of each, so stuff was probably cached.
-- The world is watching America, and America is watching TV.
let rec fib n = if n < 2 then 1 else fib (n - 2) + fib (n - 1)
compared to
unsigned long fib(unsigned long n) {
return( (n < 2) ? 1 : (fib(n-2) + fib(n-1)) );
}
(I have not programmed OCaml, but since it is a functional language I suppose it works a bit like haskell. )
To use this recursive fibonacci-algorithm to compare functional languages and imperative languages is to cheat.
In a imperative language fib(4) calls fib(2) and fib(3). These call fib(0), fib(1) and fib(1) and fib(2). And these calls fib(0) and fib(1). As you can see, a lot of work is done more than once.
In a functional language (at least in haskell) fib(4) calls fib(2) and fib(3). fib(2) calls fib(0) and fib(1). fib(3) calls fib(1) and fib(2) - but since these values are calculated there is no need to calculate them again.
I took it and found it to be far easier than the testing I received in my APCS class from my teacher (though she's a tough teacher). My only complaint was the idiotic test administrator who said I had "30 minutes" left when I really only had 10 minutes left which thoroughly jipped me of 6 questions on the multiple choice. I found the free response to be incredibly easy but I like to write code. And on a note for the first comment, you only get 3 hours for the test, not all day, or shouldn't have.
On a side note, if you bombed the AP test, or think you did, don't worry. It really doesn't matter unless you had to pay full price to take it ;), and even then it's a fraction of the cost of 3-4 credit hours at just about any school. Even if you get a 2 on the test and CS or CE is your major, your school will have a course that will get you up to speed in a semester. Ultimately, the AP tests are just a convenience, not really a measure of how you can do. That said, don't let the scores get you down if this is what you want to do.
I am feeling fat and sassy
I don't agree to it all. Yes I know his books are filled with typos, I read them too. However, are you telling me that you can't learn anything because something isn't spelled correctly or one of his statements is missing a semicolon at the end? See, this is what upsets me. People take things like this to such extremes. Mr. Schram is a human being and makes mistakes just like the rest of us and now people say they want to basically tear him apart. I'm not stupid, I know they really wouldn't do it but still you shouldn't direct your anger towards him since this isn't really his fault. Now I know that there are more to his books than just typos, but for me that kind of helps me understand the material a bit more, because I admit I'm slow. So when something isn't just right in his books or I don't understand, I raise my hand and ask why it is written like that and why it isn't like how I thought it was supposed to be. And since he's my teacher if he sees it's a mistake, he apologizes and explains how it should be. And I think that your teachers should do the same. If you don't understand it then that's what they're there for. They should be able to explain to you what is right even if the book says it's different. It happens in my other classes too, not just APCS. My teachers usually teach as they would normally and dileberately tell us to ignore the book when it says something different. I'm not wanting a flame war either, I just don't like it when people take things out on others when it's technically not their fault. Instead of going to their teachers and discussing the parts of the test that were difficult, they instead waste their time trying to figure out how many ways they can torture Mr. Schram.
I didn't take the CS test as I wasn't programming in HS but I have taken the AP Calc, American History, World History and Macro Economics tests.
If the AP CS classes are taught anything like my other classes were taught everyone should do rather well. Teachers in my HS taught specifically for the test, that is, based on student interviews on past tests they covered in depth materials that were on previous tests and flew through the rest.
For Calc my teacher actually finished teaching us everything she expected to be on the test a month early...AP calc became movie/study hour.
We were all given a number and told to memorize that question/answers. When we got done we were to write it down and hand it into the teachers. Do this for 5+ years and you pretty much have every question on the AP tests.
It worked, I did very well on all my tests, but I have to wonder if I didn't miss a few things along the way. Obviously free response questions are generally designed to test complete understanding of material but hey, this is how it was done for me.
Apple free since 1990!
The C++ one was a joke and a half. I'd done a little bit of C programming in the past, mostly tcp/ip applications, stupid script kiddy stuff, obfuscated C entries, etc. I didn't take any classes or read any of the material. I think I was supposed to use the API crap they they threw in, but I just re #define'd any of it that appeared to more reasonable things like memcpy. Anyway, it took less than an hour and I got a 5. The hardest part was having to write code with a pencil instead of typing it.
Try -O2. I believe O3 includes some optimizations which generally make things run faster, but not always. Aggressive optimization is a chancy thing.
Lea
AP Tests are a joke. One or two may get transferred, but on the whole, spending a huge amount of time on them is a waste. So you apply to colleges using your GPA and class rank up to and including your Junior Year, meaning that keeping a high class rank senior Year is unimportant unless you want to go up and make a pretty speech?
What do you do? I know in MA there is a loophole in their rules that pretty much lets anyone with at least a 3.2 GPA attend a State College for classes instead of High School. "So what?" you may ask "The colleges I'm applying to won't accept Programming Class college credit because I went to some silly state school." I would agree with you. Instead of taking programming classes, figure out what liberal arts / non-technical electives the schools you are applying to require you to take, and take those at the college. I went to a State School my senior year, loaded up on English, History, and Poli Sci classes, and transferred all of them to the Engineering school I attended. With the free time gained from this, I was able to get a Bachelor's in Engineering and a MIS at the same time.
Know the system and outsmart it.
What about the CS departments out there changing their courses in order to pump out more students who can program video games?
Is that engineering? science? other?
To use this recursive fibonacci-algorithm to compare functional languages and imperative languages is to cheat.
I don't *believe* it works the way you described (that'd make it many times faster, not just a few percent faster (23.07u vs. 31.79u)), but the point is that dealing with every possible detail only makes it harder on the programmer and harder on the compiler to come up with a better way of doing the work.
I agree that fibonacci is a dumb comparison, but it is a top-of-my-head case where you lose a lot in C (i.e. the ``fast'' language) vs. other languages.
The other thing to remember is that Java isn't a functional language.
-- The world is watching America, and America is watching TV.
That's exactly the point of this shootout. It's not a super-optimized version for each language, but a simple algorithm in each language.
You could do it faster in either language, but that's a different benchmark. For this test, it's basically "for a constant low amount of effort, you get x performance across different languages."
He says, "For this test, each program should be implemented in the same way. (For this test, all solutions must use recursion as specified below. For a number of languages other (iterative) techniques may be much faster, but that would make it a different test.)"
Functional languages just happen to be designed with this sort of problem in mind, and therefore do very well.
Blessed are the pessimists, for they have made backups.
Try -O2. I believe O3 includes some optimizations which generally make things run faster, but not always. Aggressive optimization is a chancy thing.
./fibo_c 43 ./fibo_c 43 ./fibo_c 43
./fibo_ml 43
/usr/libexec/gcc/darwin/ppc/3.3/specs /usr/local/lib/ocaml
I did. If you can find a configuration that has the C version running as fast as the java version, post it (and explain it if you can...but grabbing an old version of java doesn't count).
Here's what I got (of course, pay no attention to the real time, I was doing other stuff with the machine at the time):
dustin2wti:/tmp/so 509% gcc -O3 -o fibo_c fibo.c
0.020u 0.070s 0:01.49 6.0% 0+0k 27+11io 0pf+0w
dustin2wti:/tmp/so 510%
701408733
31.470u 0.090s 0:33.50 94.2% 0+0k 0+0io 0pf+0w
dustin2wti:/tmp/so 511% gcc -O2 -o fibo_c fibo.c
0.060u 0.060s 0:00.17 70.5% 0+0k 0+10io 0pf+0w
dustin2wti:/tmp/so 512%
701408733
31.670u 0.020s 0:32.43 97.7% 0+0k 0+1io 0pf+0w
dustin2wti:/tmp/so 513% gcc -O1 -o fibo_c fibo.c
0.040u 0.050s 0:00.17 52.9% 0+0k 0+6io 0pf+0w
dustin2wti:/tmp/so 514%
701408733
31.100u 0.040s 0:35.71 87.2% 0+0k 0+0io 0pf+0w
dustin2wti:/tmp/so 515% ocamlopt -o fibo_ml fibo.ml
0.120u 0.080s 0:00.49 40.8% 0+0k 4+8io 0pf+0w
dustin2wti:/tmp/so 516%
701408733
22.910u 0.060s 0:57.17 40.1% 0+0k 0+0io 0pf+0w
dustin2wti:/tmp/so 517% javac fibo.java
0.590u 0.200s 0:03.84 20.5% 0+0k 3+10io 0pf+0w
dustin2wti:/tmp/so 518% java fibo 43
701408733
23.950u 0.200s 0:38.74 62.3% 0+0k 0+2io 0pf+0w
dustin2wti:/tmp/so 519% gcc -v
Reading specs from
Thread model: posix
gcc version 3.3 20030304 (Apple Computer, Inc. build 1640)
0.000u 0.010s 0:00.02 50.0% 0+0k 0+0io 0pf+0w
dustin2wti:/tmp/so 520% ocamlopt -v
The Objective Caml native-code compiler, version 3.07+2
Standard library directory:
0.040u 0.020s 0:00.07 85.7% 0+0k 0+0io 0pf+0w
dustin2wti:/tmp/so 521% java -version
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-117.1)
Java HotSpot(TM) Client VM (build 1.4.2-34, mixed mode)
0.100u 0.070s 0:00.24 70.8% 0+0k 0+8io 0pf+0w
-- The world is watching America, and America is watching TV.
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
I work at the company that actually produces and writes the test (ETS) and there hasnt been a big hoopla about it...yet. I guess well have to see if everyone complely screwed it up or not.
On a related note,its a shame that its java. Java: the most useless language ever.
Perhaps if you had scored decent on the test it would have been less time between high school and cs degree....
Those who scored a perfect score on the AB Exam are given credit for several courses( about 9 hr in a quarter school)
Who cares if you can describe a quicksort algorythm if you can't implement it? Show me a job where you're gonna have to do that!
For what it's worth, the extent of how "high" a language is with respect to another is not a matter of language features, IMHO. It's a matter of what the compiler is doing for you that you don't have to, or could not otherwise do as efficiently, for yourself.
Anything you can implement in C++, you can do in C. Polymorphism, exceptions, and virtual functions: all of these are implementable in C -- with some hassle. But here, the C++ compiler just takes care of it. So what is the C++ compiler doing for you?
Classes are simply structures. Classes with virtual functions are simply structures where the first member is a pointer to a v-table. A v-table is structure containing function pointers. In C, you would have to declare and implement each of these items. C++ quietly does that for you. C++ also calls your initializers and finalizers for you, which is nice, but it doesn't check to make sure you actually initialized everything.
Exception handling is mostly the maintenance of a linked-list of structures, some gotos, and some long-jumps. Some compilers go a bit further with this which is why C++ exception handling can be more efficient. C++ can pushing and pop the exception handling stack in optimized assembly whereas the C program has to do it manually.
After that, you are pretty much on your own. Nothing is automatically initialized for you. No builtin string class. No builtin bounds checking. No builtin hash tables. No builtin anything, really.
As for C++ templates, I would consider that a "higher" level than the basic new/delete, try/catch/throw mechanism mentioned above, but it's really a separate part of the language. I know C++ programmers who never touch templates. I love templates, but I consider the feature to be more of a sophisticated macro preprocessor than a different mode of the compiler. In the end, no new assembly language optimizations are performed than are otherwise available in C++.
-Hope
So if you don't mind, I'd greatly appreciate an example of references making your life easier with templates.
Tia,
The Raven
Somewhere you will need to declare and implement:
This single overload allows the map to use this class as the key for sorting purposes. That's very powerful voodoo. Since copies of the key and value are made, you should also implement copy constructors for both mykey and myvalue which again take references. If you don't, you get whatever the compiler gives you which might not be what you want.Without these items, you cannot fully utilize the map template. At most you would be limited to having basic types like integers and pointers for the keys and values. Sometimes that's enough, often times it's not.
A sample is provided. The ECODE tag screws up the indentation, so it's not as clean as it could be.Results in:-Hope
Vim?
I took the A test, I dont feel I did that bad on the multiple choice, but the code part I felt I aced it.
http://www.backstab.net
You're wrong. Quick test:Output: fooba
i.e. string length of 5
You probably got confused over 0-indexing. I can only guess that you're a novice programmer because the Java API is excellent, possibly the best of any language (though other valid criticisms can be made about the language).
I teach CS in high school, and C++ and Java require a lot of handwaving and "Pay no attention to the #include (or public static void main() ) behind the curtain!" Write yourself a little "Hello, World" in C++, Java, and in Python. Which is shorter, meaning, which has fewer opportunities for simple errors? More comprehensible? Has less to explain about it?
Python is more versatile than Java. Want to explore the procedural world of hoary computer languages from the past? Python is procedural. Want to build a program using object oriented pardigms? Python is an OO language. Want to use bizarre (to me, at least) functional programming paradigms? Python supports that, too. A quick one-off script? Python. Fake-out simple GUIs? Python and Tkinter, or PyGTK, or PyQt (what an opportunity missed for QtPy!)or wxPython, or even Swing and AWT with Jython! CGI programming? Python. Even without a do...until() construct, you can program simply and easily, exploring all the important themes of a CS curriculum, with immediate feedback from the interpreter, without the compile step Java requires. Python runs on many typical desktop machines, even the modest P-150 laptop this humble teacher's salary affords (OK, it's really my wife who only lets me afford my modest laptop) Java doesn't run on it well, but Python runs fast enough on any machine my student's are likely to have at home, from the latest AlienWare to a donated Garage-a-tronic. Next year, I'll be using Python first, then migrate to Java to prepare for the AP exam, once they have their sea legs (Get it "C" legs?!? I slay me)
I totally took that exam and was totally not ready for it. I'm in IB, this "rigorous" high school program for anal retentives and we have an elective course called Computer Science. I'm in the first Java class they've had. We totally blew off the AP and concentrated on IB Exams. The AP just completely objectifies programming. I know I'm only a beginner, but programming is an art, is it not? The best part is the free-response where you compose your own programs and make the graders eyes roll, but some of it is pretty hokey, like more comments than programming, and using retarded object programming.
Agreed, which is why they only allow certain API calls. But my point is that memorizing the capitalization of this array access function, or the specific name of this method, is not CS. It's figuring things out. Giving the coder references allows them to spend more time problem solving, and less memorizing crap. They wouldn't ask for a recursive sorting algorithm; instead, they ask for a solution to a "practical" problem.
It's too long to explain here, but google for "Marine Biology Case Study" to see what I mean. They did it in C++ originally, but (I believe) it was also used in the Java exam.