Algebraic methods in Combinatorics