, 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); })(); Calvin Remembers Sanford Leestma - News & Stories | ƴɸ̳

ƴɸ̳

Skip to main content

Calvin News

Calvin Remembers Sanford Leestma

Thu, Nov 30, 2017
Lynn Rosendale

When Sanford Leestma ’63 first began teaching at Calvin there was no computer science department; in fact, there weren’t many computers. By the time he left 35 years later, Leestma and his math department colleague Larry Nyhoff had established a whole new major and written most of the supporting textbooks for it.

“A PhD mathematician, Sandy was a lifelong learner, who retrained in computer science mid-career,” said Joel Adams, a former colleague of Leestma’s. “He served as department chair for many years, and was a model servant-leader, regularly taking on the tasks no one else wanted to do.”

Leestma died after an extended illness on Nov. 1, 2017. He was 76.

The birth of computer science

Describing the early days of computer science at Calvin, Leestma, at his retirement, said, “It was becoming increasingly clear that computers would play an important role in science and mathematics. So we said, ‘It’s time for us to offer some courses in this.’ Well early on there were some who thought that wasn’t appropriate—that computer science, whatever else it was, wasn’t mathematics, at least not the kind most mathematicians like.”

Leestma and Nyhoff took on the role of teaching this unchartered course. “We taught ourselves computer science one day ahead of the students,” Leestma said at the time.

The duo would go on to author numerous textbooks in the burgeoning field. “These texts were bestsellers, selling hundreds of thousands of copies, bringing ‘Calvin College’ to the attention of multitudes nationwide,” said Adams.

Encouraging and enthusiastic

Former students recall Leestma as enthusiastic and encouraging in this new field.

“I recall registration for my sophomore year in 1979,” said Larry Bolhuis ‘82.  “Back then you needed to get a piece of paper signed from a professor before registering for classes. When I entered the room where the professors awaited, Prof. Leestma saw me and motioned me over. He approved my engineering classes but then said that I had done well in the computer classes as a freshman and had shown enthusiasm in those classes. He described the 'brand new and soon to be approved' computer science curriculum and suggested that I would likely do well in that curriculum.  I made my choice within the hour and became a computer science major.

“Through the next three years I was in several classes with professor Leestma and always enjoyed his positive attitude and encouragement of students especially myself.”

Leestma is survived by his wife, Marjory; children Michelle and Rudy Mulder, Sanford and Lori Leestma, Michael and Andrea Leestma; and eight grandchildren.