Principles of concurrent and distributed programming
Principles of concurrent and distributed programming
Concurrent programming
Core Java
Review of animation systems for algorithm understanding
ITiCSE '96 Proceedings of the 1st conference on Integrating technology into computer science education
The Byzantine Generals Problem
ACM Transactions on Programming Languages and Systems (TOPLAS)
DPLab: an environment for distributed programming
ITiCSE '99 Proceedings of the 4th annual SIGCSE/SIGCUE ITiCSE conference on Innovation and technology in computer science education
Distributed algorithms visualisation for educational purposes
ITiCSE '99 Proceedings of the 4th annual SIGCSE/SIGCUE ITiCSE conference on Innovation and technology in computer science education
Java resources for computer science instruction
ACM SIGCUE Outlook - Special issue on the working group reports of the 3rd annual SIGCSE/SIGCUE ITiCSE conference
Elucidate: a tool to aid comprehension of concurrent object oriented execution
Proceedings of the 5th annual SIGCSE/SIGCUE ITiCSEconference on Innovation and technology in computer science education
Java resources for computer science instruction
ITiCSE-WGR '98 Working Group reports of the 3rd annual SIGCSE/SIGCUE ITiCSE conference on Integrating technology into computer science education
Concurrency, objects and visualisation
ACSE '00 Proceedings of the Australasian conference on Computing education
A java toolkit for teaching distributed algorithms
Proceedings of the 7th annual conference on Innovation and technology in computer science education
The computer science teaching center
ACM SIGCSE Bulletin
ThreadMentor: a pedagogical tool for multithreaded programming
Journal on Educational Resources in Computing (JERIC)
Proceedings of the 8th annual conference on Innovation and technology in computer science education
LYDIAN: An extensible educational animation environment for distributed algorithms
Journal on Educational Resources in Computing (JERIC)
Objects never?: well, hardly ever!
Communications of the ACM
Hi-index | 0.02 |
We show how Java can be used to develop portable implementations of distributed algorithms for class demonstrations and laboratory exploration. The programs can be used in two modes: (a) TCP/IP communications over a net, or (b) applet-to-applet communications on a single HTML page. The latter mode is important during program development and can also be used if your lab malfunctions or for homework assignments. Programs were written for four distributed algorithms: Byzantine generals, Ricart-Agrawala mutual exclusion, Dijkstra-Scholten termination and Chandy-Lamport snapshots.