Principles of computer science II