Texts‎ > ‎

Requirements of a Computer Science Major

Alexander Gruber on the requirements of a Computer Science major from Stack Exchange Mathematics (CC BY-SA):

I would say that you want to focus on what brings you success in your goals for getting a computer science degree.

If you look at a CS program, there are some commonalities, but also differences in how much math they want you to learn. Do you have a specific program in mind? Did you review their prerequisites and the courses you will be required to take? Are you thinking of going to graduate school too as there may be different considerations?

The typical math classes required for a CS major are (check the university/college you are thinking about and make sure you understand their requirements) as follows.

  • Discrete Math: Topics include combinatorics, number theory, and graph theory with an emphasis on creative problem solving and learning to read and write rigorous proofs.
  • Computability and Logic: An introduction to some of the mathematical foundations of computer science, particularly logic, automata, and computability theory.
  • Algorithms: Algorithm design, computer implementation, and analysis of efficiency. Discrete structures, sorting and searching, time and space complexity, and topics selected from algorithms for arithmetic circuits, sorting networks, parallel algorithms, computational geometry, parsing, and pattern-matching.
  • Mathematical Analysis I: Analysis of the real numbers, and an introduction to writing and communicating mathematics well. Topics include properties of the rational and the real number fields, the least upper bound property, induction, countable sets, metric spaces, limit points, compactness, connectedness, careful treatment of sequences and series, functions, differentiation and the mean value theorem, and an introduction to sequences of functions.
  • Numerical Analysis: An introduction to the analysis and computer implementation of basic numerical techniques. Solution of linear equations, eigenvalue problems, local and global methods for non-linear equations, interpolation, approximate integration (quadrature), and numerical solutions to ordinary differential equations.
  • Scientific Computing: Computational techniques applied to problems in the sciences and engineering. Modeling of physical problems, computer implementation, analysis of results; use of mathematical software; numerical methods chosen from: solutions of linear and nonlinear algebraic equations, solutions of ordinary and partial differential equations, finite elements, linear programming, optimization algorithms and fast-Fourier transforms.
  • Abstract Algebra I: Groups, rings, fields and additional topics. Topics in group theory include groups, subgroups, quotient groups, Lagrange's theorem, symmetry groups, and the isomorphism theorems. Topics in Ring theory include Euclidean domains, PIDs, UFDs, fields, polynomial rings, ideal theory, and the isomorphism theorems. In recent years, additional topics have included the Sylow theorems, group actions, modules, representations, and introductory category theory.
Some CS majors are doing dual CS/Math and additional math courses like Probability, Analysis, Complex Variables, Differential Equations, Partial Differential Equations may also be required.

As for books, I would recommend perusing some of the wonderful MSE responses, for example:
You mentioned this, but I think it is important. You may want to go through entire courses using opencourseware. For example, MIT. See the OE Consortium for many more institutions. The goal of this is to gauge where you are with following lectures and testing your understanding.

So, if you look at the specific program you are interested in, I would recommend looking at the math courses in totality (including if you want graduate), checking their required books and looking to see where you stand with all of it. Recall, these programs are also heavy into programming and that is a lot of work, so make sure you are ready for both!