Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Education Programming

AP CS Test Takers and Pass Rates Up, Half of Kids Don't Get Sparse Arrays At All 128

theodp writes: Each June, the College Board tweets out teasers of the fuller breakouts of its Advanced Placement (AP) test results, which aren't made available until the fall. So, here's a roundup of this year's AP Computer Science tweetstorm: 1. "Wow — massive gains in AP Computer Science participation (25% growth) AND scores this year; big increase in % of students earning 4s & 5s!" 2. "2015 AP Computer Science scores: 5: 24.4%; 4: 24.6%; 3: 15.3%; 2: 7.1%; 1: 28.6%." [3 or above is passing] 3."Count them: a whopping 66 AP Computer Science students out of 50,000 worldwide earned all 80 pts possible on this year's exam." 4. "Remember that AP exam standards are equated from year to year, so when scores go up, it's a direct indication of increased student mastery." 5. "Many AP Computer Science students did very well on Q1 (2D array processing–diverse array); >20% earned all 9/9 pts" [2015 AP CS A Free-Response Questions] 6. "The major gap in this year's AP Computer Sci classrooms seems to be array list processing; Q3 (sparse array): 47% of students got 0/9 pts."
This discussion has been archived. No new comments can be posted.

AP CS Test Takers and Pass Rates Up, Half of Kids Don't Get Sparse Arrays At All

Comments Filter:
  • by Anonymous Coward on Monday June 29, 2015 @07:23AM (#50010467)

    What a confusing summary. There are meaningless links that are just numbers. The quotes following the numbers have no context and make no sense. Formatting what appears to be a list into one single paragraph makes it awkward to decipher. The linked-to graph image is missing many labels. The lack of other details doesn't help, either. What the fuck is this submission even supposed to be about?!

    • by Anonymous Coward

      Ask an editor, if you can find one around here. It all seems to be about flashy front-end redesign instead of content now.

      Oh, and BTW you Slashdot 'designers' -- is it possible for you to fix your CSS so the story icons don't sit on top of the fucking headline when my browser window isn't full-screen? Kthxbye.

      • Oh, and BTW you Slashdot 'designers' -- is it possible for you to fix your CSS so the story icons don't sit on top of the fucking headline when my browser window isn't full-screen? Kthxbye.

        Dear User,

        No. We have a firm policy geared toward fucking shit up and we're not going to stop just because you asked us too.

        Signed,
        The SlashDice Staff
    • Re: (Score:2, Informative)

      by Anonymous Coward
      Kids are passing the AP CS test with higher scores, but nearly 50% of them cannot understand concepts that involve a slight amount of thinking. In other words, it's a shitty test or most taking it are stupid.
      • Alternatively, nearly half the students taking the test are far enough along the autism spectrum that they could not answer the questions about implementing getter methods when faced with a class containing private member variables with no methods to set them.
        • I'm on the autism spectrum, and I see "private member variables with no setters" as more than likely a class representing an immutable value, such as a decimal floating point value, a big integer value, a date, a string, or whatever. An immutable class sets its fields in its constructors, and then various getters return various transformations of these fields.

          Then I read the article, and I was right: sparse array entries are immutable. But the real WTF is that sparse array entries are stored in a List, not

          • Sparse array entries, in general, are not necessarily immutable, although they may be so in this case. Most spreadsheets are implemented as sparse arrays, for example. But your point about the benefit of a map is well made.
            • I should have read the linked questions before replying...

              Stupid, stupid, STUPID! Why have numRows and numCols in a sparse array? Things with unnecessary, arbitrary bounds annoy me. My implementation of Conway's Game of Life runs on a sparse array precisely because that allows the world to stretch arbitrarily in any direction a glider goes, limited only by the capacity of the bignum library and the total store available to the program.

              And this is how we teach computer science?

              Sigh.

              • by tlhIngan ( 30335 )

                Stupid, stupid, STUPID! Why have numRows and numCols in a sparse array? Things with unnecessary, arbitrary bounds annoy me. My implementation of Conway's Game of Life runs on a sparse array precisely because that allows the world to stretch arbitrarily in any direction a glider goes, limited only by the capacity of the bignum library and the total store available to the program.

                Easy. How do you test that you're handling boundaries correctly?

                I mean, yeah, your bignum goes from negative infinity to positive i

            • by tepples ( 727027 )

              Sparse array entries, in general, are not necessarily immutable, although they may be so in this case.

              The interface in the PDF describes a mutable sparse array with immutable entries. To assign a new value, you'd delete the entry and then add a new one.

          • I teach APCS, and Maps are not a part of the tested curriculum. Maps in college are usually covered in a data structures class, not the intro CS class that APCS is meant to represent.
        • The test says that the class with private members and no setters is intended to be immutable after creation, so that's not a problem. Having a single linked list for the entire grid (rather than a list of lists) is completely insane though. I'd expect a student who actually knew what he or she was doing to be more confused than one that would end up writing code with horrible algorithmic complexity. Looking at the rest of the test, it's not much better. If this is what AP tests look like in the USA, the
      • Kids are passing the AP CS test with higher scores, but nearly 50% of them cannot understand concepts that involve a slight amount of thinking. In other words, it's a shitty test or most taking it are stupid.

        The more kids that pass the AP CS test, the more colleges that accept AP credits lose funding. It stands to reason the test is designed primarily to throw people off the boat and justify having them retake the class, setting them back between 1 and 2 semesters. In reality, in college, they will learn

        • Kids are passing the AP CS test with higher scores, but nearly 50% of them cannot understand concepts that involve a slight amount of thinking. In other words, it's a shitty test or most taking it are stupid.

          The more kids that pass the AP CS test, the more colleges that accept AP credits lose funding. It stands to reason the test is designed primarily to throw people off the boat and justify having them retake the class, setting them back between 1 and 2 semesters. In reality, in college, they will learn exactly the same stuff as in high school with probably worse teachers (or grad students).

          Actually, at least with the AP subject tests in the fields I'm used to dealing with, it's not predatory testing but the sheer lousiness of the AP system. My Gen Chem I class outright treated AP chemistry as a recommended prerequisite--it wasn't a replacement for anything you'd be taking for credit, and regular old high school chemistry was pretty much just as good. (I got through pretty happily without either.)

          Basically, at this point AP courses are designed to have a high number of people taking them and

    • by ceoyoyo ( 59147 ) on Monday June 29, 2015 @08:48AM (#50010971)

      The summary is summarizing a tweet. If releasing results like that in a tweet wasn't dumb enough, summarizing it is.

    • ^^^^^ THIS, times about a billion. Slashdice strikes again.
    • Normally I agree with complaints abut summaries, but this time I found the summary somewhat terse but pretty clear. I guess you were looking for definitions of some of the terms used?

    • by gsslay ( 807818 )

      It would appear that the submitter thinks all that is required to construct an article summary is to string tweets together in a single paragraph.

      It's all just words and numbers, isn't it? No suitable effort or consideration for the communication medium required. Consider yourself lucky it isn't written in emojis.

    • What do you mean, confusing? There's a link to a jpg that has a lot of lines, and some of the lines are clearly higher than other lines so obviously that means something good.
    • Formatting what appears to be a list into one single paragraph makes it awkward to decipher.

      Maybe it's a sparse list.

  • by Culture20 ( 968837 ) on Monday June 29, 2015 @07:28AM (#50010505)
    Duh! I bet it matches up exactly with kids that don't understand pointers and linked lists. Wonder why that might be...
    • by SenatorPerry ( 46227 ) on Monday June 29, 2015 @07:40AM (#50010553)
      Link for the Lazy [wikipedia.org]

      I had never heard of sparse array as a term, but we discussed the concept nearly two decades ago as a normal design process.
      • by abies ( 607076 )

        This might be because in most places you will call them map/dictionaries (int->whatever) if they are single dimensional and sparse _matrices_ when having more dimensions.
        One in the test is sparse matrix. Calling it sparse array requires a bit of mental exercise (by having said array indexed by tuples of (x,y) instead of integers). But this probably comes from concept of 2d arrays, which are neither...

      • by Cassini2 ( 956052 ) on Monday June 29, 2015 @08:39AM (#50010919)

        Sparse arrays is a mathematical abstraction that completely ignores the implementation details. Formally, they are any matrix that has "many" zeros (or null) values. The practical problem is that most useful optimizations around sparse arrays require closely matching implementation details against the problem to be solved. With sparse arrays, implementation details are killers.

        For instance, suppose the standard solution is adopted. The sparse array will be organized as an array of linked lists representing the rows, with each row containing another linked list that contains the individual data values. What happens if you want to do a matrix multiply? A matrix multiply requires a column by row lookup and a row by column lookup. One will be an O(1) lookup, and the other will be a O(n^2) lookup. This makes a full matrix multiply an O(n^5) operation, and memory is the least of everyone's worries.

        To optimize the code, it is necessary to look closely at how the matrix will be built and used. However, as soon as that starts happening, the matrix multiply decomposes into a bunch of specialized matrix operations. At this point, the abstraction starts falling apart.

        For example:
        a) Assume the multiplication involves a diagonal matrix. Then the optimum solution is to store the diagonal matrix as a 1xn matrix, and specialize the matrix code. This was the favoured approach from numerical methods in C and Fortran.
        b) Assume the multiplication involves a tridiagonal matrix. Then the optimum solution is to store the tridiagonal matrix as a 3xn matrix, and specialize the matrix code. Again, see numerical methods in C and Fortran, or just about any good matrix library.
        c) Assume the matrix operation involves a "control-systems" style matrix. One populated row, followed by a diagonal series of rows with one or two elements. The optimum solution is to develop specialized code. For most control systems problems, this matrix never changes.
        d) Control systems often have a compact matrix representation involving a series of matrix multiplies. However, if the matrix multiplies are analysed, they become a much simpler sequence of equations that can often be executed in O(n^2) time instead of the longer O(n^3) time of the matrix multiplies. As such, develop specialized code. Both MatLab and Mathematica have functions where numerical operations can be broken down into there constituent formulas and saved as "C" code.
        e) Assume we really need to frequently multiply a truly sparse array. Then build two sets of linked lists, one organized by row/column and another organized by column/row. Then both the row and column lookups can be done as an O(1) operation. The matrix multiply is a O(n^3) operation.
        f) Just because the inputs to a matrix operation are sparse, doesn't mean the output array is sparse. I'm thinking of Singular Value Decomposition, some matrix multiplies, matrix inverses, matrix pseudo-inverses, and covariance matrices. Also, some matrices that appear in Quantum physics. In this case, matrix operations need to be further specialized to deal with creating non-sparse matrices from sparse-matrices. Additionally, some matrices may need to be rounded to sparse, even though they may be fully populated, like some covariance matrices.

        In the end, sparse matrices are simply a descriptive term for a bunch of application-specific optimizations. Sparse matrices devolve into numerical optimizations that no-one cares about unless they are looking at an application that requires the specific numerical optimization. I'm not surprised high-school CS coders don't "understand" them.

        • Engineer here with a lot of experience with Finite Element Analysis software. Sparse arrays are NOT some amusing construct to see how well you code an obscure problem. FEA is *THE* tool to create a design that is less likely to fail. Programs such as ANSYS are used design just about every single vehicle on the road (cars, trucks, bicycles), airplanes -- the airframe and the engines, locomotives. And FEA is also used to design bridges, buildings, cranes used to build this stuff. The use of sparse matrix algo
        • What happens to your 'standard' linked lists solution when you have ten values scattered over an array which is 1000! (factorial 1000) in each dimension? For most genuinely sparse arrays, a hashmap is a better approximation of an efficient implementation. Of course, there will be corner cases where you want to do something different, but linked lists strike me as an extremely poor solution except in arrays where more than about 10% of cells have data.
          • by Coryoth ( 254751 )

            It all depends on what you want to do with your matrices. Various operations have various costs in different sparse matrix formats. The standard ones are COO or coordinate format: a list of triples (i, j, val); DOK or dictionary of keys format: the hashmap you are thinking of; LIL or list of lists format: a list for each row and a list if pairs (j, val) in each list entry; CSR/CSC or compact sparse row/column: an array of indices where each row starts, an array of column indices and an array of values.

            COO a

    • by LWATCDR ( 28044 )

      For a degree in computer science you need to know sparse arrays.
      As a working programer you will almost never write one. You will use STL or some other library to handle it.

      • In other words you don't need a CS degree to be a programmer.
        • by LWATCDR ( 28044 ) on Monday June 29, 2015 @08:23AM (#50010821) Homepage Journal

          No you don't but their is value in knowing how to write one when you use one.
          It usually means you know better than reinventing the wheel.

        • by Anonymous Coward

          Yes, lack of knowledge does not prevent you from getting a job. But it does prevent you from doing that job well.

        • by jandrese ( 485 )
          No, but you will need the CS degree to be a good programmer. If you know what is going on under the hood you can avoid those O(N^5) operations that make your code inefficient. If you just blindly use whatever looks vaguely correct in the standard library you'll never know why your code is so slow.
      • Re: (Score:2, Insightful)

        by ceoyoyo ( 59147 )

        "Working programmers" don't need degrees in computer science. They need diplomas or certificates in programming.

        Even so, it's not a bad idea to know something about the tools you're using. Perhaps knowing something about how those vertices are stored might help write efficient code for manipulating them?

        • "Working programmers" don't need degrees in computer science. They need diplomas or certificates in programming.

          If there are 90 people with a certificate in programming applying to a position and 10 with a B.Sc. in computer science, which resumes will HR prefer?

          • If there are 90 people with a certificate in programming applying to a position and 10 with a B.Sc. in computer science, which resumes will HR prefer?

            The resumes asking for the lowest wage.

          • The EE, if they have any sense.

          • by ceoyoyo ( 59147 )

            I said need. You might want one because apparently hiring is done by people who don't know anything about the requirements of the jobs they're hiring for.

        • They need diplomas or certificates in programming.

          If they don't understand mathematics or computer systems design then their code will be useless

          • by jc42 ( 318812 )

            They need diplomas or certificates in programming.

            If they don't understand mathematics or computer systems design then their code will be useless

            But note that the question wasn't about understand mathematics or computer systems design; it was about diplomas or certificates in programming. It's fairly well understood that those are orthogonal quantities. ;-)

          • by ceoyoyo ( 59147 )

            Not necessarily. It doesn't take much math to be able to do probably 99% of the programming the world demands today. System design should probably be (and probably is) left to systems architects who have a better understanding of it than the rank and file code monkeys.

            If you want to be a system designer/architect/whatever, you maybe should have a degree in software engineering. If you want to be a code monkey a diploma where they ensure that you can write Java, C, add, subtract and multiply is handy. Co

    • Re: (Score:1, Informative)

      by Anonymous Coward

      Do you think they would've gotten it if the question had called it a database of values instead of a sparse array? There wasn't even a need to know what a sparse array is in advance, as the data structure is fully explained in the question. The actual task only requires a single loop over the linked list, comparing each element to the requested row and column number, returning the value if found and 0 if the element isn't in the list. The second half of question three is just a little bit more difficult, bu

  • That is like the second easiest pointer-driven data structure...

  • Perhaps the kids' teachers taught them the other things and not sparse arrays. It's pretty hard to program something when you have no experience and the only clue you have to program is the title of the data structure.

    • by jeremyp ( 130771 )

      I had a look at the question. It explains exactly what a sparse array is and even tells you how it wants you to implement one (essentially as a linked list). The question involves writing the functions to access elements of the sparse array. Given the details provided, I'd be really disappointed if any programmer familiar with the concept of a linked list failed to complete the exercise satisfactorily.

      • I just had a look as well. The proposed solution is a linked list of linked lists isn't it? Perhaps this is the bit the kids are stumbling over.

  • This mash-up of digit-heavy tweets is a crappy SlashDot summary of a sort we haven't seen before.

    Doesn't Dice pay editors for this kind of stuff?

  • But once I looked it up the solution was completely obvious. The wikipedia entry suggests a linked list, while I was also thinking associative array.

    Now my curiosity is demanding a sample copy of the test that I can take. Beyond not having memorized many of the terms I wonder how I would do after 20+ years of programming.

    With these sort of tests I often worry that it is just Bulimia Learning where you have to memorize esoterica while never learning to actually program. For instance for you C++ wizzards
    • by ceoyoyo ( 59147 )

      Implement it as a k-d tree and see if any of the examiners can follow your solution.

      • Seeing that when I was young and my computer (VIC-20) was crappy, I hand wrote assembly on paper and then inputted it. So in the case where they are looking for Java solutions, give them handwritten bytecode.
    • Just finished 10 questions from a sample test: http://manatee.cc.gt.atl.ga.us/apExam/ [atl.ga.us] and I would rate it as FizzBuzz*2. FizzBuzz would be in the lower half of difficulty.

      If anything I was a bit slow taking it as I was looking for trick questions that weren't there. But I would say that someone who could pass that test would have at least the basic tools to go fourth and program.

      Plus it is in Java which I haven't touched since 2000.
      • by AuMatar ( 183847 )

        Would you really expect more? This test isn't a test for college grads- its a test for high school seniors to get them out of 1-2 semesters of bottom level CS courses, by proving they already know the basics. The point isn't to trick them or to expect them to know everything, its to see if they can save some time/money on intro level topics.

        • I was quite pleased with the level. I actually expected either something very pedantic or something so easy that I would have a little weep.

          If anything the main problem that I have is that I have met CS grads who might not do so well on that exam. I am not saying it is too hard but that the aforementioned CS grads sucked.
  • by Anonymous Coward

    How many years has slashdot been around, and how many years spent arguing about silly little things like this?
    Yes, CS was harder when you were in college. Yes, people were smarter back then too. There are 2 orders of magnitude higher enrollment in Computer Science programs than there was 20 years ago. You're bound to get a lot of people who haven't quite figured out if this is the place for them yet.

    Also, the readability of the summary is approaching zero as well. If I wanted a recap of tweets, I would have

  • Why is the entire test in Java? Not Javascript but actual Java. I mean, at least it's not .NET or C# (aka, platform specific).

    • Why not Java? They have to pick some language, and Java has a wide array of IDE's, many of which will run just great on whatever ancient Windows boxen a school can scrape up, an extensive textbook infrastructure, a decent number of people that know it, and the ability to implement (in a straightforward manner) most of the concepts you need to teach in a high-school CS class. It has it's quirks, but I'd prefer it to C++.

      Yes, a full CS curriculum uses several languages in order to teach different concepts,

      • When I took it in 2002, it was C++ at the time. I think they switched to Java a year or two later.
        • When I took it in 2002, it was C++ at the time. I think they switched to Java a year or two later.

          You're close. I took the AP test the last year it was C++. I was also taking Java with the same instructor, same room, the next period, so I kind of had the best and worst of both worlds. But the instructor was top notch and is regionally well known - I'm very sure he was the primary factor in nearly all of his AP students both passing the AP test and having a job in the industry. Those two classes got me through my first two years of college and put me in a unique position for learning low/high level l

    • by swilver ( 617741 )

      ...because teachers need to be able to decipher the code afterwards.

    • Why is the entire test in Java? Not Javascript but actual Java. I mean, at least it's not .NET or C# (aka, platform specific).

      Well, I tried turning in my answers in Whitespace [wikipedia.org], but I got a zero.

  • No offense, but this is a shit summary.

    I'm not even going to bother to parse it out or read the article, I have all the word-salad I need at the moment.
    • Read the article? There is no article. There are six tweets (numbered and linked individually), a graph with data sets helpfully labeled "1", "2", "3", "4", and "5" but no other description, and a PDF of the test questions. And some comment about students not understanding the concept of "sparse arrays", but since the term is completely defined in the test materials I can only assume the real concern is that students can't be bothered to read the "unimportant" introductory material before trying to answer

  • I took my AP computer science test way back in 1986 and while I don't have the test with me, I certainly remember it being A LOT harder than this. I could've finished this test in 20 minutes or so. Did I get better with age? Am I overestimating my high school computer science abilities? Or, have the standards fallen?

news: gotcha

Working...