Overall Scores:

Reflection on the questions:

I was able to retain a high level of accuracy as I did this MCQ. One thing that I realized was that I had a different interpretation of some terms and definitions than collegeboard did, so I will need to start a hollistic review of all the Units and Big Ideas so that I am on the same page as the AP Exam. Otherwise, I think I should be good to go!

Wrong Questions

In this question, I misunderstood what an “unsolvable problem”. Judging from collegboard’s response, an unsolvable problem seemed to be one that was truely impossible to solve with computers, like a program that can compute the running time of another program. The right answer for this question was actually D, allowing programmers to identify errors as components are added to a working program. This is because the “Iterative and Incremental” development process is actually a developmental approach that splits the product into various bits and pieces, and gradually debugs and combines pieces to obtain the final product. The programmers repeated test a function until it’s complete, and they incrementally move on from feature to feature.

On this question, I selected A, which was the wrong answer, instead of C, which was the right answer. The reason that A is wrong is because the expression evaluates to false when P and Q are opposites of each other, producing a truth table not matching that of and. Instead, the NAND gate should mimic the AND gate with the only exception that it returns true when both objects are false rather than true. Thus, the actual answer is much simpler, just appending the NOT logic to A and B should do the trick.

The correct answer choices for this question were A and D, but I had selected A and C instead. A is correct because replacing repeated code with a procedure allows us to organize our code betwee, having only defined the block of code once. However, I was confused by C and D. I knew that B was incorrect because the length of variable names typically isn’t an issue, in fact, longer variable names serve to be better markers for what the variables do. However, but C and D are talking about documentation, which is a record or sort of instruction for the program, and not part of the program code that is actually compiled. Thus I got confused between C and D and ended up selecting C, which replaces several lines with one main line. However, the right answer was D, which created a list of objects to represent related objects, which I guess was a form of data abstraction. Overall, I will need to review procedural and data abstraction, their definitions and applications.