ctools module keeps getting unloaded?
ctools_get_plugins() isn't a function defined in a module file, but in the includes/plugin.inc file in the directory containing the Chaos tools module.
It's not the module that isn't loaded. It's the module that is calling the function that should first load the file containing that function, for example adding the following line before the function call.
ctools_include('plugins');

This is the solution used, for example, in ctools_get_plugins() is called without including plugins.inc.
What you can do is checking the issue queue for the module that is causing that error, and see if the issue has been already reported and fixed. If it's so, you should update the module and use that release.
For what I can see, the CourseObject::access() method of the Course module does include the file before the function, and so do other methods in that file, which is the only file using ctools_get_plugins() in the Course module. (I did check with git grep --fixed-strings 'ctools_get_plugins' in the directory containing a copy of the 7.x-2.x branch.)
Probably the module causing the issue is another one.