You may choose any design for your collector as long as it can correctly reclaim cycles. That means that reference-counting will not be sufficient. It is not required to implement a moving collector. You may use conservative stack scanning, but that risks failing some test cases.
Your project will be evaluated by running it on programs that will run out of memory without a garbage collector.