AP Computer Science this year was interesting, in the fact that even though we did very little in class, I found that I actually learned a lot of things. In a time to be completely honest, I didn’t do most of the labs. I did many of them – but certainly not all. And yet, I seemed to do enough to learn the material quite well. While they were very helpful, in that we had to figure out how to solve a problem ourselves, as opposed to simply evaluating code. Honestly, however, the most useful things weren’t the labs, but the free response worksheets. The free response worksheets forced us to write out a whole program without being able to check it in any way, and though it was very very annoying to do when I had to turn it in, I think that in the end they would have helped a lot. If we had done more of those, basically just like free-response practices, we would have had the concepts ingrained better in our minds and also would help a lot with the AP, especially the Gridworld.
Which brings up Gridworld. Gridworld, I think, we should have had a mandatory review of sometime before the AP. There were a few methods that I didn’t know existed, that I ended up needing to use for the AP, and overall if I was just more familiar with Gridworld, I think I could have done better on the Gridworld free-response on the AP. The main thing about Gridworld was that we did half of it at the beginning of the year, and then just later throughout the year, we did some, but by the time AP’s came around, we hadn’t touched Gridworld for a while. I think a review of it before the AP would have been helpful. Also, I don’t think we should have started with Gridworld as the first lesson. Gridworld confused everyone, I think, and if we had started with simple codes, it would have been much easier for everyone to understand Computer Science at the beginning of the year.
But honestly, I think we were rather well-prepared for the AP. The AP questions were in the format of the quizzes that we had taken all throughout the year. I dunno if Mr. Stephens planned it that way, but it was a good system. The AP, then, was in a familiar format, which made me happy. The free-response was the only challenging part, but it also was not that challenging. The thing about the free-response was not that I didn’t know how to do it, but the problem was time. The time restraints led me to not finish a problem. But I think I had the ability to do all of them. So, again, I think practice was key here, and if I had had more practice with free-response, then I could have probably finished the free-response of the AP.
Success on the AP, though, isn’t the only way of measuring success in this class. By the end of the year, I was missing a lab, the Insertion Lab. I was able to do it in about 15 minutes, without asking for much help like usual, and I found that I could breeze through most of the trouble-shooting. I knew what a null-pointer and index-out-of-bounds meant, and was able to fix them myself, which was the first time for that (sadly). When it didn’t give me the output I wanted, I was also able to figure out exactly what went wrong in my program, and I was able to fix it quickly. I think that by the end of the class, my ability to program had improved by a lot. Even on a harder lab like insertion-sort (ok, not really that hard, but still, harder than the simple things we did at the beginning of the year), I could do all of it fairly easily.
One of the things I liked and found really useful was the way Computer Science is cumulative. When we learned if else statements, or for and while loops, or arrays, it wasn’t the end of their use when we finished the labs, but rather, we continued to use them for just about every lab. This meant that for a lot of the concepts, we didn’t need to review, because we had been using them all the time. This is, again, why I think Gridworld always went so wrong, because we didn’t use it constantly.
Since Gridworld was such a pain, perhaps another suggestion could be to teach the class in a Gridworld perspective, learning for loops and if statements and whatnot using the Gridworld format. This way, we would continue to use what we learned from Gridworld right up to the AP, and so we would be very familiar with it. Of course, Gridworld is kinda lame, and I don’t know if we would want to do a whole year of programming in a Gridworld background. However, it would be useful.
Ultimately, though, I think the year in CompSci was very successful. I learned how to program, and I can do it fairly decently (it being the basics, at any rate). And I didn’t have to do all of the labs xD.