<p>As a computer science major, I have to take two math elective courses in order to satisfy the requirement for graduation. So, my options are Math 046 - differential equations (lower-division), Math 120 - Optimization (upper-division), Math 126 - Combinatorics (upper-division), and Phil 124 - Formal Logic (upper-division, not a math class, but satisfies the requirement). Which two math courses should I take to challenge myself and to have a better chance to get into grad school?</p>
<p>Depends what you’re trying to do in CS. Diffy Q and Optimization are more “useful”. For most people, who are studying CS to work in industry, those would probably be the best options. However, since you’re going to grad school, you may care more about the theoretical side, which would be served by the other two courses. At my school, Combinatorics and our equivalent of Optimization are fun classes, while the other two are supposed to be rather boring.</p>
<p>Differential equations and optimization are good for solving real-world problems which companies sometimes hire CS majors to work on. Combinatorics and Formal Logic will make it more likely that you are able to understand the proof that P != NP whenever someone figures it out.</p>
<p>I am actually planning to work for a while after graduation, and then go to grad school after saving some money. Should I still take Combinatorics and Formal Logic?</p>
<p>Optimization is absolutely critical to artificial intelligence. In some ways its the foundation of practical artificial intelligence. If a system is making a decision, then it must calculate the goodness of each decision and then there must be a method for selecting the best decision. Most machine learning algorithms are, at their core, definitions of objective functions, and methods for optimizing the objective function. For example, a popular algorithm called SVM defines a separating hyperplane as optimal if it maximizes the minimal margin between the points on each side of the hyperplane. </p>
<p>Diff Eq is a fundamental subject, but I don’t see it used a lot in CS.</p>
<p>For AI specifically, optimization is actually pretty important. Formal Logic would be helpful, depending on whether you think you need it to have a good grasp of computability.</p>