

The Toughest Programming Question for High School Students on This Year's CS Exam: Arrays 27
America's nonprofit College Board lets high school students take college-level classes — including a computer programming course that culminates with a 90-minute test. But students did better on questions about If-Then statements than they did on questions about arrays, according to the head of the program. Long-time Slashdot reader theodp explains:
Students exhibited "strong performance on primitive types, Boolean expressions, and If statements; 44% of students earned 7-8 of these 8 points," says program head Trevor Packard. But students were challenged by "questions on Arrays, ArrayLists, and 2D Arrays; 17% of students earned 11-12 of these 12 points."
"The most challenging AP Computer Science A free-response question was #4, the 2D array number puzzle; 19% of students earned 8-9 of the 9 points possible."
You can see that question here. ("You will write the constructor and one method of the SumOrSameGame class... Array elements are initialized with random integers between 1 and 9, inclusive, each with an equal chance of being assigned to each element of puzzle...") Although to be fair, it was the last question on the test — appearing on page 16 — so maybe some students just didn't get to it.
theodp shares a sample Java solution and one in Excel VBA solution (which includes a visual presentation).
There's tests in 38 subjects — but CS and Statistics are the subjects where the highest number of students earned the test's lowest-possible score (1 out of 5). That end of the graph also includes notoriously difficult subjects like Latin, Japanese Language, and Physics.
There's also a table showing scores for the last 23 years, with fewer than 67% of students achieving a passing grade (3+) for the first 11 years. But in 2013 and 2017, more than 67% of students achieved that passsing grade, and the percentage has stayed above that line ever since (except for 2021), vascillating between 67% and 70.4%.
2018: 67.8%
2019: 69.6%
2020: 70.4%
2021: 65.1%
2022: 67.6%
2023: 68.0%
2024: 67.2%
2025: 67.0%
"The most challenging AP Computer Science A free-response question was #4, the 2D array number puzzle; 19% of students earned 8-9 of the 9 points possible."
You can see that question here. ("You will write the constructor and one method of the SumOrSameGame class... Array elements are initialized with random integers between 1 and 9, inclusive, each with an equal chance of being assigned to each element of puzzle...") Although to be fair, it was the last question on the test — appearing on page 16 — so maybe some students just didn't get to it.
theodp shares a sample Java solution and one in Excel VBA solution (which includes a visual presentation).
There's tests in 38 subjects — but CS and Statistics are the subjects where the highest number of students earned the test's lowest-possible score (1 out of 5). That end of the graph also includes notoriously difficult subjects like Latin, Japanese Language, and Physics.
There's also a table showing scores for the last 23 years, with fewer than 67% of students achieving a passing grade (3+) for the first 11 years. But in 2013 and 2017, more than 67% of students achieved that passsing grade, and the percentage has stayed above that line ever since (except for 2021), vascillating between 67% and 70.4%.
2018: 67.8%
2019: 69.6%
2020: 70.4%
2021: 65.1%
2022: 67.6%
2023: 68.0%
2024: 67.2%
2025: 67.0%
Java (Score:1)
Interesting that they have the kids write the answers for this exam using Java.
I can see a plus side ("universal" implementation) and a really big negative (Oracle).
I was in school pre-computer age so there was no such thing at that time, but didn't the kids learn Pascal in school some years back?
I suppose any language will do, more-or-less, since they'll all show you functions and function calls, arrays, variable types and data handling.
Re: (Score:2)
Re: (Score:2)
It's too hard. As such, it scares too many students away. The schools want that student loan money, so they don't want to scare students away, so they water things down as much as possible.
I suspect that all the hype around AI replacing programmers is scaring students away too, so making the ones who are interested prove themselves with C/C++ would be devastating to enrollment.
Re: (Score:2)
C is actually easier than Java, though doing anything complex is harder.
A C++ subset doesn't have to be any harder than Java, and can be at least as capable. (The problem would be documenting it...and for students, learning to use only the subset.)
Re: (Score:3)
I can see a plus side ("universal" implementation) and a really big negative (Oracle).
Nowadays you don't need anything Oracle to build and deploy in Java so you can take that one off your list.
Eventually need a language with pointers (Score:2)
I suppose any language will do, more-or-less, since they'll all show you functions and function calls, arrays, variable types and data handling.
Technically, a language that supports pointers is very helpful. You can get by without pointers for a little while, even data structures with a little hand waving. But in the computer architecture class understanding memory, variable, arrays, etc pretty much requires a couple of aha moments where a language with pointers can be useful. Details covered in a different post.
Note, this does not mean you have to use a language with pointers going forward. Just that getting past the aha moments could really us
Re: (Score:2)
Pointers aren't required for most purposes. They're often just an optimization, frequently a questionable optimization. It's true that C pretty much requires pointers, but in C++ references can generally be substituted with greater clarity. Pointers are almost never used in Java (are they ever?), and certainly not in Python. Or many other languages I could name. (Yeah, they still exist "under the hood", but that's not the point of an exam of early or intermediate programming skill.) For that matter c
Re: (Score:2)
The exam and curriculum were redesigned in 2004 and haven't changed much since In 2004 it made sense to do java.
In the past they have used other languages in the past. According to wikipedia: pascal from 84 to 99, c++ from 99 to 04 and java since.
Ambiguity? (Score:2)
On the surface that hardest question (matrices, question 4) doesn't seem particularly hard. However... I do spot places where the desired result seems uncertain. Do you exit the analysis as soon as the puzzle is shown to not be solved, or do you process all the cells regardless? A small point... but there has to be a reason why less than 1/5 got full marks.
Re: (Score:2)
The way I read it, they didn't need to write the code to solve the actual game, they just needed to write a constructor and a method that, given one cell and it's value, search the array from the row specified to the end for a second value that either is equal to the first or sums to 10 with the first. That ought to have been easy for anyone who was paying attention in class and was actually doing the assignments instead of submitting chatgpt's responses to their homework.
English (Score:2)
>"There's tests in 38 subjects"
But apparently not including English. Next up, English primary school exam!
"There's tests" = "There is tests". "Is" is singular, not plural.
Correct answer is "There are tests" or "There're tests."
Re: (Score:3)
>"There're is annoying to pronounce, so "there's" is often used in spoken language.
And yet "there are" is not annoying to pronounce and easy to write. So using the correct words isn't difficult.
>"That usage is moving into written language."
And spoken, as well. But that doesn't make it correct. It just looks/sounds completely uneducated and jarring.
"There", "their", and "they're" are confusing to many (for some odd reason). Just because we see them used incorrectly frequently doesn't legitimize usi
Re: (Score:2)
Actually, it does. English does not have a regulatory body. It is an evolving language. So, popular use is precisely what determines meaning and correctness.
This is extremely frustrating, and hard to accept, for certain kinds of people. But it remains a staunch reality.
Re: (Score:2)
>"Actually, it does.[...] So, popular use is precisely what determines meaning and correctness."
Well, tell that to your English teacher and see if it manages to get you a passing grade when you say/write very popular things such as: "I is going to the store", "They had went there", "You and me should get together", "I seen them do it", "Where did you put it at."
>"This is extremely frustrating, and hard to accept, for certain kinds of people"
I guess I am one of those people :)
Re: (Score:2)
Re: (Score:2)
It might be a reality, but I don't think "staunch" is the right term for it.
Re: (Score:1)
"There're" ??
Your grammar Nazi license has hereby been revoked.
Re: (Score:2)
>" "There're" ??
That is a valid contraction. But it is strange. Much easier to just say/write "there are."
>"Your grammar Nazi license has hereby been revoked."
I actually thought it was a funny/witty posting, seeing the construct and subject (exams, education, AP, subjects). Sorry you think it is "grammar Nazi-ism", it wasn't meant to be that way. I do have better things to do than go after incorrect grammar- that would be a futile, full-time job.
Re: (Score:2)
Re: (Score:2)
Then there was the word "vascillating" at the end. An odd combination of vacillating and oscillating, I guess.
No surprise here ... (Score:2)
There are two big relevant aha moments here. And surprisingly one can possibly get through data structures without them.
The first is that memory is just a series of addressable words, that can hold an unsigned integer in the range 0-N. N subject to the bit size of the word. And that these unsigned integers can be INTERPRETED as signed integers, floating point values, colors, a CPU
Only last 23 years? (Score:2)
What about results from 1966 ?
chemistry
Calculus
Physics
good. (Score:2)
You should basically never use a generic ArrayLists or multidimensional arrays anyway. The test authors should feel ashamed to even ask somebody to allocate an ArrayList and return it from a function.