Questions concerning Computer Science vs Applied Math / Computational Mathematics

<p>First and foremost I would like to know if the Computation Mathematics degree I am looking at, will prepare me for a career in software/programming.</p>

<p>If that isn't possible, would it be if I minored in Computer Science along with it?</p>

<p>Would it be easy to obtain a Masters in Computer Science after an undergraduate degree in Computational Mathematics? Or does that seem unlikely?</p>

<p>Is it possible to do so vice versa, as in would I be able to obtain a Masters in Computational Math / Applied Math if I got a BS in Computer Science?</p>

<p>Also, which major allows for more flexibility when it comes to types of careers and environment?
Essentially I want a good foundation of software engineering so that I will be able to get a decent entry-level job as a programmer, but I also want a back-up plan that allows me to work in other areas just in case 10 years later I find out that my interests in working for a software company isn't as enticing as it used to be.</p>

<p>Here are the two programs, both at San Jose State University:
I could add a minor to either program if need be...</p>

<p>*<strong><em>B.S. Computer Science Program Requirements</em></strong>*</p>

<p>Required Support Courses</p>

<p>Math 30 and 31 (see note 4 and note 8).......Calculus
Math 32 or 142 or 161A.................. (see note 4)
Math 42..........................Discrete Mathematics
Math 129A............................Linear Algebra I
Phys 50 or 70; 51 or 71..(see note 8).........Physics
One Additional Science Course............(see note 5)
CS 100W (see note 8).......Technical Writing Workshop
Phil 134 (see note 8)......Computers, Ethics, Society</p>

<p>Required Computer Science Courses</p>

<p>CS 46A...........................Intro to Programming
CS 46B.......................Intro to Data Structures
CS 47.......................Intro to Computer Systems
CS 146...................Data Structures & Algorithms
CS 147..........................Computer Architecture
CS 149..............................Operating Systems
CS 151.........................Object-Oriented Design
CS 152..........................Programming Paradigms
CS 154...............Formal Languages & Computability
CS 160...........................Software Engineering
CS 49C or 49J................Programming in C or Java
CS 116B, 123B, 153, 157B, 158B, 161, 167B, or 167C (see note 6)</p>

<p>Elective Computer Science Courses</p>

<p>(courses totaling 12 units to be selected from the following list -- see notes 1 and 9)
CS 72.........................Unix and Unix Utilities
CS 116A....................Intro to Computer Graphics
CS 116B..................Computer Graphics Algorithms
CS 120A..............Lab Electronics for Scientists I
CS 120I.............Lab Electronics for Scientists II
CS 122.................Advanced Programming with Perl
CS 123A..............................Bioinformatics I
CS 123B.............................Bioinformatics II
CS 130............................Windows Programming
CS 134.............Computer Game Design & Programming
Math 142.......................Intro to Combinatorics
CS 143C...........Num Analysis & Scientific Computing
CS 143M...........Num Analysis & Scientific Computing
CS 144.......................Advanced C++ Programming
CS 153....................Concepts of Compiler Design
CS 155...........Intro to Design & Anal of Algorithms
CS 156...............Intro to Artificial Intelligence
CS 157A..........Intro to Database Management Systems
CS 157B................Database Management Systems II
CS 158A.............................Computer Networks
CS 158B...................Computer Network Management
CS 159...................Intro to Parallel Processing
CS 161...............................Software Project
Math 161A........................Applied Statistics I
Math 162................Statistics for Bioinformatics
CS 166...........................Information Security
CS 167A.....................DB2 Fundamentals for z/OS
CS 167B..........DB2 Application Development for z/OS
CS 167C...............DB2 Query Optimization for z/OS
Math 171...........Foundations of Math & Computer Sci
CS 172A....Fundamentals of Unix System Administration
CS 172B....................Unix System Administration
CS 173............Advanced Unix System Administration
CS 174....................Server-Side Web Programming
Math 177.............Linear & Non-Linear Optimization
Math 178........................Mathematical Modeling
Math 179........................Intro to Graph Theory
CS 85A,B,C, 185A,B,C.....................(see note 7)
CS 96, 196..................(requires prior approval)
CS 180, Math 203............(requires prior approval)
CS 180H.................Individual Studies for Honors
CS 180I............................Internship Project</p>

<p>*<strong><em>B.S. Computational Mathematics Program Requirements</em></strong>*</p>

<p>Preparation for the Major </p>

<p>CS 046A Introduction to Programming 4
CS 046B Introduction to Data Structures 4
PHYS 050 General Physics/Mechanics 4
PHYS 051 General Physics/Electricity and Magnetism 4
MATH 100W Technical Writing Workshop Z 3</p>

<p>6 additional upper division units from Math, CS, Science, or Engineering. All of these units can be in MATH 203 or similar applied mathematics projects. The choices must be approved by the Mathematics and Statistics Department. 6</p>

<p>Requirement of the Major</p>

<p>Lower Division Requirements</p>

<p>MATH 031 Calculus II 4
MATH 032 Calculus III 3
MATH 042 Discrete Mathematics 3
MATH 030 Calculus I 3</p>

<p>Upper Division Requirements</p>

<p>MATH 112 Vector Calculus 3
MATH 129A Linear Algebra I 3
MATH 133A Ordinary Differential Equations 3
MATH 133B Partial Differential Equations 3
MATH 138 Complex Variables 3
MATH 143C Numerical Analysis and Scientific Computing 3
MATH 178 Mathematical Modeling 3</p>

<p>Complete one course from:
MATH 131A Introduction to Analysis 3
MATH 132 Advanced Calculus 3</p>

<p>Complete one course from:
MATH 129B Linear Algebra II 3
MATH 134 Dynamical Systems 3
MATH 143M Numerical Analysis and Scientific Computing 3</p>

<p>Complete one course from:
MATH 161A Applied Probability and Statistics I 3
MATH 163 Probability Theory 3</p>

<p>University Electives 6-8</p>

<p>*Appropriate courses from other Science or Engineering Departments may be substituted with Mathematics Department approval.</p>

<p>

Sure it will, but you may be missing out on some things you’d get as a CS major, and vice versa.</p>

<p>

Not necessary; computational math is not an uncommon preparation for software developers, although it’s not the most common.</p>

<p>

Depends on what you want to do research in, but generally, I think this is a pretty reasonable proposition.</p>

<p>

From direct experience, yes, going this direction is fairly easy, provided you take courses which will prepare you for what you want to do research in.</p>

<p>

I’d say they’re pretty similar. CS might be a little broader, but there are so many software opportunities that just about anybody who does well in school and knows how to program can get work somewhere. Top companies will likely not hold a computational math degree against you, and some employers may prefer it.</p>

<p>

Either degree should be fine. I don’t think one or the other will provide you with any special advantage in this regard. Getting a graduate degree of some kind could leave open the possibility of talking yourself into an instructor role at a community college or preparatory school (PhD is usually preferred, but I hear they take some Master’s holders, and it would make sense that this is especially the case in in-demand fields like computer science).</p>

<p>Looking at the courses, it seems like the CS requirements will provide a superior foundation on which to become a practicing software engineer. With 12 hours of electives, you can easily take numerical analysis, mathematical modeling, etc. which you can use as a practicing software engineer. Courses like vector and advanced calculus, differential equations, analysis, etc. are not really as immediately useful for making software… but for being able to speak the language of physical sciences (physics, chemistry, etc.) they are excellent. Based on the courses, I’d probably give the nod to the CS program, and recommend that you spend your elective hours exclusively on computational mathematics courses of interest.</p>

<p>I have been doing software engineering for over 23 years and my undergraduate degree is in Computational Mathematics. A Computational Mathematics degree by itself without taking any additional CS courses after the required CS courses would BARELY qualify you for some entry-level software engineering jobs. You need to take more CS courses.</p>

<p>With my Comp-Math degree, I also used almost all of my available elective credits in CS. Now my situation was different. At my undergraduate alma-mater (Michigan State), the CS department had limited enrollment in the CS program and only admitted students with a 3.3-3.4 GPA. Since I did not have that, I needed an “alternate major” to take CS. Enter the Computational Mathematics degree.
MSU’s Computational Mathematics degree (at that time) required only the introductory programming courses and the data structures course. To get into a graduate CS program, you will need the CS “core” of:</p>

<p>Algorithms (may be combined with Data Structures course)
Data Structures (may be combined with Algorithms course)
Theory/Organization of Programming Languages
Operating Systems</p>

<p>I would also recommend taking the above 4 courses for employment. In addition, given that most software jobs revolve around the manipulation, distribution and storage/retrieval of data, NO CS MAJOR OR SOFTWARE ENGINEERING hopeful should not leave their campus without taking:</p>

<p>Database Systems
Computer Networks</p>

<p>Now to go from CS (undergrad) to a Computational Mathematics graduate program, of course you will need more Math at the undergrad level. Nowadays, most undergrad CS programs only require:</p>

<p>Calculus I
Calculus II
Linear Algebra
Discrete Math/Discrete Structures (sophomore-level course)
Statistics (maybe, depending on school)</p>

<p>For a graduate Computational Mathematics program, you will also need at undergrad level:</p>

<p>Analysis/Real Analysis/Advanced Calculus (the purely theory course at the junior/senior level)
Differential Equations
Numerical Analysis (which may be cross-listed as a CS course at some schools)
Abstract Algebra</p>

<p>Wow, thanks to the both of you for answering all of my questions and concerns.
You both seem very well informed in the fields.</p>

<p>Since both majors could lead to a job as a software developer, I guess my next question would be: Does Computational Mathematics lead to any careers that a Computer Science major would not be able to get into?</p>

<p>I’m not even sure which type of careers Computational Mathematics majors get into besides software development, because that is all I have heard of.</p>

<p>Thanks again, your information is much appreciated.</p>

<p>

At the undergraduate level, I doubt it. Some employers may see it as a plus, some may see it as a minus. Your mileage may vary. After some graduate training, I could see this becoming more of a distinction for employers: odds are that a MS in Computational Math will be writing software, but it will probably be a different kind of software from what a MS in Computer Science writes. That said, CS is somewhat flexible and, with the proper focus and research, CS graduates may even be able to talk themselves into Computational Math jobs.</p>

<p>Really, it depends more on what courses you take and what experience you get. If you can bring skills to the table that an employer wants, that’s good; the more, the better. It’s up to you to decide what skills you want, and if you want the most employable skills, you should look at program requirements and see which one gives you a greater number and/or variety of employable skills. Courses like Real Analysis and Abstract Algebra don’t confer many employable skills, but they might be a great investment if you take them in preparation for other courses.</p>

<p>Long story short, figure out what your curriculum would look like assuming first Computational Math and then assuming Computer Science, and decide which will give you the skill set you want to try to convert into a job. My gut says that the CS curriculum will probably come out slightly ahead in this regard.</p>

<p>That said, you should balance doing what you want with doing what you think will pay off. Both programs probably have good job placement rates, so if you prefer the courses in computational math, any risk associated with that choice might be more than justified.</p>