essential logic for computer science solutions