EducationProgram dies whenever it is missing the cldr extension which it relies on. To run unit tests in Jenkins, we clone the extensions and have them loaded using scandir() which can yield EducationProgram before cldr. The tests thus abort because EducationProgram.php is loaded first.
Seems the EducationProgram entry points does do that much and we have a SetupAfterCache hook in Setup.php which could be used to implement the check. The hook run after LocalSettings and all require_once(extensions/*) has been completed so that should be safe.
That prevents us from enrolling EducationProgram in a massive jenkins job that tests all extensions together (bug 67216).