Concrete Abstract Algebra: From Numbers to Gröbner Bases