Computer Science and...Math or Info. Sys.?

<p>I am going to be going to a private liberal arts university for computer science in the fall. The school has a good name recognition through the midwest, but not anywhere else. It is often associated with its business and law schools. </p>

<p>Computer Science here is a smaller major, and not as intense (because of the requirements of the major-not the actual work). It is in the same department as math, therefore I could easily double major in Math/CS.</p>

<p>Information systems falls in the business school, which is good because the business school is huge here and has good reputation. However, that means I would need to take core business classes and core computer science classes. My course load here would not necessarily be more difficult but I would have many more classes.</p>

<p>My brother works in Marketing in Silicon Valley, and he is urging me to take the Math route. He feels math and CS would be a very respectable combo. He also says since I want to do freelance work while in college, this combo might allow me a little extra room rather than tacking on an entirely new major (like Information Systems). I agree with him completely on how the math is respected, but honestly will I be needing it if I don't go on to grad. school? I plan to enter the work force right away, and eventually do freelance or start my own business. I don't know if knowing tons of advanced math will really help me in this path. On the other hand the Info. Systems major will force me to take a lot of business classes, and you can really never go wrong with knowing business concepts as a programmer. However, a friend told me that if I ever wanted to get more in to the business technical side of things rather than pure programming, I could easily get an MBA and then be EXTREMELY valuable. So my question is, should I pick up the math second major just because it will make me more employable and give me better problem solving skills? My history with math is sort of mixed, I really love it because it is so logical and that is why I love programming/CS. I also love applied math, however when it get extremely theoretical I lose interest (although I have heard college level math is taught completely different so maybe I will like it?) Gahhhh I am rambling on, so what are your suggestions?</p>

<p>Depending on your school, your upper-level math courses could be courses that relate directly to computer science, therefore your “tons of math” are actually CS electives. Here are some:</p>

<p>Abstract Algebra - good to take before taking a cryptology course
Number Theory - good to take before taking a cryptology course
Cryptology
Numerical Analysis
Numerical Linear Algebra
Optimization/Operations Research
Combinatorics
Graph Theory
Statistical Computing (also called Computational Statistics)</p>

<p>Personally, I selected Numerical Analysis, Numerical Linear Algebra, Optimization, Operations Research, Combinatorics and Graph Theory in my Math/CS undergrad program.</p>

<p>Why don’t you just do CS, and take some interesting applied math classes as electives, and avoid all the “useless” theoretical/proof math classes.</p>

<p>That extra math degree is not going to give you much of a boost for CS jobs. It’s not like - Oh, this guy has a CS degree AND a math degree, I definitely should hire him over the guy with a CS degree.</p>

<p>There are “useless” CS courses also. I can make a claim that the non-CS grad with coursework in:</p>

<p>Operating Systems
Database Systems
Computer Networks
Scientific Computing
Information Assurance
Cryptology
Advanced Object-Oriented Programming</p>

<p>Can be more appealing to employers than the CS grad who took Automata Theory, Compiler Design or any other theoretical CS course.</p>

<p>The KEY if choosing math as your primary degree is to choose applied math and/or a B.A.-version of the math degree to allow maximum CS course selection and reduce theoretical math courses.</p>

<p>Drew, great question, really thoughtful. I’m gonna borrow the best of globaltraveller and terenc. You should focus on your CS degree, and cherry pick courses in math and business. If you take enough to fulfill a second major, great, but even if you don’t, you’ll have a CS degree and a nice transcript. </p>

<p>The subjects in post 2 are all worth considering. Number theory might need the least prerequisite math and is really cool stuff. It would be considered “pure” math, but big deal. It’s certainly “applicable” math. If you do take lower division elementary linear alg, then numerical linear alg is great, but at most schools numerical lin alg is a second course in numerical anal.</p>

<p>I think the distinction between pure and applied should be de-emphasized. You will benefit by some courses considered “discrete”, be they pure or applied.</p>

<p>

</p>

<p>I actually used compiler design knowledge in more than one job (tasks or projects parsing input languages), though it is a less common need than some others. Language and automata theory is not all that useful in industry by itself, but it is typically a low workload course that is good to take before compiler design if you do decide to take both.</p>

<p>Algorithms and complexity is useful general knowledge, but it is probably a required course anyway (and it is typically a low workload course compared to CS courses with programming assignments).</p>

<p>Beyond that, principles of operating systems, networks, databases, and security/cryptography are likely to be encountered in industry. An overview introductory software engineering course is also likely helpful (a several course sequence is likely to be much less value-added for the amount of time spent).</p>

<p>Other courses may be useful more in specific areas of application than in general (e.g. game developers may want to take graphics, artificial intelligence, and user interfaces).</p>

<p>I agree with ucbalumnus. I was required to take 2 compiler construction courses, and they were easily two of the most useful courses I took as an undergrad CS major. It’s not that I’ve ever had to write a compiler as a software engineer, but it helped me understand how compilers work, how languages are implemented, and how to write efficient code. Every time I’m confronted with a strange compiler error, instead of getting confounded, I can fall back to the knowledge I gained in those compiler courses to help me figure out what’s going on.</p>

<p>A few years ago, I worked a few freelance programming jobs on the side, and from my experience, the vast majority of freelance programming jobs were of the “build me a web app” or “build me a mobile app” variety. Those kinds of jobs mostly require familiarity with the newest technologies, and I doubt you’ll find a gig where a deeper math background will give you much of an advantage. BTW, I gave up on freelance programming gigs because A) it was too time consuming reading through job postings and bidding on them, and B) most of the “employers” looking for freelance programmers don’t know what the heck they’re talking about. You’ll find guys who are like, “build me a web site with social networking, flash games, a forum, shopping cart, etc… oh, and my budget is $500”. I even had one guy who wanted me to implement his algorithm for predicting the California lottery numbers (no joke). I spent about half an hour arguing with him, trying to convince him that he was an idiot. Needless to say, I didn’t get the job.</p>