Alchemista is largely correct in that setting up a function between the two given sets is the most parsimonious way to go about such a proof. However, you don't really need a bijection, in fact, a surjection with the natural numbers as the image or an injection with the natural numbers as the preimage would be sufficient. I'm having some trouble interpreting your proof, from what I see, you are mapping a n-tuple of integer coefficients to one natural number. But I can't quite understand what method you are using to map. Honestly, this method will only work for finite term polynomials (which i know is the objective of the assignment) but a mathematician must always work for maximum generalizability. If you start working with arbitrarily number term polynomials, this proof method will fail as Cantor's diagonal method can be used to prove that indeed the cardinality of such polynomials is uncountable. When finding a surjection between a given set and the natural numbers, the function f(x,y,z..) = 2^x(3^y)(5^z)... with each base a prime and each power a member of the set. The fundamental theorem of arithmetic will guarentee that this is a bijection (think unique prime factoring) or course if one is using a general countable set that is not the natural numbers a unique prime factorization is not guarenteed so stick with the natural numbers.