Final Recap

This might not be directly related to the course content, but since I don’t feel great about how I did in the AY24/25 final, I feel the need to write a short recap. As a real recap after the final, or maybe as the plan for this comming summer break.

After the final, I ran some of the code on my computer and realized… I kind of messed up. Looking back at the questions I got wrong, some of them were honestly just careless mistakes (but actually it is still my fault 😢), while others came from not having paid enough attention during revision. So I want to reflect based on these two types of errors.

Stupid Mistakes

For the careless ones, like Q8 about dynamic binding. I remember skipping that section at first during the final. When I returned to it, I felt like I was running out of time, so I rushed. Because of that sense of rush, I missed the key details, like the method descriptor info from the parent class.

Another one is Q15. I completely missed the distinct()! Wah, that one really hurts a bit.

Are these the only "stupid" mistakes? Maybe there are more, but for now, these two stand out. Maybe I’ll remember more later, but honestly, at this point, I don’t know and I don’t really care.

Poor Preparation

Now for the questions I got wrong because I hadn’t properly reviewed or understood the material:

Q6–7 and Q11 were mostly about types and some Java-specific behavior. Honestly, this is the part of the course I was always most nervous about. I think I need to reread the notes and maybe find a good book to study over the summer.

Q13 I clearly remember struggling with cf1.thenCombine(cf2, combiner). I wasn’t sure whether it waits for cf1 to finish first, or if it waits for both to complete before combining. Ironically, this was in my lecture notes, but not in my cheatsheet.

Q16 was a legit tricky question—but fair. It tested something that was in the notes: that a stream can only be consumed once.

And Q22 was very similar to the Maybe example from PS6, but I didn’t give that topic enough attention before the final. Such a pity.

This is the first time I’ve felt so down after a final. But I think it’s because I haven’t really mastered the soul of the course yet. Some of the core concepts in Java are still shaky for me. I’m going to keep working on them over the summer.

Tips for future?

CheatSheet Preparation

I feel like for modules that allow a limited cheatsheet, I’ve realized it’s better not to start by restricting yourself to the page limit. Instead, begin by preparing a comprehensive cheatsheet with everything you think is important — no matter the length. Once that’s done, gradually trim it down to fit the actual page limit. This way, you won’t miss out on key content just because you tried to fit everything too early. The editing process also helps reinforce what’s essential and what can be left out.

Time Management

I still remember that I only started working on the past year papers one day before the exam. Maybe that wasn’t the sole reason I didn’t do well on the final, but I do feel like I wasted some valuable time during reading week. Looking back, I could have planned my revision more wisely. So, I’ll take this experience as a wake-up call to manage my time better in future semesters — especially when it comes to consistent revision and starting past year questions earlier.


Finally, as in CS1010, Prof Wei Tsang said,

Grade is not everything, focus on

  1. Learning new things

  2. level-up your skills

  3. enriching your experience

Now, I think it's time to get over this diffcult phase and face the new life ahead!

— Wenbo, 2025.04.30

Last updated