The purpose of this course is to acquaint the student with several discrete mathematical structures and theories that bear relevance to Computer Science. These include sets, relations, functions, matrices, and graphs, groups, counting techniques, mathematical logic and Boolean algebra. This course also equips the student with mathematical tools and analytical techniques for theorem proving and problem solving.