, 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); })(); Summing up a good math struggle - News & Stories | 鶹

Skip to main content

Spark

Summing up a good math struggle

Tue, Dec 01, 2020

Kevin Dykema ’95 always knew he wanted to be a teacher, and he’s now part of an author team that wrote a book to teach teachers. It’s called Productive Math Struggle: A 6-Point Action Plan for Fostering Perseverance.

We argue that persevering through struggle is key to truly understanding math,” said Dykema, who teaches eighth grade math at Mattawan Middle School in Mattawan, Michigan. “As a society, we value the role of struggle in learning many things, like how to swim, ride a bike, or drive. We should also value the role of productively struggling in learning math.”

Learning to persevere through struggles in math can translate into other areas in life. “It’s through persevering that you can truly learn a skill,” he said.

One thing that’s surprising to hear from a math teacher: Math is not only about getting the right answer. “Math teachers don’t—or shouldn’t—just care about getting the right answer,” Dykema said. “It is the thought process that is involved. We recognize there may be many ways to find the answer and want students to be able to justify their reasoning. The ability to explain your reasoning is such a crucial one in order to be a productive member in society.”

If you’re not a math teacher, but trying to help a child with math homework, Dykema has advice: “Have your kids explain their thinking rather than just memorize a set of steps. Being able to justify what you are doing is such a crucial skill to learn. Try not to express your dislike of math—or your perceived inability to do math—to your kids.”