A Science of Concurrent Programs (final draft)