Logics for Computer Science: Classical and Non-Classical