There are too many to name them all. Some of them are C specific; some of them are general best-practices kinds of things.
- Learn to use the tools available
- Revision control system. Every time it works, check it in.
- Diff tools: diff, rdiff, meld, kdiff3, etc. Especially in conjunction with the RCS.
- Compiler options. -Wextra -Wall __attribute__((aligned(8))), how to pack structs.
- make: Produce debug and production versions
- debugger: How to get and interpret a stack trace. How to set breakpoints. How to step through/over code.
- Editor: Compile within the editor. Open multiple windows, M-x tags-query-replace (are my emacs roots showing?) etc.
- cscope, kscope, [ce]tags, or other source browsing tools
- Program defensively. assert(foo != NULL) in -DDEBUG; scrub user inputs.
- Halt and Catch Fire when an error is detected. Debugging is easier when you core dump 2 lines after you detect the problem.
- Maintain a 0-warning compile with -Wextra and -Wall enabled.
- Don't put everything into 1 huge honking .c file.
- Test. Test. And test some more. And check those tests in alongside your source. Because the instructor might come back and change the requirements after it's been turned in once.