Today’s guest blogger is Kenrick Mock, Associate Professor of Computer Science from the University of Alaska Anchorage. Kenrick writes a blog called Teaching, Technology, and Learning.

As a computer science instructor sometimes a student will ask me why math is required for a CS degree. At the University if Alaska Anchorage we require Calc I, Calc II, and discrete math for all of our Bachelor of Science CS majors. I think one of the reasons for this question is that there really isn’t much direct math content in the introductory CS courses aside from the occasional algebraic equation and an understanding of exponents and logarithms for the data structures course. Nevertheless, I think one of the misconceptions that students have is they equate **computer programming** with **computer science**. It is possible to be an excellent programmer with only basic math skills (one example is the Information Systems degree) but computer science is more concerned with the **science **behind the construction of hardware and software systems. This scientific foundation is based on mathematics. With this in mind, I’ve outlined below several ways that math is important to a budding computer scientist as he or she works their way through a CS degree.

**1. Mathematical Maturity and Problem Solving**

Solving this problem requires more than just understanding what a loop does and how to write if-then-else statements. The student must know how to break this problem up into appropriate algorithmic steps so that a program can be written to solve each step. This type of problem solving is similar to algebraic word problems given in math classes, and some CS education researchers have suggested that students that struggle with planning and problem solving in math also struggle in CS classes. More directly related to programming, many programming languages are based on functions, a concept similar to mathematical functions. Similarly, the concept of variables and variable manipulation is also closely related to mathematical variables.

**2. Computer Hardware and Low-Level Software**

**3. Design and Analysis of Algorithms**

*N*items using the Selection Sort algorithm requires a number of steps proportional to

*N*

*2*but if the Heapsort algorithm is used then the number of steps required is proportional to

*N*Log*

*2*

*(N)*. This is referred to as the

*runtime*of the algorithm. With a large list of items the difference is significant; Heapsort will run much faster. While an understanding of exponents and logarithms is all that is necessary to get the big picture, determining the runtime requires an understanding of recursion and the ability to solve summations. Here’s a sample summation that describes the runtime of one algorithm:

*n*steps.

**4. Computer Theory**

**5. Elective Specializations**

**6. Computer Graphics**

**7. Conclusion**

**Possibly Related Posts:**

- Elaborations for Creative Thinking in STEM
- Learning Math is Not a Spectator Sport
- Recorded Webinar: Teaching Math in 2020
- AMATYC Keynote Notes: Challenge and Curiosity
- AMATYC Keynote Notes: Interaction and Impasse