Concrete Abstract Algebra: From Numbers to Grbner Bases