First Java AP Computer Science Exam Complete 812
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?
Testing times (Score:5, Funny)
Re:Testing times (Score:5, Funny)
(On a related note, an exam based on AppleScript would take about a week...)
Re:Testing times (Score:5, Informative)
My impression of the exam (Score:5, Funny)
Re:My impression of the exam (Score:2, Informative)
Good lord, people...
Re:My impression of the exam (Score:4, Funny)
Good lord, people...
Re:My impression of the exam (Score:3, Informative)
Language shouldn't matter! (Score:5, Insightful)
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.
Re:Language shouldn't matter! (Score:5, Funny)
it keeps your hash off the floor.
Re:Language shouldn't matter! (Score:4, Funny)
Re:Language shouldn't matter! (Score:4, Informative)
Needless to say, at the time, I was completely inept when it came to programming and thoroughly failed the exam. A few years later and I'm fairly close to graduating with my CS degree. Those exams are shit in my opinion.
Re:Language shouldn't matter! (Score:2, Interesting)
I would imagine that creators of AP tests are trying to test what a student entering university would test out of. At my alma matter, the first class was basically coding, then data structures, then algorithms and hashing, and so forth.
The language seems unimportant to us because it is unimportant to us, but with no knowledge of any languages, how is a student to learn the rest?
Re:Language shouldn't matter! (Score:5, Insightful)
While writing code is somewhat less effective than perhaps discussing principles and theory, you certainly need a language as a base to "measure performance" in a test like this. Not that it isn't without its own set of problems, but it is a necessary evil. You need to have a base-line to measure objectively, something that is hard to nail down using just pseudo-code.
Re:Language shouldn't matter! (Score:3, Insightful)
Yes, but those aren't Computer Science problems, and they shouldn't be (and aren't) on this test. At best, they're problems suited for a prep-course for a technical certification. Specifically, the AP exam (as I remember it) deals with control flow, logic and data structures. Applying those principles re
Re:Language shouldn't matter! (Score:3, Funny)
Re:Language shouldn't matter! (Score:3, Funny)
Re:Language shouldn't matter! (Score:2)
Re:Language shouldn't matter! (Score:4, Insightful)
Re:Language shouldn't matter! (Score:5, Insightful)
OS Design? Fascinating, but ultimately irrelevant for 99% of coders. Implementing your own hashtables? Useful to gain an insight into how they work, but virtually any development platform people work in except raw C these days will provide highly tuned and optimized hashtable implementations. If anything you shouldn't roll your own, as it'll make your code less readable, more bloated and probably slower.
But it seems looking at the course material that important topics for writing real world software is simply not taught. Where are the lectures on writing internationalized code (think character encodings, flippable UI design etc). Where are the lectures on writing code with low startup overhead? What about teaching people the merits of various toolkits? Accessibility? Version control theory? (to be fair I think this is talked about at some point on my course, but I know some that don't)
It's possible for a student to come out of a CompSci course and be unable to explain why a containment-based widget toolkit is better than a positional one, yet can talk about VM swapping algorithms and implementing the fastest hashtable probing all day. Which would you rather employ?
Re:Language shouldn't matter! (Score:5, Informative)
The one who understands the difference between computer science and software engineering?
Would you hire a physicist to design a bridge? It would be insane.
Quit bitching about CS and go to the field you should be studying: engineering. Any kind of engineering. Good engineering practices are the same across the different types of engineering. But to expect computer science students to learn these practices is ludicrous. That isn't the point of CS, it shouldn't be the point, and I hope to God it never becomes the point.
Re:Language shouldn't matter! (Score:5, Insightful)
No offense, but people like you are the reason I'm glad I didn't major in CS. If you can't see the value of OS design and learning how hash tables work, stop, do not pass go, do not collect your diploma, it's utterly wasted on you. I'm amazed at how many CS graduates I've spoken with that have never heard the name Donald Knuth or at least borrowed a copy of The Art of Computer Programming. The fact that Computer Science is a MATHEMATICAL SCIENCE seems to elude most people who'd rather worry about how good of programmers they are than about knowing how the hell things work. None of the coding I learned came from a school, and frankly, I'm quite happy about that, as too many schools are all about the "latest and greatest" technology. The AP exam is a PERFECT example. Not sure if This Fool [duke.edu] still has anything to do with AP CS, but his AP CS book was probably the worst computer related book I've ever read (littered with errors, for starters).
It seems no one cares how things work. The "black box" analogy was emphasized in AP Computer Science from Day 1 when I took it. The worst possible thing you can be telling budding Computer Scientists is that we don't care how it works, it just does. That's fine when you've proven your ability to perform and are working in an environment where it's literally impossible to know how everything works. It's not acceptable, however, when you know nothing and the sole purpose of a course is to teach you. OK, I've gotten myself quite angry over this post, so I'm ending it now.
Re:Language shouldn't matter! (Score:3, Insightful)
Right. Most OS Design classes teach things like the difference between a process and a thread. Certianly no one needs to know that!
Re:Language shouldn't matter! (Score:5, Insightful)
I would wager, however, that the fundamentals they teach (good algorithm design, how OS's and programs work on a very low level, data structures, human-computer interaction) will give you the base to figure out these "day to day" things, whereas the day to day things will not help you with fundamentals. People with a rigorous computer science background learn to appreciate things like structured programming, extensibility, flexibility, planning, etc. These are what make a good software engineer for decades, as languages, platforms, etc change.
International code is an interesting example. Everything you've mentioned is API-specific, so why should they waste their time teaching me that API when it will be dead in a few years? I can learn that from reference docs. However, they should remind me not to hard code numbers, values, formats, strings, etc, just as a good fundamental programming practice. If I do *that*, then I'm already prepared for international coding.
So to answer your question, I'd much rather employ the person who knows how to think about all aspects of a software project, plan it up front, know how it's going to interact with its environment (and internally, with itself), and I'll buy a book for them on specific API's.
Re:Language shouldn't matter! (Score:5, Insightful)
When I see a university course entitled "GTK+ versus Qt", I'll quit programming entirely and move to some remote South Pacific island.
In other words, keep your fscking holy wars to yourself. Students take classes in order to learn valuable knowledge and skill. NOT to be indoctrinated that the Qt license is going to kill commercial development or that the OO of GTK+ is an ugly hack or whatever else the current FUD from either side is.
Re:Language shouldn't matter! (Score:2, Insightful)
Re:Language shouldn't matter! (Score:2)
Re:Language shouldn't matter! (Score:4, Informative)
Re:Language shouldn't matter! (Score:5, Insightful)
Make them describe concepts as opposed to just programming. Or in an algorithms/data structures class I took (very hard question), throw them an N^3 algorithm and a bunch of functoins they can us e (and the complexity for each) and make them improve the algorithm to be subquadratic and use at most quadratic space. Make them assess tradeoffs, explain concepts and demonstrate knowledge of WHY what they're doing is the best way/a good way instead of just knowing that it works.
Re:Language shouldn't matter! (Score:3, Insightful)
I never took this test (don't even know if it would've been available back in the late '80s), but I'd assume that it's designed to be a substitute for courses such as CSC 135 [unlv.edu]. Data structures get brought up in the next couple of classes (136 and 269),
Java? (Score:2, Interesting)
easy (Score:5, Informative)
Re:easy (Score:5, Insightful)
And, as mentioned elsewhere in the thread probably, the AP CS exam is not really about concepts. Yes, they taught me a little bit of OOP design, but in the end it's based mostly on algorithms and how to use the language. I agree that this should not be the emphasis, but for better or worse, it's a "how to program" class, not an introductory CS class per se.
Rules (Score:5, Funny)
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)
Re:Rules (Score:5, Informative)
You want the tests to be fair, and that's what the College Board wants. They make a LOT of money off of tests being fair.
Re:Rules (Score:5, Insightful)
Which is a pointless endeavor, since people will share the test answers. Ever notice what happened the last time you told a teenager not to do something? Did they do what you told them? Wake up, man. Sitting around "hoping" that the kids won't talk is fucking delusional.
The playing field should be level.
Wow. If they manage to pull off a "level" playing field, they'll be the first to ever do so with a test like this. Face it, all tests are biased, and having students discussing the answers is just another form of bias. You plan for this, and deal with it.
Students who tried to cheat this way HAVE had legal action persued against them
First, if you consider the free discussion of test questions among students outside of the test-taking environment to be cheating, you have a truly draconian take on things. Second, unless the kids signed some kind of legally binding NDA, there is no law which could allow the College Board to prosecute them for any offense at all -- haven't you heard of the fucking First Amendment? Copyright can't stop them, since it is a fact that the answer to question #115 is letter D, and you cannot copyright a fact. And aren't some of these kids under 18 anyway? An NDA can't apply to them, since any contract they enter into is null and void.
Basically the only recourse they have again people discussing the test is arbitrarily making their score zero. This is stupid, it denies reality, and is generally evil.
Re:Rules (Score:5, Informative)
The problem with this reasoning is that these are "invented facts" as opposed to "discovered facts." It's a piddling difference, but "invented facts" are not covered by the 17 U.S.C. 102(b) [cornell.edu] bar. Check out CASTLE ROCK ENTERTAINMENT, INC. v. CAROL PUBLISHING GROUP, 150 F.3d 132 (2nd Cir. 1998) [cornell.edu] where a court found copyright infringement in a compilation of trivia about Seinfeld. The argument was made that it was nothing but a compilation of uncopyrightable facts about the series, but the court said that, because the facts were created by the seinfeld writers, they were protected.
Re:Rules (Score:3, Insightful)
Having just come from taking 2 ap tests in th
Re:Rules (Score:4, Informative)
1) The test has to start in a 30 minute time frame so that the East Coast is still in the testing room when the West Coast goes in (no emailing/ IMing/ text messaging answers across timezones).
2) Multiple choice answers are released like 5 to 7 years after the test was administered. Free Response questions are given to the teachers (tests are administered at your school) the day of the exam as they aren't reused.
3) What can happen to people who don't play by their rules? Try getting into college without taking the SATs (same people). None of your APs will count. Maybe you'll be sued, I don't know, but I DO know that your school's right to administer ANY AP EVER can and has been revoked.
So as much as you'd like to think "that's crap" it isn't-- at least not legally.
Re:Rules (Score:3, Informative)
Contracts with minors are certainly not null and void; generally, they are both voidable and enforceable by the minor. This is why you don't want to enter into contracts with minors -- not because it's impossible to enter into a contract with them, but because the minor has all the power with respect to enforcing the contract.
That said, the College Board doesn't really have to worry about whethe
Re:Rules (Score:5, Insightful)
how can you compare scores? (Score:2, Insightful)
All around.. (Score:2, Informative)
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.
One year? (Score:5, Informative)
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?
It sucked (Score:5, Funny)
Re:It sucked (Score:3, Interesting)
Re:It sucked (Score:4, Insightful)
Language lengths (Score:5, Informative)
Java has become a standard in many schools (Score:5, Interesting)
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.
Comment removed (Score:3, Insightful)
Re:I took it in Pascal way back when (Score:3, Insightful)
A person who learns to code first in C learns a few fairly important things a Java programmer never needs to think about, and also some things that will make learning Java much easier. A C-experienced person going into Java understands what pointers are and how the use of pointers affects how Java works. They understand memory allocation and the need to deallocate the mem
Surprised I'm (Score:2, Funny)
I say great! (Score:5, Interesting)
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.
Re:I say great! (Score:3, Insightful)
It's a simple language (relative of course) and allows teachers to teach good concepts, such as, recursion, algorithms, and Object-oriented program.
Honestly, if colleges were turning out graduates only with Java experience THEN you'd be right, but from my understanding, java is only freshman and sophmore level in college.
Don't worry, i'm coming for your job anyways
Re:I say great! (Score:5, Insightful)
You Sir, and the people who think like you, are the reason I still have a great job.
There is more about computing in this world than PCs and Macs. What do you think runs in your microwave oven? or your fancy watch? or your car's engine computer?
Re:I say great! (Score:3)
You Missed One Detail. (Score:5, Interesting)
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
Re:You Missed One Detail. (Score:4, Insightful)
You can write C code and practically envision the asm that it will compile into.
(As the grandparent poster put it, C is "portable assembly".)
Same with C++, but a little less so.
I don't think it's wrong to classify C as a low-level language, especially when comparing it to Java and C#.
CLEP and Test Out (Score:4, Insightful)
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 [wgu.edu], 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.
Re:CLEP and Test Out (Score:2)
Re:CLEP and Test Out (Score:3, Informative)
Pascal (Score:2)
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.
-JemShould we be able to talk? (Score:5, Informative)
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
I took the last Pascal exam... (Score:5, Insightful)
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.
Java at Uni (Score:2)
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 lang
A Great Idea... (Score:5, Funny)
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.
C++ and Pascal (Score:2)
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
Easy Exam (Score:2)
As for the debates on whether this qualifies as "computer science", I think it's a moot point. Kids in e
Bah (Score:2)
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
polyglots only? (Score:3, Interesting)
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?
C++/Java (Score:5, Insightful)
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).
Re:C++/Java (Score:3, Informative)
Re:C++/Java (Score:3, Interesting)
1) I never said anything about the "precious AP libraries" - I don't know anyone who likes them and/or misses them.
2) You are REQUIRED to use the AP libraries on the exam.
I'm talking about the problem of having an AP-specific library on the exam and teaching theory through Java in the classroom. I'm not talking about using the AP C++ library in class.
C++ ? good god ... (Score:3, Interesting)
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.
That's Funny... (Score:5, Informative)
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
I was a taker (Score:5, Interesting)
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 [collegeboard.com] 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.
C++ test (Score:3, Insightful)
-Benjamin Meyer
I took the C++ AP test out of spite (Score:5, Funny)
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.
Calc is a prerequisite for live (Score:4, Insightful)
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.
not that it really matters (Score:3, Informative)
Huge disconnect (Score:4, Insightful)
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.)
Re:Huge disconnect (Score:4, Insightful)
I'm talking about the other 999. You do harm to these people's professional computer programming careers by teaching them Java before you teach them C++.
You either get it, or you don't. It's just that simple.
So, you've never learned anything in school, and you're making the blanket declaration that school is useless for all other people as well? I think that's the load of hog wash.
Are Pointers malloc() and free() Computer Science? (Score:5, Interesting)
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?
Re:Are Pointers malloc() and free() Computer Scien (Score:5, Insightful)
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?
Programming !=, er, isn't Computer Science (Score:5, Insightful)
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...
Legally, I'm not supposed to say anything, but... (Score:3, Informative)
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.
Much more than 10 years (Score:3, Interesting)
I took the Computer Science AP test in Pascal in 1985. I doubt that was the first year it was offered (although I was the first from my high school ever to take it). So Pascal has been used in this test for much longer than 10 years.
While I agree that those pursuing a CS degree should be more interested in a theory-based test rather than a programming-based one, it is useful for those going into other technical fields who need some programming experience that they can apply.
Some sample questions (Score:3, Funny)
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
AP Tests (Score:3, Interesting)
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 :)
Re:Only 1 year? (Score:2)
Re:Salute! (Score:5, Informative)
Re:Since when... (Score:5, Funny)
Since when did
Oh, since, well let me think...SINCE FOREVER!
Re:Since when... (Score:3, Funny)
shouldn't that have been:
Oh, since, well let me think...SINCE 4 EVAR!!!
Re:Language of AP Test (Score:2)
Re:Good for them! (Score:2, Insightful)
Re:Good for them! (Score:3, Insightful)
Anyway, the students are not being tested on their knowledge of Java. They're being tested on actual computer scientific concepts, such as the object-oriented design model, inheritance and polymorphism included, as w
Re:Good for them! (Score:3, Interesting)
Re:What about building a foundation? (Score:3, Insightful)
Similar to taking Java and going to C++ then assembler. Quite frankly I think the class was a lot better as a result because it took familiar concepts, explained them in better detail which lead to questions (ok, so how does HTTP gua
Re:What about building a foundation? (Score:4, Interesting)
Re:AP credits don't mean anything (Score:3, Insightful)
Or $30k if I decide to get a MS (which would take four years, instead of the usual five at which point my scholarships would dry up).
Re:too easy (Score:3, Insightful)
Even when you take a "challenging" AP test, like Physics C (calculus-based), it's graded on such a curve that you can get half of them wrong and still get a 5.