Principles of programming languages question bank with answers