CS and Math, while beneficial to each other, are separate. Sure, you can learn to code on your own, but the majority of what you’d take as a math major won’t be applicable to CS. You would also be missing out on the theory of CS and wouldn’t understand what is going on on a lower level.
I’m a sophomore math and CS double major (BA) at an LAC. I’m ahead in terms of sequence, however, and also am a grader for CS, so I know a lot about many of the courses. So I can give you an overview over my academic plan in terms of my majors. I want to go into cryptography/cryptanalysis, which is an intersection of both, so my electives are tailored towards background needed for that. I should note that there are some things that aren’t typical about my school, since we are an LAC. Many schools require complex analysis and diff eq for math majors and operating systems for CS, which are electives for us.
My CS major has a lot of coding for the beginning and intermediate classes, but once you move above there, some of the courses are more theory or math courses. It varies greatly based on what electives you choose.
Both require:
-Intro to Computing with lab, which is basic java and an intro to program. I actually took the equivalent at a CC in high school. Lots of coding in this one. I’m actually the grader for one of the sections this semester.
-Calc 1. I took AP calc BC so I’m not sure how heavy they are at my university.
-Linear Algebra. Took this last fall. What can I say, it’s a math course. It’s relatively straight forward; I don’t think most of the CS people had a problem with it. I should note that the prereq for the course is either Calc 2 or Discrete Structures (see below), so you do NOT have to take Calc 2 as a CS major.
Our CS Major also requires:
-Data Structures with lab. Very, very code heavy. Covers basic data structures such as linked lists, vectors, bags, heaps, and trees, and also more advanced topics such as recursion . Done in Java. Took this last fall and was the grader for the course last semester.
-Discrete Structures for Computing with lab. Took last semester. Despite the name, is actually more a math course. Not much coding at all, but coding done in Java and some work done with LaTeX. It’s a very dumbed down version of Fundamentals of Abstract Math (see below). Covers very basic logic, very basic proof techniques (direct, contraposition, contradiction, induction), basic set theory, and basic combinatorics and probability,
-Software Systems Development. Currently taking. Lots of coding (no tests or quizzes). Learn C/C++, how to use UNIX through terminal/command line, then second part of course is software systems development.
-Computer Organization. Currently taking. Very code heavy. What most schools call Computer Architecture. Learn Instruction Set Architecture, basics of processors, MIPS Assembly, etc.
-Algorithms. Plan on taking next semester. It’s more a math class.
-Design and Implementation of Programming languages. Senior course. I’ve heard that this course is a lot of math and coding.
-Three 300-level CS electives, of which I am planning on taking database systems (decent amount of coding), intro to compiler construction (decent amount of coding), computer security w/lab (decent amount of coding), and I’m trying to fit in Theory of Computation (essentially a math class; probably won’t fit though).
Our Math Major also requires:
-Calc 2. Took AP Calc BC.
-Multivariate Calculus. Took in HS.
-Fundamentals of Abstract Math. Took last semester. Has Linear algebra as a prereq. Covers basic logic, proof techniques (same as Dicrete, plus strong induction, both with harder proofs), set theory, basic group, ring, and field theory.
-Abstract Algebra 1
-Real Analysis 1. This is actually cross registered with CS and can be taken as a CS elective, but this is not an option if you’re a math major too, since you need it for math credit.
-four 300-level math electives, of which I am planning on taking Numerical Analysis, Probability, Coding Theory, Number Theory (currently taking), and Mathematical Statistics.