Advice: Best Math Elective for a CS Major?

<p>Of the following 3000-level math courses:</p>

<p>Differential Equations</p>

<p>Probability and Statistics</p>

<p>Graph Theory</p>

<p>Intro to Linear Algebra</p>

<p>Which would be most advisable in terms of relevance/difficulty for a CS major sophomore who has taken Calc II, will take Intro to Discrete Math later, and whose focuses are AI and computational linguistics?</p>

<p>AI and Comp Ling will both have a lot of probability and statistics, so take that.</p>

<p>Hey, also a second year CS student, figured I’d weigh in. ^^;</p>

<p>Of the courses you mentioned, I’d say Linear has helped me the most. Matrices make a lot of things simpler, and can be especially useful in other courses. It’s also pretty general, so it’ll pop up over and over again. Stats I’ve only had a very basic course on, and I honestly wish I hadn’t bothered with it. You should get into basic graph theory and probability in Discrete Structures. Actually, if you’re able to take Discrete first, that might give you an idea of what you want to take more of. And… Diff Eq won’t really help you much, it’s more physics than it is math.</p>

<p>Anyways. Discrete’s the most fun/useful, and I’d put Linear second.</p>

<p>My initial reaction is that, ideally, you should be taking all of those courses. If that’s not possible, I would be curious to know what other courses you’re taking instead? More CS courses? Or general electives? I would be more than happy to discuss your overall course plan with you, either here or via private messages, if that’s something you’d be interested in doing.</p>

<p>That being said, we’ll operate under the assumption that you can’t take them all, and are going to need to make a choice. Below I give pros and cons (which represent my opinions, not objective facts) for each choice:</p>

<p>Differential Equations. Introductory courses in differential equations tend to be service courses for the engineering departments at most schools with engineering programs; as such, application is emphasized and theory is relegated either to special-purpose or upper-level courses in the department. That being said, the kinds of things you would typically learn in such a course on differential equations are extensions of the kinds of ideas from calculus which don’t find ready application in most areas of computer science; i.e., unless you are writing software which needs to explicitly solve differential equations as part of the requirements (as in numerical methods and scientific computing specializations), the content of this course will probably not be overly useful. However, the course does help to increase mathematical maturity and ability, and can be a very interesting course for those interested in mathematics.</p>

<p>Probability and Statistics. The content of courses in this area are likely to be fairly useful to most students of computer science. In addition to providing students with knowledge they can use to write programs for application areas in which probability and statistics play a major role (AI and computational linguistics, as sumzup mentioned), such material plays a fundamental role in areas such as algorithm design and analysis (average-case analysis and randomized algorithms) and computer systems (queuing theory for operating systems and networks, etc.). Such knowledge is useful to both theoretical and experimental scientists, as well as to practicing professionals (quantification in software engineering is statistical in nature).</p>

<p>Graph Theory. Graph theory is immensely important to the study of computer science, and can go a long way in increasing the understanding of core CS subjects (such as automata theory, algorithms and data structures, programming languages and compilers, computer networks, etc.) It is so important that you are unlikely to get through a CS program without seeing a fair amount of (admittedly basic) graph theory throughout the curriculum. There is still a lot of value in taking a dedicated course, since the presentation will be better and since the coverage will likely be broader and deeper. </p>

<p>Intro to Linear Algebra. This course expands on the elementary algebra which got you through calculus and shows you how you can solve systems of (linear) equations by treating them as matrices. The course then shifts focus to the study of matrix algebra, slowly introducing concepts from a more modern, or abstract, algebraic perspective. The content of this course is primarily useful to computer science students studying computer graphics and/or numerical methods/scientific computing; the more abstract ideas from modern mathematics that are introduced in the course are incredibly useful and relevant to the study of more theoretical and mathematical aspects of computer science, but not necessarily directly. Moreso than differential equations, this course can greatly increase the mathematical maturity of interested computer science students.</p>

<p>With that out of the way, what would I recommend? Take as many of these courses as possible, in this order of preference: first, probability and statistics; second, linear algebra; third, graph theory; fourth, differential equations. Note that the order of preference is not the order in which I’d recommend you take the courses. For that, I’d recommend: first, differential equations; second, linear algebra; third, graph theory; and it doesn’t really matter when you take probability and statistics relative to these. My reasoning for the preferences?</p>

<ol>
<li>Probability and statistics is the most generally useful course, and one which aligns with your application interests. Everybody should take it, especially technical and scientific people.</li>
<li>Linear algebra is a course which can greatly increase mathematical maturity which will be useful for further study of computer science.</li>
<li>Graph theory is fundamentally important to computer science, but it isn’t at the top of the list because you will get some of this anyway through other courses in CS. A separate course would be a great addition, but is not strictly necessary.</li>
<li>Differential equations is less related to the content of CS and develops less useful mathematical maturity, in my opinion. It is still a useful course, just less so than the others.</li>
</ol>

<p>Yeah, I’d much rather take Discrete first, and I’ll have to take it eventually, but seats in that course are a rare commodity at my school.</p>

<p>Re aegrisomnia: Thanks for the info, that is helpful. In answer to the question “what else am I taking”, well, I am taking at least one and possibly two foreign languages (emphasizing the linguistics side of them, as my school does not have a dedicated linguistics program). To qualify for a math minor, I only need 3 upper-level math courses besides those required for CS. I’ve already taken Game Theory, so I need to take at least 2 more. Mostly I’m trying to figure out which of the above would be best to take now, given the level of knowledge I am at right now, and which might be wiser to take later or forgo entirely. I should also add that in future semesters I’ll have more options, as the ones I listed are just the ones available to me this coming fall semester.</p>

<p>Also, I forgot to mention that I have taken the 2000-level course Intro to Statistics. Would the 3000-level course add much to that that would be useful to me?</p>

<p>Many CS programs have Linear Algebra as a REQUIRED course, so I would put that course as the #1 must-have. Probability & Statistics would be a close #2.</p>

<p>Since I was a Math/CS major, I may be biased but I would have Graph Theory as #3 since I think a junior/senior-level course in Combinatorics/Graph Theory is also needed.</p>

<p>Combinatorics is also an option as a separate class, it’s just not available this fall.</p>