I know I need a student-developed procedure, but I'm not sure what makes it count as managing complexity rather than just being a function.
Accepted answer
The procedure needs three things together: it must be **student-developed**, it must take at least one **parameter that actually changes what the procedure does**, and it must be **called** somewhere in your program so it contributes to the program's purpose.
A procedure with a parameter it ignores, or one that's defined but never called, doesn't manage complexity. The clearest version: the same procedure produces meaningfully different results for different arguments, and without it you'd have to repeat that logic.
When you write it up, say what the procedure does *and* why the program would be harder to write or read without it.