ctools module keeps getting unloaded? I keep getting this error while trying to access content using The Course module.

Call to undefined function ctools_get_plugins()

To my understanding this means the ctools module is not loaded, which is why the Course module cannot access this function. When I run drush cc all on the background and refresh, it works, but only once.
I've no idea what to do about it.
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.