Unit 2 Test Reflection

This notebook contains a focused review of the questions you answered incorrectly. Each section shows the question, the available choices, the answer you selected, why it was incorrect, and a clear explanation of the correct answer. Use this as a study reference — read the explanations carefully and follow the study recommendations in the final section.


Question 1 — Booleans / Data Types

Question: Which simulation will generate a result best stored using a Boolean variable?

Choices:

  • A. A simulation of flipping a fair coin
  • B. A simulation of rolling a fair die (1-6)
  • C. A simulation of the temperature in a location over time
  • D. A simulation of traffic patterns on a road

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect. There are six possible results of rolling a die, which is more than can be stored in a Boolean variable.

Correct answer: A

Explanation: A coin flip has two possible outcomes (heads/tails). A Boolean stores two possible values (true/false), so a coin flip is best represented with a Boolean.


Question 2 — Software Development Process

Question: Which best describes a benefit of iterative and incremental program development?

Choices:

  • A. It allows programmers to implement algorithmic solutions to otherwise unsolvable problems.
  • B. It eliminates the need for programmers to test completed programs.
  • C. It enables programmers to create programs that use the lowest-level abstractions available.
  • D. It helps programmers identify errors as components are added to a working program.

Your answer: A

Why this was marked incorrect (user note): Chosen A — This option is incorrect. Unsolvable problems cannot be solved with an algorithm.

Correct answer: D

Explanation: Iterative, incremental development encourages building small working components and integrating them gradually, which helps find errors early as components are added.


Question 3 — Graphics / Coordinate Updates

Question: Which code segment draws circles centered at (3,6), (5,4), (7,2) with radius 2?

Choices:

  • A. Start xPos=3,yPos=6; repeat 3 times: DrawCircle(xPos,yPos,2); xPos+=2; yPos+=2
  • B. Start xPos=3,yPos=6; repeat 3 times: DrawCircle(xPos,yPos,2); xPos+=2; yPos-=2
  • C. Start xPos=7,yPos=2; repeat 3 times: DrawCircle(xPos,yPos,2); xPos+=2; yPos+=2
  • D. Start xPos=7,yPos=2; repeat 3 times: DrawCircle(xPos,yPos,2); xPos+=2; yPos-=2

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. The code segment draws circles centered at (7,2), then (9,0), (11,-2).

Correct answer: B

Explanation: Starting at (3,6) and updating x by +2 and y by -2 each repetition produces centers (3,6), (5,4), (7,2), which matches the figure.


Question 4 — Probability / Randomness

Question: A spinner sectors: Red 4x size, Blue and Yellow equal. Which missing code correctly simulates spinner?

Choices:

  • A. spin <- RANDOM(1,3); if spin==1 return ‘Red’; if spin==2 return ‘Yellow’; return ‘Blue’
  • B. spin <- RANDOM(1,3); if spin==1 return ‘Yellow’; if spin==2 return ‘Blue’; return ‘Red’
  • C. spin <- RANDOM(1,6); if spin==1 return ‘Red’; if spin==2 return ‘Yellow’; return ‘Blue’
  • D. spin <- RANDOM(1,6); if spin==1 return ‘Yellow’; if spin==2 return ‘Blue’; return ‘Red’

Your answer: C

Why this was marked incorrect (user note): Chosen C — This option is incorrect. The code selects Red 1/6, Yellow 1/6, Blue 2/3, which does not match the intended 4:1:1 ratio.

Correct answer: D

Explanation: Because Red is 4 times the size of each of Blue and Yellow, if total weight is 6 then Red should occupy 4/6 of outcomes. Using RANDOM(1,6) and mapping four values to Red and one each to Yellow and Blue yields the correct distribution (4/6,1/6,1/6). Option D implements that mapping.


Question 5 — Data Interpretation

Question: After mobile app release, which hypothesis is most consistent with the data?

Choices:

  • A. The mobile app release did not have any effect on the average number of daily messages sent per user.
  • B. The mobile app release discouraged new user registration on the site.
  • C. The mobile app release led to users being less frequently active on the site.
  • D. The mobile app release led to users tending to write shorter messages.

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect. Registered users continued to increase after the mobile app release.

Correct answer: D

Explanation: The dataset shows a substantial drop in average number of characters per message after the app release, which is consistent with users writing shorter messages. Other columns (registered users) actually increased, so hypothesis B is not supported.


Question 6 — Loop Order / Output

Question: Compare values displayed by Program A (display then increment) vs Program B (increment then display):

Choices:

  • A. Programs display identical values.
  • B. Program A and program B display the same values in different orders.
  • C. Program A and program B display the same number of values, but the values differ.
  • D. Program A and program B display a different number of values.

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. Both programs display ten values.

Correct answer: C

Explanation: Program A displays the sequence 1 through 10 (display first, then increment afterwards), while Program B displays 2 through 11 (increment first, then display). They display the same number of values (10) but the actual values differ.


Question 7 — Digital Equity

Question: Which of the following actions could be used to help reduce the digital divide? I. Free education/training II. Free or low-cost devices III. Networks/infrastructure

Choices:

  • A. III only
  • B. I and II only
  • C. II and III only
  • D. I, II, and III

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect. A lack of network access contributes to the digital divide; III is also important.

Correct answer: D

Explanation: All three measures address different aspects of access and inclusion: training builds skills, devices provide hardware, and networks/infrastructure provide connectivity. Together they reduce the digital divide more effectively than any subset.


Question 8 — Functions / APIs

Question: Given API Max(a,b) returns greater of two integers; which expression yields the greatest of a,b,c?

Choices:

  • A. Max(Max(a,b), c)
  • B. Max(a,b) - Max(b,c)
  • C. Max(a,b) + Max(b,c) - Max(a,c)
  • D. (Max(a,b)+Max(b,c))/2

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect. It computes the difference between maxima rather than the overall maximum.

Correct answer: A

Explanation: Compute Max(Max(a,b), c): first get the maximum of a and b, then compare that result to c. This yields the maximum of all three values in every case.


Question 9 — Lists / Majority Check

Question: Procedure IsHot(temperatureList) should return true if a majority of days had temperature >= 90. Which return expression is correct?

Choices:

  • A. counter < 0.5 * total
  • B. counter > 0.5 * total
  • C. total < 0.5 * counter
  • D. total > 0.5 * counter

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. That expression will usually evaluate to true regardless because total is typically larger than half of counter.

Correct answer: B

Explanation: To check whether more than half of days were >= 90, test if counter > 0.5 * total (i.e., counter/total > 0.5). This correctly returns true when a majority of days meet the threshold.


Question 10 — Network Topology

Question: In which configuration is it NOT possible to have redundant routing between computers P and S?

Choices:

  • A. P-Q,R ; Q-P,S ; R-P,S ; S-Q,R
  • B. P-R ; Q-R,S ; R-P,Q ; S-Q (S only connected to Q)
  • C. P-Q,R,S ; Q-P,S ; R-P ; S-P,Q
  • D. P-Q,R ; Q-P,R,S ; R-P,Q,S ; S-Q,R

Your answer: C

Why this was marked incorrect (user note): Chosen C — This option is incorrect. In configuration C there are multiple paths from P to S (for example, P->S direct and P->Q->S).

Correct answer: B

Explanation: Configuration B has S connected only to Q and P connected only to R; this creates a single path between P and S (P->R->Q->S or similar) without redundant alternate routes, so redundant routing between P and S is not possible.


Question 11 — Compression / Encoding

Question: Byte pair encoding: which statement is true?

Choices:

  • A. It’s lossy because it discards data.
  • B. It’s lossy because pairs replaced by single char.
  • C. It’s lossless because an encoded string can be restored.
  • D. It’s lossless because it can be used to transmit securely.

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. Whether a transformation is lossless does not depend on security.

Correct answer: C

Explanation: Byte pair encoding stores a mapping of replacements so that the original string can be reconstructed from the encoded string plus the mapping. Therefore it is a lossless transformation.


Question 12 — Compression / Encoding

Question: For which string is it NOT possible to use byte pair encoding to shorten its length?

Choices:

  • A. BANANA
  • B. LEVEL_UP
  • C. MEET_ME_LATER
  • D. NEITHER_HERE_NOR_THERE

Your answer: C

Why this was marked incorrect (user note): Chosen C — This option is incorrect. ‘MEET_ME_LATER’ contains repeated pairs that allow shortening.

Correct answer: B

Explanation: ‘LEVEL_UP’ lacks repeated adjacent character pairs that would allow substitution to reduce length; other listed strings contain repeated pairs that BPE can exploit.


Question 13 — Robot Movement / Control

Question: Robot on grid must reach gray square. Which replacement can be used to move robot to the gray square?

Choices:

  • A. IF CAN_MOVE(right) { ROTATE_RIGHT } ; MOVE_FORWARD
  • B. IF CAN_MOVE(right) { ROTATE_RIGHT ; MOVE_FORWARD }
  • C. IF CAN_MOVE(forward) { MOVE_FORWARD } ; ROTATE_RIGHT
  • D. IF CAN_MOVE(forward) { MOVE_FORWARD ; ROTATE_RIGHT }

Your answer: C

Why this was marked incorrect (user note): Chosen C — This option is incorrect. That code moves the robot up and down between its starting square and the square above it.

Correct answer: A

Explanation: A correct control pattern is to check if the robot can move in the desired direction (right), rotate to face that direction if needed, and then move forward. Option A implements the rotate-if-needed then move step in a structure that avoids oscillation.


Question 14 — Information / Bits

Question: Minimum number of bits needed to represent 200 different characters?

Choices:

  • A. 4
  • B. 6
  • C. 7
  • D. 8

Your answer: C

Why this was marked incorrect (user note): Chosen C — This option is incorrect. 2^7 = 128, which is less than 200.

Correct answer: D

Explanation: Minimum bits = ceil(log2(200)) = 8, because 2^8 = 256 >= 200 and 2^7 = 128 < 200.


Question 15 — Logic Circuits

Question: Circuit: output = (A AND B) OR (C OR D). For which inputs is the circuit output FALSE?

Choices:

  • A. A=true, B=false, C=false, D=false
  • B. A=true, B=true, C=false, D=false
  • C. A=false, B=false, C=true, D=true
  • D. A=false, B=false, C=false, D=true

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. With these inputs, C or D is true, so the OR gate yields true.

Correct answer: A

Explanation: To make the output false, both (C OR D) must be false and (A AND B) must be false. Option A (A=true,B=false,C=false,D=false) satisfies this: A AND B = false, C OR D = false => overall false.


Question 16 — Runtime Estimation

Question: Expensive Analysis(category) takes ~1 hour per call. Program calls Analysis(‘science fiction’) once, then loops over 4 other genres calling Analysis each time. Approximate total time?

Choices:

  • A. 1 hour
  • B. 2 hours
  • C. 4 hours
  • D. 5 hours

Your answer: A

Why this was marked incorrect (user note): Chosen A — This option is incorrect. The Analysis procedure is called multiple times.

Correct answer: D

Explanation: Calls: one for the initial sci-fi count, plus one call for each of the 4 genres in the loop, for a total of 5 calls. At ~1 hour per call, the program runs in about 5 hours.


Question 17 — Scatter Plot / Correlation

Question: Scatter plot: reading hours (y) vs smartphone hours (x), marks indicate interest. Which hypothesis fits the data?

Choices:

  • A. Participants who read more were generally more likely to say they are interested in the application.
  • B. Participants who read more were generally less likely to say they are interested.
  • C. Participants who use a smartphone more were generally more likely to say they read more.
  • D. Participants who use a smartphone more were generally less likely to say they read more.

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. Visual inspection shows interest correlates with reading quantity rather than smartphone usage.

Correct answer: A

Explanation: The points labeled ‘interested’ cluster at higher reading-hour values (y-axis), indicating that participants who read more tended to be more interested in the app.


Question 18 — Flowchart / Boolean Logic

Question: Flowchart sets include to true under certain conditions. Which statement is equivalent to the flowchart?

Choices:

  • A. include <- (floor > 10) OR (bedrooms = 3)
  • B. include <- (floor > 10) AND (bedrooms = 3)
  • C. include <- (floor <= 10) OR (bedrooms = 3)
  • D. include <- (floor <= 10) AND (bedrooms = 3)

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. That would correspond to a different flowchart.

Correct answer: A

Explanation: The flowchart sets include to true if either condition (floor > 10) is true or (bedrooms == 3) is true; that is the logical OR expression in choice A.


Question 19 — Simulation Assumptions

Question: Mice-predator simulation: NextDayPopulation updates numMice each iteration; numPredators is initialized but never changed. Which assumption is made?

Choices:

  • A. Number of mice increases by 1 each day.
  • B. Number of mice does not change from day to day.
  • C. Number of predators increases by 1 each day.
  • D. Number of predators does not change from day to day.

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect. The number of mice changes each day as determined by NextDayPopulation.

Correct answer: D

Explanation: Because the code never updates numPredators inside the loop, the simulation assumes the predator population is constant over time (numPredators does not change).


Question 20 — Averages / Efficiency

Question: Two code segments: one computes running average inside loop; the other computes average after loop. Which description is best?

Choices:

  • A. Code I displays the correct average, but code II does not.
  • B. Code II displays the correct average, but code I does not.
  • C. Both display the correct average, but code I requires more arithmetic.
  • D. Both display the correct average, but code II requires more arithmetic.

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect. Code I also displays the correct average.

Correct answer: C

Explanation: Both code segments compute the correct average; Code I computes the division each iteration (running average) and therefore performs more arithmetic operations than Code II, which computes the division once after summing.


Question 21 — Modulo / Periodic Checks

Question: Frequent-customer: which IF sets cost to 0 for every 10th purchase?

Choices:

  • A. if count / 10 == 0 -> cost=0
  • B. if NOT (count / 10 == 0) -> cost=0
  • C. if count MOD 10 == 0 -> cost=0
  • D. if NOT (count MOD 10 == 0) -> cost=0

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect.

Correct answer: C

Explanation: To detect every 10th purchase, test whether count MOD 10 == 0 (remainder zero). Dividing by 10 and comparing to zero is not a correct periodic test.


Question 22 — Data Analysis / Aggregation

Question: Given midterm, final, and resulting total for thousands of students, which can be determined? I. Average total II. Average increase due to replacement III. Proportion improved

Choices:

  • A. III only
  • B. I and II only
  • C. I and III only
  • D. I, II, and III

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect. The proportion who improved can also be computed from the available data.

Correct answer: D

Explanation: With each student’s midterm, final, and calculated total, you can compute average total (I), compute how much the total changed due to replacement and average that (II), and determine whether replacement improved a student’s total (compare stored total to original midterm+final—III). All three are computable.


Question 23 — Address Space / Exponentials

Question: IPv6 (128-bit) vs IPv4 (32-bit): how many times as many addresses are available?

Choices:

  • A. 4 times
  • B. 96 times
  • C. 2^4 times
  • D. 2^96 times

Your answer: A

Why this was marked incorrect (user note): Chosen A — This option is incorrect. The multiplicative factor is not 4.

Correct answer: D

Explanation: IPv6 addresses are 128-bit vs 32-bit in IPv4. The number of addresses increases by a factor of 2^(128-32) = 2^96, i.e., choice D.


Question 24 — Algorithm Complexity

Question: Sorting algorithm steps: n->steps pairs like 10->100,20->400,30->900,… How to characterize for large n?

Choices:

  • A. Runs in reasonable time
  • B. Runs, but not in reasonable time
  • C. Attempts undecidable problem
  • D. Finds approximate solution when it fails to find an exact solution

Your answer: D

Why this was marked incorrect (user note): Chosen D — This option is incorrect. There is no evidence the algorithm returns approximations.

Correct answer: A

Explanation: The data suggest the steps scale roughly with n^2 (quadratic). Quadratic time is polynomial and typically considered ‘reasonable’ depending on n; among the choices, the intended answer is that it runs in reasonable time (polynomial).


Question 25 — Computability / Undecidability

Question: Is it possible to create an algorithm that determines whether any program/input will go into an infinite loop?

Choices:

  • A. Possible, but only in low-level language
  • B. Possible, but requires multiple CPUs
  • C. Possible, but not reasonable time
  • D. Not possible to create algorithm for all programs/inputs

Your answer: A

Why this was marked incorrect (user note): Chosen A — This option is incorrect.

Correct answer: D

Explanation: This is the classical undecidable halting problem: no algorithm can correctly decide for every program and every input whether the program halts or loops forever.


Question 26 — Cryptography

Question: In public-key cryptography, the sender uses the recipient’s public key to encrypt a message. Which key is needed to decrypt?

Choices:

  • A. The sender’s public key
  • B. The sender’s private key
  • C. The recipient’s public key
  • D. The recipient’s private key

Your answer: A

Why this was marked incorrect (user note): Chosen A — This option is incorrect.

Correct answer: D

Explanation: Messages encrypted with the recipient’s public key can only be decrypted with the recipient’s private key (the private key is kept secret by the recipient).


Question 27 — Search Algorithms

Question: Procedure Contains(list,target) scans each element and returns true if element==target. Which statements are true? I. binary search II. linear search III. only works when list is sorted

Choices:

  • A. I only
  • B. II only
  • C. I and III
  • D. II and III

Your answer: No answer recorded

Why this was marked incorrect (user note): No user choice recorded previously.

Correct answer: B

Explanation: The procedure implements a linear search (scans elements sequentially) and does not require the list to be sorted. It is not a binary search.


Question 28 — Encryption Types

Question: Which is an example of symmetric encryption?

Choices:

  • A. Locked box with two codes (one to insert, one to open).
  • B. Finn and Gwen map letters with a secret key that both use to encrypt/decrypt.
  • C. Hannah hides a message and tells exact location.
  • D. Juan slides message into Kelly’s locker.

Your answer: No answer recorded

Why this was marked incorrect (user note): No user choice recorded previously.

Correct answer: B

Explanation: Symmetric encryption uses the same secret key for both encryption and decryption. The scenario where Finn and Gwen share a mapping key that both use to encode and decode is symmetric-key encryption.


Question 29 — Abstraction / Generalization

Question: Which procedure generalizes Square and Cube?

Choices:

  • A. Add(n,m)
  • B. Fourth(n)
  • C. Polynomial(c)
  • D. Power(n,m)

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect.

Correct answer: D

Explanation: Power(n,m) generalizes raising n to various powers; Square and Cube are special cases (m=2 and m=3). Power(n,m) captures the general behavior.


Question 30 — Boolean Logic / Input Handling

Question: KeepPlaying procedure checks ((response == ‘y’) AND (response == ‘yes’)) then returns true. What happens?

Choices:

  • A. returns true when the user inputs ‘y’ and false otherwise
  • B. returns true when the user inputs ‘n’ and false otherwise
  • C. returns true no matter what the input value is
  • D. returns false no matter what the input value is

Your answer: A

Why this was marked incorrect (user note): Chosen A — This option is incorrect. The condition requires the response to be both ‘y’ and ‘yes’ simultaneously, which cannot be true.

Correct answer: D

Explanation: Because the IF condition uses AND between mutually exclusive strings, it can never be true; the procedure always returns false.


Question 31 — Series / Looping

Question: count=1; repeat 10 times: sum+=count; count+=2; display sum. Which describes the result?

Choices:

  • A. sum of even integers 0..10
  • B. sum of even integers 0..20
  • C. sum of odd integers 1..9
  • D. sum of odd integers 1..19

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect.

Correct answer: D

Explanation: The loop adds the first ten odd numbers: 1,3,5,…,19. Therefore the result is the sum of odd integers from 1 through 19.


Question 32 — Data Integration

Question: Two schools’ data formats differ. Which of the following can be done with combined data? (choose two)

Choices:

  • A. Create a single list of student names, sorted by last name
  • B. Determine the average number of days students are absent
  • C. Determine which ZIP code is represented by the most students
  • D. Determine the student ID of the student with the greatest number of absences

Your answer: A (only)

Why this was marked incorrect (user note): User indicated A as correct previously.

Correct answer: A and B

Explanation: Both datasets include student names and days absent (so you can combine names and compute average days absent). ZIP code is missing from one dataset and student ID is missing from the other, so options C and D are not possible for the full combined set.


Question 33 — Cloud Computing Effects

Question: How has cloud computing affected Internet communication? (select two)

Choices:

  • A. Eliminated the need for redundancy in routing
  • B. Helped enhance collaboration
  • C. Introduced new data-security concerns
  • D. Reduced concerns about intellectual property rights

Your answer: No answer recorded

Why this was marked incorrect (user note): No user choice recorded previously.

Correct answer: B and C

Explanation: Cloud services have enabled collaboration tools (increasing collaboration) but have also raised new data-security and privacy concerns. They have not eliminated redundancy requirements or broadly reduced IP-rights concerns.


Question 34 — Edge Cases / Function Robustness

Question: Multiply(x,y) implemented by repeated addition until count == y. Under which conditions will it NOT return the correct product? (Select two)

Choices:

  • A. x and y both positive
  • B. x positive and y negative
  • C. x negative and y positive
  • D. x and y both negative

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is correct (procedure fails when y is negative).

Correct answer: B and D

Explanation: If y is negative the loop ‘count equals y’ will never be reached as count increases from 0; similarly, with negative y values or other sign mismatches the simple loop will not correctly handle sign and produce incorrect results. The primary failing case given is when y is negative.


Question 35 — Algorithm Debugging

Question: Procedure Smallest(numbers) sets min=numbers[1], then FOR EACH number if number < min then RETURN number (bug). For which lists does Smallest NOT return the intended value? (select two)

Choices:

  • A. [10,20,30,40]
  • B. [20,10,30,40]
  • C. [30,40,20,10]
  • D. [40,30,20,10]

Your answer: B

Why this was marked incorrect (user note): Chosen B — This option is incorrect.

Correct answer: C and D

Explanation: Because the procedure RETURNS immediately upon finding a number smaller than the initial min rather than updating min and continuing, it fails when the true minimum occurs after that immediate return point. Lists like [30,40,20,10] and [40,30,20,10] cause incorrect results.


Final Reflection and Study Plan

Common patterns observed

  • Conceptual definitions: Several errors came from not fully recalling or applying core definitions (for example, what constitutes a Boolean, or the difference between lossless and lossy encoding).
  • Probability and proportional reasoning: A few questions required reasoning about proportions (spinners, coin vs die) and mapping those proportions to counts.
  • Loop order and off-by-one issues: Mistakes where the sequence of incrementing vs displaying changes the output (display-before-increment vs increment-before-display).
  • Runtime and expensive calls: Underestimating time because a costly procedure was invoked inside a loop rather than once outside it.
  • Small arithmetic/logical oversights: Bits and powers-of-two calculations (minimum bits needed), modulus vs division for periodic checks, and logic expressions using AND vs OR.

Concrete study actions

  1. Flashcards for core definitions: Make concise cards for Boolean types, lossless vs lossy encoding, public-key vs symmetric-key cryptography, linear vs binary search, and common logical operators.

  2. Loop-tracing practice: For 10–12 short problems, write out variable values step-by-step for the first 8 iterations. This will help spot increment/display ordering and off-by-one errors.

  3. Probability to counts: When faced with proportional spinner or probability questions, convert proportions into integer counts (example: total weight 6 -> 4:1:1) to avoid ratio errors.

  4. Runtime estimation checklist: Identify slow/expensive calls in problems, and count how many times they execute. If a function takes significant time, multiply by number of calls rather than assuming a single call.

  5. Modulus and small arithmetic drills: Practice simple modular arithmetic (e.g., test counts 10,20,30 for count%10==0) and memorize small powers of two (2^5..2^10).

  6. Targeted practice: Re-do similar multiple-choice problems under timed conditions, then immediately review explanations for any mistakes.