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

»Æ´óÏɸßÊÖÂÛ̳

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); })(); Research Computer Science | »Æ´óÏɸßÊÖÂÛ̳

»Æ´óÏɸßÊÖÂÛ̳

Skip to main content

Research

Image
Research Banner Image

The department maintains a number of active research and scholarship programs, including the following:

Faculty Research

  • Digital Libraries — Harry Plantinga built and maintains the , a digital library of well-known Christian literature, and , a comprehensive repository of Christian hymns, that are two of the most commonly visited Christian websites on the world-wide-web. This work is funded by a variety of sources and employs a number of students throughout the year.
  • High-Performance Computing — Joel Adams designs and builds high performance Beowulf clusters (see , & Microwulf), and applies their computational power to hard problems in the sciences. This work has been funded by the NSF, employs student interns, and serves as the basis for the high-performance computing course (see ).
  • Intelligent User Interfaces and Machine Learning — Ken Arnold studies studies how people use intelligent systems for creative productivity, which has led to ground-breaking work on how predictive typing affects what people write and how.
  • Software Engineering - Patrick Bailey is an experienced software engineer who has made regular contributions to software development publications, including , and is the editor of the .

These programs have brought in hundreds of thousands of dollars of grant funding for faculty and student research collaboration.

Christian Scholarship in Computing

The department also studies the Christian underpinnings of computing. Derek Schuurman's work focuses on this area. For details on this work, see Derek's book, , a  he did with Jason Thacker, and other materials available at Christianity and Computing.

Computer Science Education

Vic Norman's research focuses on advanced pedagogical techniques for computer science. In addition, the department has written books and lab materials for courses using a variety of programming environments.

Student Research

In addition to participating in faculty research projects (listed above), students run their own research projects. One common place for this work is the senior projects course. For details, see .