<p>I just finished reading this</a> thread. The emphasis on mathematical rigor and proof in CS really interests me. I have a few questions for anyone who majored in CS or a related field:</p>
<p>1) Is the intensely theoretical side of computer science marketable to employers? In other words, can one get a job more focused on theory than rote programming? I'm interested in R&D-type areas and would be likely be interested in a MS or PhD, if that helps.</p>
<p>2) Identifying patterns and extending them to discover something new is probably my favorite thing to do. I like areas of mathematics (number theory, series, etc.), chemistry, and physics that involve this kind of pattern identification. Is this a good skill for a CS major?</p>
<p>3) I am a fairly kinetic thinker - the best way for me to solve a problem is with a large whiteboard and a box of markers. Moving around and writing things out helps me think, and I have a good deal of trouble finding clever solutions to programming problems within an editor or IDE. This is actually what scared me off of CS at first - I would not be productive coding all day on a computer. Are CS problems often solved when written out by hand?</p>
<p>I appreciate any advice you can give me.</p>
<p>EDIT: A brief bit of background: I'm a high school junior with mediocre programming experience (Perl, C++, some Python), and I am considering colleges such as U Minnesota, UT-Austin, Cornell, and UMich (as well as MIT as a super-reach).</p>
<p>MS and PhD graduates in CS with experience in theory and foundations (complexity, algorithms, mathematics, languages, etc.) are usually preferred by companies like Google, Microsoft, etc. for R&D jobs in CS/SE, or so I’ve heard.</p>
<p>Don’t think of CS as an isolated field but more as an abstraction of mathematics, albeit with a much more complicated tool system to solve for problems. Given that, it’s not uncommon for people to prototype without using the computer. To be honest, it’s often more effective to write algorithmic prototypes on a piece (or pieces) of paper rather than delving straight into the code.</p>
<p>Wow, that was fast. Would a math major with a concentration in CS or scientific computing (or a CS minor) stand a good chance at CS PhD/thesis MS programs?</p>
<p>Haha, I wouldn’t necessarily know that yet as I too am still in high school (although I have done several contracts, none of which were mathematically oriented, but my personal pet projects usually have intensive usage of discrete mathematics). However from the course requirement of my prospective college (which is in your list), a rather mathematically intensive background is necessary to affiliate with the CS field, and by extrapolation, even higher levels of specialization.</p>
<p>“Would a math major with a concentration in CS or scientific computing (or a CS minor) stand a good chance at CS PhD/thesis MS programs?”</p>
<p>Well…allow this Computational Mathematics major (undergrad) answer that. The answer is YES!</p>
<p>Although, I went the M.S. Engineering route, I could have (well, I don’t about the grades, lol) attended M.S. programs in CS with a Scientific Programming emphasis. NYU and U-Maryland actually have M.S. in Scientific Programming. Other schools may call the program Computational Science or Computational Engineering. U-Illinois has both a M.S. Computer Science program and M.S. Applied Mathematics program with so many cross-listed courses that you could take the same 10 or 11 graduate courses and they could earn you EITHER and MSCS or MS Applied Math (not both)…same courses.</p>
<p>As an undergrad, you still will need courses in:</p>
<ul>
<li>Programming Languages</li>
<li>Operating Systems</li>
<li>Analysis of Algorithms</li>
</ul>
<p>Well, whether you can get into and do well in a graduate CS program depends on the coursework you’ve done. I think it’s possible for a math major to take courses which would make such a thing possible.</p>
<p>Well sure. Math is a flexible degree program in its own right, and mathematics is the basis for both Physics and CS, and statistics is used in practically every scientific field.</p>
<p>This depends on the employer, of course. If you follow up with graduate study you will find jobs that exercise the theoretical aspects of CS. This would likely be work in academia, government research, or industrial research.</p>
<p>
</p>
<p>This is actually the core of computer science, in my opinion. Even if you don’t intend to follow traditional career avenues in computing, CS is a fantastic major to refine your ability to think and apply knowledge creatively. You will find this skill useful in any field, and you will certainly develop it if you major in CS.</p>
<p>
</p>
<p>I’m the same way - I need to draw diagrams and pictures to really understand something. You shouldn’t be scared by this, as it’s very common to do this in both theory and programming. Actually, I don’t know any good programmers who sit down and start coding for long periods. Non-trivial programs always start with paper/pen or a whiteboard! Granted, I work with geometric / visual problems in most of my programs, but I see the same with other students in my department. It’s very relaxing to sit outside and work out your problems on paper first.</p>