Overview of This Blog

This week, we were assigned a College Board MCQ from 2015. In this blog, Im provide insight into what I have learned in AP CSA and reflect on how I have improved myself in my ability to answer these multiple choice questions as well as complete the work assigned in class. I also go over the score that I earned on the test as well as some of the questions that I got wrong.

Journey, Learnings, and Discoveries

In the four months that I have been in AP CSA, I have faced both challenges and amazing achievements. In terms of individual achievements, I had the opportunity to learn about hashmaps in Java as well as the different time complexities of some of the most common sorting algorithms while working on the mini project. Even though my main task was to implement the betting system in our race car game, it was still very interesting to look at the existing code that created the path for the cars to travel on as well as determine the amount of time each car (sorting algorithm) would take to cross the finish line. In addition, in making the student lesson for this trimester, I was able to learn a lot of new concepts that I previously did not know about jQuery, which made putting the lesson together even more engaging. In terms of achievements that my team and I have made this trimester, we were able to accomplish creating a racing game that was both fun and educational. Not only did the user get to choose how many elements all the algorithms had to sort and bet as many points as they wanted to, but they were also presented with some very interesting fun facts about the sorting algorithms. These fun facts could include, but were not limited to, the time complexities in Big O notation and how the algorithms go about sorting our arrays. As with any project, whether it is in this class or beyond, we learned about how especially important it is to communicate with one another, as in our case, we created a group chat and always made sure to let each other know whenever we were about to commit something. This way, our group was able to avoid (annoying) issues such as merge conflicts as we made progress on our project. The group chat also allowed everyone to know important things, such as if one of us would not be attending school for a certain day, if we needed to change something in our project, if something was not working the way it was supposed to, and many others. One challenge that we ran into was being able to deploy our backend component of the project to AWS. According to Mr. Mortensen, this was due to someone or something logging in as root and trying to follow the deployment steps with that user, causing the whole EC2 instance to break and preventing almost every group in both periods from getting their projects deployed. As a result of this, most of us ended up just showing our backend database locally, which made it a bit more difficult to demonstrate the sorting race working, as we were always required to get the backend running locally before we could show the project. Had we been able to deploy the project normally, we would be able to just show a demo of the project without having to open anything up locally with VSCode.

In terms of the actual multiple choice test itself, I would say that there were a few factors that played a role in allowing me to get the high score that I got on it. Although we had these from first trimester (and are now in the second trimester), I think that all of the student lessons we had for Units 1-10 over the course of four to five weeks played a significant role in helping me do well on this test, as even though I went into this class with experience in coding in Java, the lessons really helped me understand the specific concepts I needed to know for the exam. Even as we progress through the year, I still believe that those student lessons will continue to help me succeed on these practice multiple choice tests, as those lessons ensured that I had the fundamentals of the curriculum engrained into my head.

Overall, AP CSA has been the perfect balance of fun and learning new things and exhaustion and frustration. Even though my journey in the AP class has not been picture perfect, I do think that my experiences as a student in the class will help me in the long run, especially as I am getting to the point in my high school career when I want to start applying for internships and other programs that apply many of the skills and concepts we have learned in this class.

Corrections

The rest of the blog will now be primarily focused on the multiple choice test that we were assigned to take this week.

As shown in the image above, I earned a score of 36/39 on this test, which is a very good score in my book. My score indicates that I have a very solid understanding of everything that we have studied in AP CSA so far (which is basically everything since we had all of those student lessons in the first trimester). While it is great that I was able to get this score on the test, it is important that I take the time to thoroughly review the concepts of the questions I got wrong, as that will ensure that I won’t make the same mistakes in the future, especially while I take the actual AP exam MCQ section in May.

Question 9 (incorrect)

The first question to look over is question 9, which is shown below:

The correct answer to this question was E, which was 2 + (int) (Math.random() * 6) + (int) (Math.random() * 6). However, I ended up choosing C, which ended up being wrong due to the fact that replacing the missing code with that line would end up generating an integer between 0 and 10, inclusive, which we don’t want. I think I wrongly assumed that if I simply added up the number generated from each simulated roll that it would yield the sum of the two dice rolls. This is not the case, as in order to create the correct sum, we need to make it so that the roll is from 1 to 6 and so that the range of possible sums is from 2 to 12. Now that I was able to review this question, I am a lot more clear on what went wrong and what I can do to improve myself the next time I encounter a question like this.

Question 16 (incorrect)

The next question to look over is question 16, which is shown below:

The correct answer was E, which was that the code segment returned the column index of an element with the largest value in the two-dimensional array. I got this question wrong mainly due to my misunderstanding of what I saw in the code segment. I think that since I saw rows and indexes of rows being used throughout the code segment, I concluded that the correct answer had to have obviously been option C, which was that it returned the row index of an element with the largest value in the two dimensional array. After reviewing the explanation for all of the answer choices, including the correct one, I have a much better understanding of this question and feel confident that if I ever encounter a question like this in the future that I will be able to answer it correctly.

Question 22 (incorrect)

The next question to look over is question 22, which is shown below:

The correct answer was option A, which is the following code segment:

for (int[] row : numbers)
{
    for(int n : row)
    {
        System.out.print(n);
    }
} 

This question was asking for the code segment that correctly produces the output of 123456. I think that I ended up choosing option E because of how I was quick to assume that because there was a 2D int array involved that it would involve the iteration of both rows and columns. After reviewing the explanation for the incorrect answer I chose as well as correct option A, I feel like I understand why I got this question wrong much better now. My answer E was incorrect because of how that code segment had a nested for loop iterate over the 2D array numbers in column major order, which would cause 142536 to be printed out instead. Option A is correct because the nested for loop iterates through every row of the 2D array numbers as well the elements in those rows. Following this pattern will output 123456, which is what we want. I think that for a question like this, it is important that I carefully examine the code segments given to me, as for this question, I kind of rushed through it without really thinking about what each choice meant. Because this question involves iteration, I think it would also be very helpful for me to have a piece of paper by my side so I can keep track of everything that is happening. If I try to do everything in my head, I could make a mistake somewhere without even realizing it and end up choosing the wrong answer.