John Kloosterman

About

John Kloosterman is a teaching faculty member in Computer Science and Engineering at the University of Michigan.

Class Exercises (for students)

Teaching

EECS 485 (Web Systems), W22, W21, W20
EECS 280 (Programming and Data Structures), SP20, SP19, W17
EECS 183 (Elementary Programming Concepts), F22, F21, F20, F19, W19, F18

Press

Fixing the Courses Everyone Loves to Hate
The Chronicle of Higher Education, December 2019
EECS 183 is participating in the University of Michigan Foundational Course Initiative.

EECS 280 Becomes Third Largest Course at U-M
University of Michigan CSE, April 2017

Research

Computer Science Education: I believe that education is a two-way exchange, where learning happens best when I work to understand my students at the same time they work to understand the material. This is difficult with very large (500-1000 student) classes where there is no single reason why students are motivated to take the class and no single reason why students struggle to succeed. Education research is one way to listen to students' needs.

Autonomous vehicle security: Autonomous vehicle software, such as Apollo, is implemented as a distributed system, with multiple modules communicating using message passing. I created tools (published EuroS&P 2020) that can automatically identify vulnerabilities in the ways these modules interact, which developers can use to secure these critical systems.

GPU multi-kernel execution: When multiple kernels are run at the same time on the same GPU, they can often achieve higher throughput than when they are run consecutively, because there are times they have complementary resource requirements. During other times, they can interfere. My work has found resource partitions that limit the impact of interference.

GPU register file design: GPUs need to have hundreds of kilobytes of register file, because so many threads are executing simultaneously. However, not many of these registers are accessed in any given period of time. RegLess (published MICRO 2017) is a technique to save energy using a much smaller register structure that stores only active registers.

GPU memory coalescing: Nearby threads on a GPU tend to access nearby locations in memory, allowing requests to the same cache lines to be merged to increase memory throughput. WarpPool (published MICRO 2015) used a new type of memory locality between loads made by different thread groups to merge more requests.

Undergraduate Research Students

Evani Dalal
Investigating the Opioid Epidemic with Data Science, UROP 2021-22, co-advised with John Muyskens (Washington Post)

Oliver Gao
Investigating the Opioid Epidemic with Data Science, UROP 2021-22, co-advised with John Muyskens (Washington Post)

Dannin Ferrara
Reducing the Cost of Machine Learning for Web Applications, UROP 2018-19

Latifur Khan
Reducing the Cost of Machine Learning for Web Applications, UROP 2018-19

Publications (Google Scholar)

Creating a Community-Focused Lab Section in a Large Computer Science Course
Jule Schatz, Zahra Makki, Elizabeth Mann Levesque, Heather Rypkema, John Kloosterman
ASEE 2022

Poster: Creating a Community-Focused Lab Section in a Large Computer Science Course
Jule Schatz, Zahra Makki, Elizabeth Mann Levesque, Heather Rypkema, John Kloosterman
University of Michigan DEI Mini-Conference, April 2022. Best Poster Award

AVGuardian: Detecting and Mitigating Publish-Subscribe Overprivilege for Autonomous Vehicle Systems
David Ke Hong, John Kloosterman, Yuqi Jin, Yulong Cao, Qi Alfred Chen, Scott Mahlke, Z. Morley Mao
IEEE EuroS&P 2020

Apparatus and method for processing thread groups
John Kloosterman, Jonathan Beaumont, Davoud Anoushe Jamshidi, Jonathan Bailey, Trevor Mudge, Scott Mahlke
US Patent 10,585,701

Scratch That (But Cache This): A Hybrid Register Cache / Scratchpad for GPUs
Jonathan Bailey, John Kloosterman, Scott Mahlke
CASES 2018

RegLess: Just-in-Time Operand Staging for GPUs
John Kloosterman, Jonathan Beaumont, D. Anoushe Jamshidi, Jonathan Bailey, Trevor Mudge, Scott Mahlke
MICRO 2017

WarpPool: Sharing Requests with Inter-Warp Coalescing for Throughput Processors
John Kloosterman, Jonathan Beaumont, Mick Wollman, Ankit Sethia, Ron Dreslinski, Trevor Mudge, and Scott Mahlke
MICRO 2015