"A three pronged approach to teaching undergraduate operating systems," ACM SIGOPS Operating Systems Review, vol. 42, no. 6, October 2008, pp. 93-100.
"A Java Execution simulator," Proc. 38th SIGCSE Technical Symposium on Computer Science Education, 2007, pp. 536-540.
"A UNIX concurrent I/O simulator," Proc. 37th SIGCSE Technical Symposium on Computer Science Education, 2006, pp. 303-307.
"An address translation simulator," Proc. 36th SIGCSE Technical Symposium on Computer Science Education, 2005, pp. 515-519.
"A disk head scheduling simulator," Proc. 35th SIGCSE Technical Symposium on Computer Science Education, 2004, pp. 325-329.
"Using remote logging for teaching concurrency," Proc. 34th SIGCSE Technical Symposium on Computer Science Education, 2003, pp. 177-181.
"Exploration of Process Interaction in Operating Systems: A Pipe-Fork Simulator," Proc. 33rd SIGCSE Technical Symposium on Computer Science Education, 2002, pp. 351-355.
"Starving Philosophers: Experimentation with Monitor Synchronization," Proc. 32st SIGCSE Technical Symposium on Computer Science Education, 2001, pp. 317-321.
"Visualization of splitting and merging processes," J. Visual Languages and Computing, vol. 11, No. 6, 2000 pp 593-614. (with K. Robbins and C. Jeffrey)
"Experimentation with Bounded Buffer Synchronization Proc. 31st SIGCSE Technical Symposium on Computer Science Education, 2000, pp. 311-315.
"Remote Logging in Java using Jeli: A Facility to Enhance Development of Accessible Educaitonal Software Proc. 31st SIGCSE Technical Symposium on Computer Science Education, 2000, pp. 114-118.
"Empirical Exploration in Undergraduate Operating Systems," Proc. 30th SIGCSE Technical Symposium on Computer Science Education, 1999, pp. 311-315, (with K. Robbins)
"A microprogramming Animation," IEEE Transactions on Education, vol. 41, No. 4, November, 1998 pp 293-300. (with K. Robbins)
"Introducing empirical investigation in undergraduate operating systems," Operating Systems Review, Oct. 1998 pp. 77-80.
"Web-based dynamic information visualization using exact-time animation," Proceedings of the 13th Annual ACM Symposium on Applied Computing., 1998 pp. 744-751, (with K. Robbins).
"The JOTSA Animation Environment," Thirty-First Hawaii Intl. Conf. on System Sciences, Jan. 1998, pp. 655-664.
Practical Unix Programming: A Guide to Concurrency, Communication, and Multiprocessing, Prentice Hall, 1996 (with K. Robbins).
"Buffered banks in multiprocessor systems," IEEE Trans. on Computers 1995, 518-530, (with K. Robbins).
"Relationship between Average and Real Memory Behavior," Journal of Supercomputing, 1994, 209-232 (with K. Robbins).
"Ethercom: A study of audio processes and synchronization," Proc. 24th SIGCSE Technical Symposium on Computer Science Education, 1993, pp. 218-222, (with R. Rybacki and K. Robbins).
"Dynamic behavior of memory reference streams for perfect club benchmarks," Proc. 1992 Intl. Conf. on Parallel Processing, 1992, 48-52, (with K. Robbins).
"Bus Conflicts for Logical Memory Banks on a Cray Y-MP Type Processor System," Proc. 1991 Intl. Conf. on Parallel Processing, 1991, 21-21, (with K. Robbins).
"Electing a leader on a hypercube," Proc. PARABASE-90, Intl. Conf. on Databases, Parallel Architectures, and Their Applications, 1990, 469-471, (with K. Robbins).
The Cray X-MP: A Case Study in Pipelined Architecture and Vector processing, Springer-Verlag Lecture Notes in Computer Science #374, 1989, (with K. Robbins).