, 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); })(); Grading Rubric Computer Science | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Grading Rubric

All key course assignments should include clear instructions on the project requirements and grading rubric, and should maintain examples of excellent work from the past. Grade assessments for each of the required elements are made using the following scale:

  • 4 = Exemplary — The student demonstrates an exceptionally high level of performance.
  • 3 = Proficient — The student demonstrates a competent level of performance.
  • 2 = Developing — The student shows some significant weaknesses, and further development is still in order.
  • 1 = Unacceptable — The student's performance in this area is below acceptable standards.

We expect that 70% of our graduating students will place at or above the proficient level (i.e., at levels 3 or 4) on all key assignments. The assessment scale roughly corresponds to the following letter grades: Exemplary: A; Proficient: B; Developing: C; Unacceptable: D & F.

The required elements for the key assignment types are as follows:

  • Essay questions
    • Content: Does the essay make a point that is correct and compelling?
    • Form: Is it well-written in terms of organization, style, grammar, and spelling?
  • Presentations
    • Content: Does the presentation make a point that is correct and compelling?
    • Form: Is it well-delivered in terms of organization, style, and presentation mechanics?
  • Code/documentation
    • Correctness: Does the system function as required?
    • Efficiency: Does it run efficiently?
    • Understandability: Does the code and its documentation make the system's purpose and operation clear? Are all major modules and programmer APIs documented?
    • Usability: If the system has an end-user interface, is this interface learnable by typical end users?
  • Research paper
    • Content: Does the essay make a point that is correct and compelling?
    • Form: Is it well-written in terms of organization, style, grammar, and spelling?

Updated Fall 2024.