, but this code // executes before the first paint, when

ÃÛÌÒapp

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); Application for Degree and Certificates | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Application for Degree and Certificates

Table of Contents


In addition to the formal requirements for degrees, students must satisfy certain technical requirements. Students must complete a declaration of major form and have it signed by their departmental advisor and must meet all of the conditions specified on that form. (These declarations are normally completed during the sophomore or junior year.) Finally, students intending to graduate must file a formal application for a degree at the registrar’s office not later than the beginning of the semester in which they expect to graduate. If they are completing teacher education programs, they must also file an application for Michigan certification at the same time they apply for a degree or not later than a semester before they complete the certification requirements.

Students may not participate in the May graduation ceremony unless they are within one semester of meeting their graduation requirements.

Students desiring to graduate with an honors designation must apply for admission to a departmental honors program and meet those requirements and the general honors program requirements. Consult the special academic programs pages for more information.


Audience
Current Students
Approved by

Office of the Registrar