We have integrated computer programming instruction into the required courses of our mathematics major. Our majors take a sequence of four courses in their first 2 years, each of which is paired with a weekly 75-minute computer lab period that has a dual purpose of both computationally exploring the mathematical concepts from the lecture portion of the course, while simultaneously teaching programming fundamentals. Building on this foundation, we give significant programming assignments to our upper-division students, requiring them to regularly use and apply their programming skills to investigate the mathematical topics.