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.
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 🥖
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.
Some comments I wrote while taking:
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
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
FUCK why is this still not an answer
alright we’re just gonna guess
Overall, it just felt really long and my brain became increasingly fried. Some questions were definitely tricky!
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.
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 🎉
- Blue: me during exam
- Red: me grading
- Green: Vic commenting after
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
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
4) instead of a
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!