<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>