Quarantine Day 259: Princeton CS Senior Takes the AP CS Exam

Did I get a 5? My ex-Facebook, ex-Google, ex-Airbnb, ex-boyfriend grades it

Nov 29, 20206 min read

ap logo

When I was a high school senior, I was part of the first Honors Coding class my school offered. Belmont High didn’t have AP CS until after I graduated.

Coding H was a joke of a class that culminated in a final Arduino project. Mine was a “robot” that played one of three Christmas jingles depending on how loud you screamed at it.

I honestly didn’t see CS as an interesting major/career path at that time. Four years later — I run a tech blog and will be a full-time SWE post-grad. How the turn tables.

So for shits and gigs, I decided I would take the AP Computer Science A Exam with zero preparation.


I took Princeton’s COS 126 — Computer Science: An Interdisciplinary Approach — my freshman fall. I’m imagining the AP CS exam to cover most of the material from this course.

Throwback to this recruiting season when I got asked what are the four fundamental principles of Object Oriented Programming and I could only name abstraction 🙃

So that pretty much sums up how much I absorbed from COS 126.

From my understanding, the exam is only in Java. Despite Java still being listed on my resume under Skills > Languages, I haven’t touched it in almost two years 🤭 There’s a Java Quick Reference page attached to the exam. I’m not brushing up on Java syntax or properties, and have not looked at a single example question before I take the exam.

The format is as such — both sections are weighted 50% and 90 minutes each:

  • 40 multiple choice (MC)
  • 4 free response (FR)

Unfortunately, there aren’t full past exams released online (MC is always missing). I found a practice exam instead. I’ll be typing into the PDF and making comments as I go. Since this is a practice exam, there isn’t any info on scoring/curving. We will see how I do and try to estimate my score.

Exam Day

Checklist for success:

  • Review the material the night before ❌
  • Get a full night’s rest ❌
  • Eat a solid breakfast ✅
  • Wear comfortable clothes ✅

Let’s get this 🥖

Multiple Choice

MC felt like a goddammed marathon.

I had my guard up for every question. I double and tripled checked my logic because I didn’t wanna get bamboozled. I left a couple of hard/tedious ones to revisit.

The quick reference sheet definitely came in handy.

dis me POV: you’re my laptop watching me trying to context switch between ArrayList and List

Some comments I wrote while taking:

oh no
does casting to an int truncate??
I think so…
if not I’m literally inting

said outloud: oh my god
just wrote out a truth table to confirm that !&& = ||
lmao this isn’t ans isn’t on there let’s try again
ok turns out I read my truth table wrong and !&& != || :( let’s try applying the ! to both sides
*attempts again*
ok at least this answer is on there lmfao
*gets it wrong*

wait what’s the diff between interface and class oh no

omg is this what constructors are supposed to look like

rip this isn’t on there uh
lemme come back to this if I have time
aight take two
*attempts again*
FUCK why is this still not an answer
*attempt #3*
alright we’re just gonna guess

Overall, it just felt really long and my brain became increasingly fried. Some questions were definitely tricky!

Free Response

I forgot you had to write actual Java for this section. I briefly questioned why Java was still on my resume before I started the FR and sent up a prayer to the semicolon gods.

Thankfully, the MC eased me into remembering how freaking verbose the language is. I mostly code in JavaScript nowadays which is syntactically similar-ish to Java? I’ve also been writing C for OS which also definitely helped (Java is a descendant).

This section was way easier for me than MC. I barely had time to check my work for MC but I finished FR with 38 minutes to spare. I pretty much knew how to go about the solutions once I understood the prompts. I would say these were on the same level, if not easier than LeetCode easys. The hardest part was the amount of words I had to read.


I scored 36/40 on MC and 35/36 on FR — which is around ~93.6% on the exam. I would say that’s pretty solidly a 5 on any curve 🎉

I had ex-Facebook, ex-Google, ex-Airbnb (read: a real sOfTwArE eNgiNeEr) … also my ex, Victor Zhou, comment on my results. Check out the marked up exam here. Clean version of the exam is here.

  • Blue: me during exam
  • Red: me grading
  • Green: Vic commenting after

Multiple Choice

I missed 4 MC.

  • #16: definitely just careless
  • #19: I suck at boolean operators and logic
  • #22: didn’t realize that when a subclass is declared as its parent class, it can only call parent methods, and not its own methods damn
  • #23: I misread a for loop bound rip and rode the struggle 🚌 three times

Free Response

Vic told me that nested methods in Java is not a thing:

im pretty sure this doesn’t even come close to compiling

Unclear if I would lose points for that.

The only point I would have lost otherwise is when I divided a double by an int (4) instead of a double (4.0) 🤦🏻‍♀️ ugh strong typed languages.

Compared to the sample solutions, mine were a bit tidier/easier to read because I made sure to create helper methods and proper variable names whenever possible. Perhaps Java will not be ceremoniously yeeted off my resume after all.


I said to Vic:

The exam was way easier than I thought and my results are less interesting than I hoped

to which he replied:

yeah seems like a 5 told u this was gonna be super ez

and that pretty much summarizes this experiment.

Thanks for reading!