Synthesis Lectures on Distributed Computing Theory