- Ph.D. Educational Organization, Administration, and Policy, University of Buffalo Dissertation: "A Comparative Study of Cognitive and Affective Factors Involved in the Effective Cross-Cultural Transfer of Computer Assisted Instruction"
- M.Div. Trinity Evangelical Divinity School
- B.S. Electrical and Computer Engineering, Clarkson University
For the last few years my passion has been centered on teaching parallel and distributed computing at the undergraduate level. I clearly remember attending a 2009 talk by Dr. Michael Wrinn of Intel, who scolded a room full of academics saying, “Intel is not going back to a single core architecture. The world has gone multi-core, and you better start teaching your students parallel programming!” I was convicted because my own introductory programming classes looked pretty much like the classes I took back in the age of single core processors. It was time to update.
I was the initial recipient of the Intel Microgrant for Teaching Parallelism in the Classroom in 2011. Soon after that, Intel used me as their corporate speaker at the ACM Special Interest Group for Computer Science Education (SIGCSE) for curriculum development. Intel also published my 2013 webinar, “Get Your Entry Level Programming Students Excited about Parallel Programming with Intel® Advisor XE.” I was an invited author in the NSF-sponsored csInParallel project (csInParallel.org), St. Olaf College. This project produces small curricular “nuggets” or “exemplars” that faculty can plug into existing courses to show students parallelism.
I am very excited that Grove City College requires a parallel programming course in the core curriculum. While distributed and parallel computing was made its own separate knowledge area in the 2013 ACM/IEEE Computer Science Curriculum, American academe has been very slow to get on board. Grove City College’s Department of Computer Science is a national leader in this area.
In COMP233 Parallel Programming my students explore shared memory parallelism (OpenMP), distributed memory parallelism (MPI), and just a bit of massively parallel architectures (CUDA and OpenACC). A highlight each semester is when student teams build Beowulf Clusters from computers rescued from the campus surplus stream. While the clusters are small (four quad core machines typically), we can explore the same style of programming used on the world’s biggest computers, like Oak Ridge National Laboratory’s Summit, with its 2.4 million cores. The era of the “free lunch” is over, and improvements in software performance are going to happen because software developers start to build parallel systems.
Outside of class, I have been involved in Wolverine BEST Robotics since 2011. Seeing teams of eager high school students engage in a challenging competition, driving a robot that they constructed from a box of disparate parts in just a few weeks is always a hoot. I value encouraging young folks to consider STEM careers. The BEST Robotics program is ideal for the more rural high schools in our area.
- “Etudes for Parallel Programming Using the Traveling Salesman.” Journal for Computing Sciences in Colleges, spring 2017.
- “HPC/PDC Immunization in the Introductory Computer Science Sequence.” EduHPC Technical Program within the SC14 Supercomputer Conference, New Orleans, November 16-21, 2014.
- “How to Introduce Parallelism into Entry Level Programming Classes.” Intel sponsored curriculum development speaker at SIGCSE 2013 - the 44th ACM Technical Symposium on Computer Science Education, Denver, March 06 - 09, 2013.
- “How Can We Introduce Parallel Programming and HPC into the Undergraduate Curriculum?” with Bryan Learn, Pennsylvania Association of Computer and Information Science Educators (PACISE), 2012 Annual Conference Proceedings, Millersville University, Millersville, PA.
- “A Nifty Way to Introduce Parallelism into the Introductory Programming Sequence” with David Mackay. SC12, Salt Lake City, UT. November 12-15, 2012.