Elements of computability, decidability, and complexity