, 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); })(); Overlap Policy | app

app

Skip to main content

Overlap Policy

Table of Contents


Overlaps between core and majors/minors

There is no limitation on the number of overlaps permitted between core and any major, minor, cognate, concentration or certificate.

  1. Students may graduate with more than one major if all requirements are met for each major.
  2. Students may graduate with more than one minor if all requirements are met for each minor.
  3. Students may receive a certificate and a related major if all requirements are met for each program.
  4. Schools may restrict double majors or major/minor combinations in closely related fields. Those restrictions are published in the department’s section of the catalog.
  5. Students may earn multiple majors or minors offered by a single department provided that the programs are different majors (e.g., the Strategic Communication and Film and Media Studies majors offered by the Communication Department), unless restricted above.
  6. Students typically may not “double major” in two concentrations, tracks, or emphases within a single major (e.g., Environmental Science Major: Natural Resources Track and Environmental Science Major: Naturalist Track), as these reflect sub-disciplinary expertise rather than separate majors. Schools may make exceptions to this if there is sufficiently distinct content in the programs.
  7. Students may not major and minor in the same program (e.g., students may not receive a Biology major and a Biology minor).
  8. Students may not earn the same major in multiple degree categories (e.g., students may not receive a Biology BS and a Biology BA).

Last updated
Audience
Current Students
Approved by

Office of the Registrar