<p>You should look for the following curriculum in a CS program. If the program does not resemble the following, then take the necessary extra courses to fill in the gaps.</p>
<p>Math Requirements
- Calculus I
- Calculus II
- Linear Algebra
- Probability & Statistics for Scientists/Engineers (Calculus-based)</p>
<p>Computer Science Requirements
- Introductory Programming I (C++ or Java, depending on school)
- Introductory Programming II (C++ or Java, depending on school)
- Discrete Mathematical Structures (may be offered also by Math department)
- Computer Organization (may or may not include Assembly Language)
- Algorithms (may be part of combined Algorithms & Data Structures course)
- Data Structures (may be part of combined Algorithms & Data Structures course)
- Organization of Programming Languages (surveys different languages)
- Operating Systems</p>
<p>Computer Science Electives
- Computer Networks (the reason to take Probability & Statistics)
- Database Systems
- Computer Graphics (where Linear Algebra comes into play)
- Cryptology (may need additional math courses to take this course)
- Combinatorics (may need additional math courses to take this course)
- Graph Theory (may need additional math courses to take this course)
- Numerical Analysis (may need additional math courses to take this course)
- Information Assurance
- Quantum Computing (may need additional Physics courses to take this course)
- Parallel Computing (may need additional math courses to take this course)
- Computer Architecture (may be required at some schools)
- Software Engineering</p>
<p>The KEY is that you get that 4-course core of Algorithms, Data Structures, Organization of Programming Languages and Operating Systems. It’s not a complete CS program without those 4 courses and just about every graduate CS program will want you to have these courses coming in or they will make you take the graduate versions of them anyway .</p>
<p>As for the CS electives, I personally would not leave that campus without Database and Network courses…as most software jobs are associated to the manipulation (programming), distribution (networks) and storage/retrieval of data (databases) than all run over an operating system.</p>