The authors present hypersequential programming, a new method that eas
es the difficulty of concurrent programming and makes the concurrent p
rogram highly reliable. The difficulty of concurrent programming is du
e mainly to its nondeterminism. The authors classify nondeterminism in
to three types: intended, harmful, and persistant. In traditional conc
urrent programming, a programmer first designs and implements programs
so as to maximize concurrency, which may include all three types of n
ondeterminism. She then tries to detect harmful nondeterministic behav
ior by testing and debugging them. However, removing all harmful nonde
terministic behavior is actually very difficult. Hypersequential progr
amming, on the other hand, first serializes the concurrent program to
remove all types of nondeterminism, and then the programmer tests and
debugs it as a sequential program. Finally, it is parallelized by rest
oring only intended and persistent nondeterminism. Hypersequential pro
gramming can develop a highly reliable concurrent program, because the
injection of harmful nondeterminism is precluded. In this article, th
e authors also present a simple embodiment of hypersequential programm
ing using Petri nets.