COMP10002 Foundations of Algorithms
Why Is This Assignment So Long?
Why the assignment is intentionally substantial, what formative assessment is for, and why understanding still matters in an era where AI can make parts of coding easier from Dr. Cohney's perspective.
Short answer
This assignment is long on purpose.
It is trying to help you learn several fairly complex algorithmic ideas by building them, testing them, and seeing how they connect. That takes more space than a short worksheet or a tiny coding exercise, but the point is not to bury you in busywork. The point is to give you enough structure and repetition that the ideas start to become yours.
Formative assessment
This is a piece of formative assessment.
That means it is not just there to measure what you already know. It is also there to help you learn while you do it. A good formative task gives you:
- a sequence of ideas that build on each other
- enough detail that you can recover when you get stuck
- enough practice that the important patterns start to stick
That is why the assignment is broken into stages, examples, concept pages, and support material. The goal is not simply “produce a correct final file”. The goal is to help you build understanding along the way.
Learning By Doing
Some of the ideas in this assignment are not actually simple:
- turning text-like objects into vector representations
- thinking in rows, columns, and matrix operations
- understanding what attention is doing algorithmically
- keeping track of masking, softmax, and staged data flow
- seeing how one representation becomes another across a pipeline
Those are things most students do not really learn by only reading definitions.
They learn them by doing: by implementing one step, checking it, fixing it, and then using that result in the next step. That is why this assignment has enough length to let you practise the whole chain rather than only seeing isolated fragments.
AI And Understanding
It is also worth being honest about the present moment: AI can now make some parts of real-world coding easier.
It can often help with:
- boilerplate
- syntax reminders
- small refactors
- translating an idea into a first draft of code
But understanding is still the hard part.
You still need to know:
- what problem is actually being solved
- whether an approach makes sense
- what the data means
- where an algorithm can go wrong
- whether an answer is correct, brittle, confused, or lucky
That is part of what this assignment is training. It is not only training you to type code. It is training you to understand a fairly intricate computational process well enough that you can reason about it, implement it, debug it, and judge whether it is right.
Why I Care
I care a lot about your learning.
That is part of why the assignment is substantial and why the site includes so much scaffolding. The intention is not to make your life harder for the sake of it. The intention is to give you a real chance to learn material that is challenging, modern, and genuinely worthwhile.
If this assignment works well, you do not just finish with one more mark in the gradebook. You finish with stronger habits of thought:
- breaking a complex problem into stages
- reading data representations carefully
- reasoning about algorithms instead of guessing
- building confidence with ideas that initially look intimidating
That is the outcome I care about most.