海角社区

Skip to content

Browse Our Programs

Flexible Learning for Work and Life

海角社区 offers various non-credit continuing education courses that provide learning opportunities for personal enrichment, professional development, and lifelong learning. Explore new skills, hobbies, and career interests in a supportive campus environment. From career training and certification programs to arts, wellness, and technology classes, ECC’s Continuing Education programs make learning, growing, and connecting easy—no matter your goals or schedule.

For more information on a specific class, please contact the Continuing Education office at cemailbox@elgin.edu or call 847-622-3036. If you experience problems when registering, please contact ECC's Registration office at 847-214-7393.

Want to teach a Class?

Do you have teaching and training skills and want to earn some extra money? If you have a great idea for a class where you're an expert – whether it's for kids, seniors, professional development, or more – download and submit a class proposal form, and we'll take a look!

If you're interested in being an instructor in our career or corporate training programs or have a course idea for various age groups, call 847-622-3036.

Download CE Proposal

Register For Non-Credit Classes

We offer a wide range of popular, high-quality, non-credit classes that are both accessible and convenient. You don’t need to complete an admission application or provide transcripts to enroll, making the registration process quick and simple. Whether you want to learn new skills, explore a hobby, or enhance your professional knowledge, our non-credit classes make it easy to gain valuable experience without the usual admission requirements. We're here to assist you every step of the way!

Learn how to register

Contact

Continuing Education Department

Building K, Room 128
847-622-3036
cemailbox@elgin.edu

Connect with Us

Hours
Monday through Friday: 8 am to 5 pm

*Closed most Fridays from June through August

Explore New Possibilities

Continuing education catalog Spring 2026

Spring 2026 Continuing Education Opportunities

View Current Schedule

Print'); /** * Developer note: * Reuse page styles in the print window so the modal content is formatted cleanly. */ Array.from(document.querySelectorAll('link[rel="stylesheet"], style')).forEach(function (node) { printWindow.document.write(node.outerHTML); }); printWindow.document.write('

海角社区

'); printWindow.document.write(content.innerHTML); printWindow.document.write(''); printWindow.document.close(); printWindow.onload = function () { printWindow.focus(); printWindow.print(); printWindow.close(); }; } $(function () { var $loaderMount = $('#ce-loader-mount'); var $announcer = $('#ce-announcer'); var $ceModal = $('#ce-modal'); var $courseModalDesc = $('#course-modal-desc'); var $courseModalTitle = $('#course-modal-title'); var $courseModalActions = $('#course-modal-actions'); var $courseModalStatus = $('#course-modal-status'); var courseModalEl = document.getElementById('course-modal'); /** * Developer note: * Inject loader only while terms are actively loading. * This keeps loader text out of the raw HTML source. */ function createLoader() { if (!$loaderMount.length) return; $loaderMount.html( '
' + '' + '
Course Content loading...
' + '
' ); } /** * Developer note: * Remove loader from DOM after terms render. */ function removeLoader() { $loaderMount.empty(); } /** * Developer note: * Small helper for polite announcements tied to accordion state changes. */ function announce(message) { if (!$announcer.length) return; $announcer.text(''); window.setTimeout(function () { $announcer.text(message); }, 30); } /** * Developer note: * Keeps the modal scaffold out of the page reading order until open. */ function hideModalScaffold() { $ceModal.attr({ hidden: 'hidden', 'aria-hidden': 'true' }); } /** * Developer note: * Exposes the modal scaffold only while a real course modal is active. */ function showModalScaffold() { $ceModal.removeAttr('hidden').attr('aria-hidden', 'false'); } /** * Developer note: * Rebuild modal actions only when a real course is opened. * This keeps link text out of initial source HTML. */ function renderModalActions() { $courseModalActions.html( '' + '' + 'How to register' + '' ); } /** * Developer note: * Rebuild closed-registration status only when needed. * This keeps expired text out of initial source HTML. */ function renderClosedStatus() { $courseModalStatus.html( '

' + 'Registration has expired for this course. Visit ' + ' ' + 'to search for available courses.' + '

' ); } /** * Developer note: * Clear dynamic modal content on close so stale content is not left in the DOM. */ function resetModalContent() { $courseModalTitle.empty(); $courseModalDesc.empty(); $courseModalActions.empty(); $courseModalStatus.empty(); } /** * Developer note: * Keeps aria-expanded in sync with the real Bootstrap collapse state. * Adds a polite live announcement when a section expands or collapses. */ function syncAccordionAria(scope) { $(scope).find('.accordion-button').each(function () { var $button = $(this); var targetSelector = $button.attr('data-bs-target'); var $panel = $(targetSelector); if (!$panel.length) return; $button.attr('aria-expanded', $panel.hasClass('show') ? 'true' : 'false'); $panel.off('shown.bs.collapse.a11y hidden.bs.collapse.a11y'); $panel.on('shown.bs.collapse.a11y', function () { var label = $.trim($button.text()); $button.attr('aria-expanded', 'true'); announce(label + ' expanded'); }); $panel.on('hidden.bs.collapse.a11y', function () { var label = $.trim($button.text()); $button.attr('aria-expanded', 'false'); announce(label + ' collapsed'); }); }); } /** * Developer note: * Bootstrap handles most tab ARIA state natively once IDs and targets are correct. * This helper keeps aria-selected aligned after dynamic rendering. */ function syncTabAria(scope) { $(scope).find('[data-bs-toggle="tab"]').each(function () { var $tab = $(this); var targetSelector = $tab.attr('data-bs-target'); var $panel = $(targetSelector); if (!$panel.length) return; $tab.attr('aria-selected', $tab.hasClass('active') ? 'true' : 'false'); $tab.off('shown.bs.tab.a11y hidden.bs.tab.a11y'); $tab.on('shown.bs.tab.a11y hidden.bs.tab.a11y', function () { $tab.attr('aria-selected', $tab.hasClass('active') ? 'true' : 'false'); }); }); } /** * Developer note: * Ensures both modal header action buttons are reachable by keyboard. */ function bindModalHeaderKeyboard() { $(document) .off('shown.bs.modal.modalHeaderFocus', '#course-modal') .on('shown.bs.modal.modalHeaderFocus', '#course-modal', function () { showModalScaffold(); var closeButton = document.getElementById('modal-close'); if (closeButton) { closeButton.focus(); } }); $(document) .off('hidden.bs.modal.modalHeaderFocus', '#course-modal') .on('hidden.bs.modal.modalHeaderFocus', '#course-modal', function () { resetModalContent(); hideModalScaffold(); }); $(document) .off('keydown.modalHeaderNav', '#modal-close, #print-course') .on('keydown.modalHeaderNav', '#modal-close, #print-course', function (e) { var isTab = e.key === 'Tab' || e.keyCode === 9; if (!isTab) return; var closeButton = document.getElementById('modal-close'); var printButton = document.getElementById('print-course'); if (!closeButton || !printButton) return; if (!e.shiftKey && this.id === 'modal-close') { e.preventDefault(); printButton.focus(); return; } if (e.shiftKey && this.id === 'print-course') { e.preventDefault(); closeButton.focus(); } }); } // Keep the modal hidden and empty on first load. resetModalContent(); hideModalScaffold(); createLoader(); // Ajax call when the page loads $.ajax({ // Orig: // url: 'https://apps.elgin.edu/ContinuingEdService/ContinuingEd.svc/GetTerms', // url: 'https://testapps.elgin.edu/proofContinuingEdService/ContinuingEd.svc/GetTerms', // Get Terms is now referencing a JSON file for increase in load speed. url: 'https://apps.elgin.edu/EccContinuingEdJson/continuingEdGetTerms.json', method: 'GET', dataType: 'JSON', success: function (dataTerm) { var activeClass; var createTabHTML; var createTabContentHTML; var createAccordianHTML; for (var i = 0; i < dataTerm.length; i++) { var obj = dataTerm[i]; var accordianContent = ''; var tabId = 'tab-' + obj.Term; var tabPanelId = 'term-panel-' + obj.Term; var accordionId = 'accordion-' + obj.Term; activeClass = i === 0 ? ' active' : ' next'; /** * Developer note: * Switched term tabs to button elements so the tablist follows Bootstrap 5 semantics. * aria-controls now points to the real tab panel ID instead of a hard-coded value. */ createTabHTML = ''; $('#termList').append(createTabHTML); activeClass = i === 0 ? ' show active' : ''; /** * Developer note: * The tab panel ID must match the tab button aria-controls/data-bs-target values. * The accordion wrapper ID must match each accordion panel data-bs-parent value. */ createTabContentHTML = '
'; createTabContentHTML += '

' + obj.Description + ' Offerings

'; createTabContentHTML += '

Take note of the course code number, which consists of three letters and three numbers (i.e., ABC 123). You will need this when registering for the class.

'; createTabContentHTML += '
'; for (var t = 0; t < obj.TermTopics.length; t++) { var topics = obj.TermTopics[t]; var cInfo = ''; var headingId = 'heading-' + obj.Term + '-' + topics.TopicCode; var panelId = 'collapse-' + obj.Term + '-' + topics.TopicCode; var itemId = 'item-' + obj.Term + '-' + topics.TopicCode; for (var c = 0; c < topics.Courses.length; c++) { var courses = topics.Courses[c]; cInfo += '
' + ' ' + courses.Prefix + ' ' + courses.Number + ': ' + courses.Title + '
'; } createAccordianHTML = '
'; createAccordianHTML += '

'; createAccordianHTML += ' '; createAccordianHTML += '

'; createAccordianHTML += '
'; createAccordianHTML += '
' + cInfo + '
'; createAccordianHTML += '
'; createAccordianHTML += '
'; accordianContent += createAccordianHTML; } createTabContentHTML += accordianContent; createTabContentHTML += '
'; createTabContentHTML += '
'; $('#termContent').append(createTabContentHTML); } syncAccordionAria('#termContent'); syncTabAria('#termContent'); bindModalHeaderKeyboard(); removeLoader(); / * $('.cInfo') click event / $('.cInfo').off('click').on('click', function (n) { n.preventDefault(); var thisTerm = $(this).attr('data-term'); var thisPrefix = $(this).attr('data-prefix'); var thisCNumber = $(this).attr('data-cNumber'); var createModalHeaderHTML; var createModalBodyHTML; $.ajax({ url: 'https://apps.elgin.edu/continuingedservicev2/continuinged.svc/GetCourse?', data: 'term=' + thisTerm + '&prefix=' + thisPrefix + '&number=' + thisCNumber, method: 'GET', dataType: 'JSON', cache: false, success: function (course) { var createSectionHTML = ''; var c_open = 0; var today = new Date(); createModalHeaderHTML = ''; createModalHeaderHTML += '
'; createModalHeaderHTML += ' '; createModalHeaderHTML += ' '; createModalHeaderHTML += '
'; $('#course-modal .modal-header').html(createModalHeaderHTML); createModalBodyHTML = '

' + course.Description + '

'; createModalBodyHTML += '
'; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; createModalBodyHTML += ' '; var meetingSection = ''; var meetingSection2 = ''; var sectionMtg; var sectionSynonym; var sectionFee; var courseTime; var courseDate; for (var p = 0; p < course.SectionMeeting.length; p++) { var section = course.SectionMeeting[p]; meetingSection = section.MtgSection; var fee = parseFloat(section.SectionFee); fee = fee.toFixed(2); courseTime = (section.StartTime === '' && section.EndTime === '') ? '' : section.StartTime + ' - ' + section.EndTime; courseDate = (section.StartDate === '' && section.EndDate === '') ? '' : section.StartDate + ' - ' + section.EndDate; if (meetingSection !== meetingSection2) { sectionMtg = section.MtgSection; sectionSynonym = section.Synonym; sectionFee = '$' + fee; } else { sectionMtg = ' '; sectionSynonym = ' '; sectionFee = ' '; } createSectionHTML = ''; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ' '; createSectionHTML += ''; createModalBodyHTML += createSectionHTML; meetingSection2 = section.MtgSection; var start_date = section.StartDate.replaceAll('/', '-'); var start_time; if (section.StartTime.substring(5, 7) === 'PM' && section.StartTime.substring(0, 2) !== '12') { start_time = (+(section.StartTime.substring(0, 2)) + 12) + ':' + section.StartTime.substring(3, 5); } else { start_time = section.StartTime.substring(0, 5); } var start = new Date(start_date + ' ' + start_time); if (today < start) { c_open++; } } createModalBodyHTML += ' '; createModalBodyHTML += '
SectionSynonymFeeDay(s)Start/End TimeBeg/End DateBldgRmInstr
' + sectionMtg + '' + sectionSynonym + '' + sectionFee + '' + section.Days + '' + courseTime + '' + courseDate + '' + section.Building + '' + section.Room + '' + section.LastName + '
'; createModalBodyHTML += '
'; /*createModalBodyHTML += '

Take note of the course code number which consists of three letters and three numbers (i.e., ABC 123). You will need this when registering for the class.

';*/ $('#course-modal #course-modal-desc').html(createModalBodyHTML); renderModalActions(); var aTag = document.getElementById('deep-link'); aTag.setAttribute('target', '_blank'); aTag.setAttribute('rel', 'noopener noreferrer'); if (c_open > 0) { aTag.classList.remove('disabled'); aTag.removeAttribute('aria-disabled'); aTag.removeAttribute('tabindex'); aTag.href = 'https://selfservice.elgin.edu:8173/Student/InstantEnrollment/Search?Keyword=' + course.Prefix + '-' + course.Number + '&Terms=' + course.Semester; $courseModalStatus.empty(); } else { aTag.removeAttribute('href'); aTag.classList.add('disabled'); aTag.setAttribute('aria-disabled', 'true'); aTag.setAttribute('tabindex', '-1'); renderClosedStatus(); } $(document) .off('click', '#print-course') .on('click', '#print-course', function () { printDiv('print-me'); }); showModalScaffold(); var courseModal = bootstrap.Modal.getOrCreateInstance(courseModalEl); courseModal.show(); } }); }); }, error: function () { $errorCheck.html('
Error! Check Back Later
'); console.log('Error loading Continuing Education terms JSON.'); } }); });