Mathematical structures for computer science