Two years ago I told you about the Department’s tentative move to use the Computer Algebra System (CAS), Maple, in our calculus sequence. Now, all of our closed labs in Calculus I, II and III are run with Maple and some of us calc instructors use Maple on a regular basis in class to demonstrate a number of key ideas where graphical, symbolic or numerical presentations might help the students “see” the concepts better. In addition, a few of us are using Maple in other mathematics courses, such as Discrete Mathematics, Combinatorics and Experimental Mathematics.
For the past two years I have been using the programming facility of Maple in discrete mathematics. You might ask: why use a CAS at all in a discrete mathematics course? There are at least two good reasons. One, in recent years a lot of effort has been expended by computer science educators on exploring ways to enhance the students’ understanding and appreciation of the role mathematics, especially discrete mathematics, plays in the study of computer science and why it is seen as foundational to that study. For this to happen many argue that instructors need to be intentional about making connections between the mathematics topics the students are studying and the material they are learning in their early computer science courses. And, two, since much of what is taught in CS1 and CS2-type courses revolves around algorithmic problem solving and designing software solutions to problems and, hence, programming, the approach I have taken provides examples and exercises which require my students to use software to think about the mathematics. Computer Algebra Systems do just that by allowing mathematical concepts to be expressed naturally (symbolically, graphically and numerically) as well as algorithmically (via their programming facility).
One of the benefits of having the first course in the computer science program, CS 157, as a pre-requisite for the discrete mathematics course and Calculus I as a co-requisite is that I can assume that the students have a working knowledge of how to program and how to use the CAS aspect of Maple. Thus, without too much effort the students can be brought up to speed in using Maple as a tool to solve discrete math problems and in learning enough of its programming facility to write some interesting programs that do mathematical computations. What follows are three examples. One, the concept of the asymptotic order of a function can be understood more easily if the students can get a visual picture of what is going on--Maple’s graphing facility comes into play here. Second, the students’ understanding of the difference between inductive and deductive reasoning can be enhanced by having them manipulate carefully chosen computer programs written by me--this also leads to another approach to teach mathematical induction. Third, programming projects can be assigned to help the students work through topics, such as solving certain types of recurrence relations in order to analyze the efficiency of recursive algorithms, and applying certain number-theoretic properties to justify the correctness of the RSA Encryption algorithm.
Although I have just scratched the surface in using the power of Maple to solve discrete math problems, it has been a rewarding experience for me and, hopefully, for my students.