## The Role of Linear Algebra in the Computer Science Curriculum*

**May 1, 2013**

As the field of computer science has expanded to touch almost every facet of our lives, the computer science curriculum is under enormous pressure to deliver a rigorous core while also allowing students to follow their interests along the many diverse and productive paths offered by the discipline.

At the same time, the growth of science and engineering disciplines has been accompanied by expanded use of mathematics, as new mathematical problems are encountered and new mathematical skills are required. In this respect, linear algebra has come to play a particularly significant role in many important computer science undertakings. A few well-known examples are Internet search, graph analysis, machine learning, graphics, bioinformatics, scientific computing, data mining, computer vision, speech recognition, compilers, and parallel computing.

The broad utility of linear algebra in computer science reflects deep connections arising from the discrete nature of matrix mathematics and digital technology.**Mathematics in the Computer Science Curriculum**

The ACM/IEEE task force identified three specific mathematical subjects as core to computer science: calculus, differential equations, and linear algebra. In addition to these courses, many computer science curricula require statistics and discrete mathematics. At our own institutions, requirements include the following:

Algorithms I & II, AI; Calculus I, Discrete

Math OR Probability, Linear Algebra OR

Calculus II

Algorithms I; Calculus I & II, Linear

Algebra OR Physics II

Algorithms I & II; Calculus I & II & III,

Probability, Linear Algebra

Algorithms I, Discrete Math; Calculus I &

II, Statistics, Linear Algebra OR Calculus III

Algorithms I, Discrete Math; Calculus I

Algorithms I, Discrete Math; Calculus I & II,

Statistics, Linear Algebra

Algorithms I, Discrete Math; Linear Algebra

Algorithms I, Discrete Math; Calculus I & II

& III, Statistics, Linear Algebra

Algorithms I, Discrete Math; Calculus I & II,

Statistics, Linear Algebra

Algorithms I, Discrete Math; Calculus I & II

& III, Linear Algebra

The above sample is not a complete survey of computer science curricula; nevertheless, we can make a few broad observations:

■ Linear algebra is required in about half of the computer science curricula and is optional or not required in the other half.

■ Linear algebra comes near the end of the mathematics sequence (usually following calculus).

Furthermore, we can infer that:

■ Computer science courses cannot reliably assume that their students have an understanding of linear algebra.

■ Linear algebra courses can reliably assume that their students have an understanding of calculus.

Based on these observations, we have a variety of recommendations to offer with regard to the role of linear algebra in the computer science curriculum.**Recommendations**

The following recommendations represent the views of the majority of contributors. *Computer Science Recommendations***CS1** Encourage that computer science students be made more aware of the importance of linear algebra in various areas of computer science (e.g., Internet search, computer graphics, and machine learning).**CS2** Encourage the inclusion of linear algebra in computer science theory, algorithms, and data-structures courses (e.g., matrix multiply algorithms, adjacency matrix data structures, and SVD data analysis).**CS3** Encourage making linear algebra a requirement for computer science majors, particularly those who are interested in advanced study.

Mathematics Recommendations**MA1** Encourage the inclusion of common computer science examples in linear algebra classes (e.g., graph analysis, 3D transformations, and speech recognition).**MA2** Encourage the use of software in linear algebra classes to satisfy computer science "second language" goals (e.g., Python, R, or Matlab).**MA3** Encourage that a version of linear algebra be taught earlier without a calculus prerequisite.

*This article is a slightly edited version of a position paper submitted to the joint ACM/IEEE task force Computer Science Curricula 2013. The authors are Jeremy Kepner (chair), MIT; Tim Davis, University of Florida; James Demmel, UC Berkeley; Alan Edelman, MIT; Howard Elman, University of Maryland; John Gilbert, UC Santa Barbara; Michael Heath, University of Illinois; Dianne O'Leary, University of Maryland; Michael Overton, Courant Institute, New York University; Yousef Saad, University of Minnesota; Ahmed Sameh, Purdue University; Michael Stonebraker, MIT; Gilbert Strang, MIT; Robert van de Geijn, University of Texas; Charles Van Loan, Cornell University; and Margaret Wright, Courant Institute.