familiarity with constructing proofs (e.g., having taken an Algebra/Linear Algebra/Analysis course in the mathematics department)

familiarity with programming, ideally in a functional language (such as Scala, Haskell, OCaml or Idris).

The goal of this course is to use computers to address various
questions in Topology and Geometry, with an emphasis on arriving at
rigorous proofs. The course will consist primarily of projects which will be
contributions to open source software written in the scala programming language.