Computer Science Principles by Kevin Hare