Carroll Morgan (computer scientist)

Charles "Carroll" Morgan (born 1952) is an American computer scientist who moved to Australia in his early teens. He completed his education there (high school, university, several years in industry), including a Doctor of Philosophy (Ph.D.) degree from the University of Sydney, and then moved to the United Kingdom in the early 1980s. In 2000, he returned to Australia.
During the 1980s and 1990s, Morgan was based at the Oxford University Computing Laboratory in England as a researcher and lecturer working in the area of formal methods, and a Fellow of Pembroke College. Having been influenced by the Z notation of Jean-Raymond Abrial, he authored "Programming from Specifications" as an attempt to combine the high-level specification aspects of Z, with the rigorous computer program derivation methods of Edsger W. Dijkstra. His treatment concentrated on elementary program constructs to make the material accessible to undergraduates in their early years. Some of the ideas there were later incorporated as elements of the B-Method by Abrial, when Abrial returned in Oxford in the last half of the 1980s.
Together with Annabelle McIver, Morgan later authored "Abstraction, Refinement and Proof for Probabilistic Systems", in which the same themes were pursued for probabilistic programs.
Morgan is now a professor in the School of Computer Science and Engineering at the University of New South Wales, and a Senior Principal Researcher at Trustworthy Systems, part of CSIRO's Data61, both in Australia. His main research interests are probabilistic models for computer security and concurrency. He is a known proponent of a formalized approach to program development called the refinement calculus. He has authored many papers.
He is involved with developing international standards in programming and informatics, as an active member of several International Federation for Information Processing (IFIP) working groups, including IFIP Working Group 2.1 on Algorithmic Languages and Calculi, which specified, maintains, and supports the programming languages ALGOL 60 and ALGOL 68.