Some familiarity with the following concepts will also be helpful: linear algebra, abstract algebra (including algebraic objects such as vector spaces, groups, and rings); basic complexity classes ...