CS2109S — Introduction to AI and Machine Learning
| Component | Weight | Dist. |
|---|---|---|
| Coursemology | 30% | Free |
| Capstone project | 10% | mmm |
| Midterm | 30% | mmm |
| Final | 30% | okay |
Full marks on coursemology and mini project. Scored just above UQ on the midterm, and I believe 94% (?) for the final. final grade: A+.
I have a few thoughts on the midterm and project.
Take a look at the midterm curve:

Notice that small bump near 24 points. My mini conspiracy (it is not confirmed) that this second bump is due to the makeup midterm. The midterm was scheduled for a Monday evening, which led to 40-50 of us not being able to make it (happens). We were given a makeup midterm of course, but at significantly higher difficulty.
Each question on the makeup was a modification to a question on the original paper, and while some changes were trivial, many questions ended up becoming much harder. Either conceptually harder to reason about, or simply given more things to juggle.
Personally I found this rather unfair. While we were effectively given more time to prepare (2 extra weeks?), I don’t feel that the jump in difficulty was commensurate. If we take 24 to be the median of the makeup paper, the median makeup mark is lower than the of the original’s lower quartile! I was lucky and still did comfortably well, but I would definitely be quite a lot angrier otherwise…

As for the capstone project, it is this thing called “Grid Universe”. The maze is interactive, with powerups, obstacles, collectibles, and pushable blocks.
Part 1: Develop an agent that can navigate the maze, from a direct specification of the maze. You are scored by how many steps you take to reach the exit, relative to the true minimum number of steps. There is also a time limit for the computation.
Part 2: Develop a computer vision system that can interpret an image of the maze (then navigate it, presumably using your part 1 solution).
I believe the intent in part 1 is for you to develop heuristics to guide an A* style search. The challenge is that you have no information as to what the distribution of mazes are like. And while there are some heuristics which work broadly, it is also easy to construct mazes which cause these heuristics to fail. Did I mention you can only submit 10 times? (Effectively 9 times, since you would use the last attempt to re-submit your best of 9 attempts).
In the end, I got a perfect score through a small loophole: The given maze implementation was really slow, due to layers and layers of game abstraction. But Claude (AI use is allowed) can extract the core logic into something that runs a hundred times faster. And magically, I had a hundred times the computation time! A* with a simple Manhattan heuristic passed all test cases easily.
CS3230 — Design and Analysis of Algorithms
| Component | Weight | Dist. |
|---|---|---|
| Assignments (best 7 of 10, each 8 pts, total capped to 50) | 25% | Free |
| Tutorial Participation (5x2 + 1x12, cap 20) | 5% | Free |
| Midterm (open book, no calculator) | 30% | okay |
| Final (open book, no calculator) | 40% | okay |
| Bonus Lecture Attendance (×10) | 0.2% each | mm |
Full marks on assignments and tutorial participation. Scored 38.5/50 on the midterm (0/22.5/27.25/33/50), and 53/60 on the final (0/27/34/42/56). Final grade: A+

i was mildly annoyed that no calculators were allowed. the profs were right that it was barely useful, but they fail to consider that i have the arithmetic skills of a five year old. (to the left is a screenshot directly from my softmark)
luckily for me, the final had almost no arithmetic needed :)
I only have one bad thing to say about this module.
STOP WITH THE COIN WEIGHING QUESTIONS!!!!
Around the time you get to the divide and conquer part of the module, they’ll introduce coin weighing question(s).
You have 8 real, identical coins, and one lighter fake coin. You have a weighing balance that can tell you if one side is heavier, lighter, or equal in weight to the other. What is the fewest number of weightings needed to guarantee you can identify the fake coin?
The solution here is to make three groups of three, and weigh two groups. This allows you to identify the group where the fake coin must be in. Repeat within this group to find the coin. This procedure generalizes easily, allowing you to identify one fake coin out of using just weightings. This question is fine, and it’s classic.
The issue is that there’s only so many “nice” coin weighing questions before it gets absurd. And it seems that every semester, either the midterm or the exam is guaranteed to have a coin weighing question. This is what we got for our final:
You have 8 real, identical coins, and one (identical looking) lighter fake coin. You have three weighing scales. Two are normal, while one is faulty. The outputs from the faulty scale outputs at random (heavier/lighter/equal). What is the fewest number of weightings needed to guarantee you can identify the fake coin?
Now, at first glance, this seems like it complicates things. After thinking about it for a bit, you may realize that you can just repeat a single weighting on all three scales. At least two will agree, so you can take a majority vote to determine the true result. This allows you to solve it identically to the previous question, using 2 x 3 = 6 weightings. yay for divide and conquer!
But If you think about it harder, you may realize you can save a weighing.
- If, when weighing the first two groups, the first two scales happen to agree immediately, it guarantees this must be the correct result (but not necessarily that these two scales are correct. it could be that the faulty scale happened to get it right). Therefore when weighing the second groups, the faulty scale may cause a disagreement, thus we may need three more weighings. 2 + 3 = 5
- If, when weighing the first two groups, the first two scales disagree, we need the third scale to tiebreak. But this means we have identified the faulty scale! When weighing the second groups, we can just use one weighing from a working scale. 3 + 1 = 4.
- In the worst case, it’s 5.
slightly less yay for divide and conquer, but at least it’s still the backbone of the method.
But, if you forgot that this is a timed exam, you may realize that there’s a solution that uses just 4 weightings. This solution does not use divide and conquer.

no yays for divide and conquer.
If you’re curious, the 6 weighing solution gets you 5/10 marks, the 5 solution 7/10, and the 4 solution is worth the full 10. (But nobody got 10/10, since most people stopped at 6 or 5, and the one person who tried for 4 made a mistake.)
CS3233 — Competitive Programming
this beast needs its own post
MA2311 — Techniques in Multivariable Calculus
| Component | Weight | Dist. |
|---|---|---|
| Midterm | 30% | funny |
| Final | 70% | free |
sorry no clue what I scored lol, midterms were returned but I didn’t pick mine up. finals were never returned. final grade: A+
CMMIIW, but the only new concepts on top of MA1521 is the lagrange multiplier, and a deeper look into convergence of series.
in past years the midterm was 5 MCQs worth a stressful 6% each. This time we were given 3 FRQs! it would be welcome, if not for the extremely strange question setting. Question 1 was literally just two rational function limits. Question 2 was a telescoping series. Both pretty easy. I then proceeded to burn the rest of my time failing to solve Question 3, a recursive series.
Now, for more context, before the midterm, he told us to revise on induction. Recursion and induction, perfect! Except I couldn’t get it to work!! my bounds were always the wrong direction. I find out a month later that actually induction was never going to work for that question… #baited (in hindsight I guess a telescoping series is the induction he was hinting at. but still …)
the final was fine too. 2 hours for 6 questions, plenty of time. people were leaving at the 1 hour mark, and maybe 10-20% of students left before the 2 hours were up. but, with the final worth 70%, I forced myself to check every single question thrice over. didn’t find anything. bleh
MA2108 — Mathematical Analysis
| Component | Weight | Dist. |
|---|---|---|
| Homework (×4) | 5% each | Free |
| Midterm (no cheatsheet) | 30% | okay |
| Final (no cheatsheet) | 50% | okay |
I think I got 24/24/25/25 (/25) on the homeworks? 48/50 midterm. finals not released, but I did all but one question and felt pretty good about them. final grade: A+
biggest deviation from past years is that no cheatsheets were allowed. granted, you probably wouldn’t have time to look at it anyways. most questions were proof based.