Hope your "senior lecturer" understands this, too.
IMHO: Debugging is very important.
But before debugging I recommend to write little pieces of code and individually test them.
After each piece is tested you may combine all to the desired function.
I see many members here writing (or copy and paste) a huge amount of code ... try to use it in total ...
... and if it does not worke like expected they are lost, not able to debug it piece by piece.
Like:
* feed functions with known values...to expect known output
* feed them with extreme values (most big positive, most big negative, zero....) to see if still everything works like expected
* set/ clear pins for debugging funtion but also debugging timing
* print values to serial port ... (while taking care of transmit time )
* stop operation by implementing a "while(1)"
* slow down operation by implementing "delay_ms(xx)"
I'm not the most experienced programmer, but I think I'm a good "debugger". (Indeed it doesn't matter whether it is programming language, analog circuit, power circuit, physical processes, algorithms, chemical processes...).
Generally it's always the same: divide the problem into pieces, decide wheter you want to debug them "from input to output" or back "from output to input" ... and stay focussed and test each piece step by step.
Often there is no need for dedicated debug tools: a bit of debugging code and a serial monitor is sufficient, maybe the use of a scope...
In my eyes debugging is very important.
The best programmer will make mistakes ... and he/she needs to be able to find them..
Klaus