Answers.Body: <p>From the top of my mind roughly in order of priority excl. math: </p>
  
  <p><strong>Practical/applied CS</strong>: machine learning, artificial intelligence (incl. symbolic AI), data mining, algorithms, data structures</p>
  
  <p><strong>Theoretical CS</strong>: complexity theory</p>
  
  <p><strong>Programming</strong>: Python</p>
  
  <p>Logic is highly relevant for symbolic AI but not so much for sub-symbolic approaches like ML. </p>
  
  <p>For all topics mentioned in the first two categories you can find free online lectures from different universities. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-25T15:41:43.090Z
Answers.LastActivityDate: 2019-10-25T15:41:43.090Z
Answers.UserDisplayName: Jonathan
Answers.Body: <p>In several projects, I found data analysis and data structures to be critical.  Machine Learning requires huge amounts of data and, most likely, the data will come from multiple sources. Prior to use, data  requires analysis, cleaning, interpretation, feature engineering (subject matter expertise), and structure. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-17T21:55:40.443Z
Answers.Text: Data analysis is not necessarily part of the core of computer science. It is more of a statistical sub-area.
Answers.UserDisplayName: nbro
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-17T18:23:16.090Z
Answers.LastActivityDate: 2019-10-17T18:23:16.090Z
Answers.UserDisplayName: TechBull
Answers.Body: <p>I worked as a professor for a time, and often advised students on this. For a PhD in machine learning, I think the ideal background is:</p>
  
  <ol>
  <li><strong>Core CS Courses</strong> 
  
  <ul>
  <li>Programming (typically 3-4 courses). Language choice is not highly important, but Python, C++, Java, and perhaps JavaScript, are reasonable picks, if only because of their prevalence.</li>
  <li>Core topics: data structures, algorithms, operating systems, databases</li>
  <li>numerical linear algebra or numerical methods</li>
  <li>advanced algorithm design and analysis</li>
  </ul></li>
  </ol>
  
  <p>Together these will allow you to read and write the code that even highly optimized versions of ML algorithms are written in, and to understand what might be going wrong within them.</p>
  
  <p><strong>2. AI &amp; ML courses, usually offered through a CS department</strong></p>
  
  <ul>
  <li>a broad survey course in AI (like AI:AMA by Russel &amp; Norvig), usually offered to senior undergraduates. </li>
  <li>A course applied machine learning or data mining. </li>
  </ul>
  
  <p>You may also take other AI courses, but they are not as common to see offered to undergraduates, so many students wait until graduate school:</p>
  
  <ul>
  <li>reinforcement learning</li>
  <li>soft computing</li>
  <li>computational learning theory</li>
  <li>Bayesian Methods</li>
  <li>Deep Learning</li>
  <li>Multiagent Systems</li>
  <li>Information Retrieval</li>
  <li>Natural Language Processing</li>
  <li>Computer Vision</li>
  <li>Robotics</li>
  </ul>
  
  <p>Together, these will give you the broadest possible background in AI &amp; ML. These can allow you to find new applications of ML, or to pull AI techniques from one area into another as you need.</p>
  
  <p><strong>3. Statistics courses</strong></p>
  
  <ul>
  <li>a 1 or 2 term course in probability theory, ideally a version that requires and uses calculus. </li>
  <li>at <em>minimum</em> a course in statistical hypothesis testing. </li>
  </ul>
  
  <p>Much stronger would be to also take courses in:</p>
  
  <ul>
  <li>regression</li>
  <li>generalized linear models</li>
  <li>experiment design</li>
  <li>causal inference</li>
  <li>Bayesian methods</li>
  </ul>
  
  <p>These courses allow you to reason formally and comfortably about uncertainty. They also give you the correct framework for answering questions about whether your ML algorithm is working, and what patterns an ML algorithm uncovers mean.</p>
  
  <p><strong>4. Mathematics courses</strong></p>
  
  <ul>
  <li>3 semesters of calculus, going at least as far as multi-variate/vector calculus. </li>
  <li>optionally, a more advanced course that builds on calculus, like real analysis, but only to reinforce calculus concepts.</li>
  <li>at least 1, and preferably 2, courses in linear algebra</li>
  <li>at least 1, and preferably 2, courses in discrete mathematics. </li>
  <li>ideally, something like Knuth et al.'s <em>Concrete Mathematics</em></li>
  <li>ideally a course in advanced optimization techniques</li>
  <li>optionally, courses in logic, but be aware that this is almost a fringe area in AI now, and essentially irrelevant to a PhD in machine learning. The parts you need are usually covered in a broad survey AI course.</li>
  </ul>
  
  <p>These courses give you the basic mathematical fluency to understand most machine learning algorithms well.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-25T19:38:43.770Z
Answers.Text: I have found studying optimization techniques to be invaluable when trying to decide what technique to use in solving ml/ai problems
Answers.UserDisplayName: nickw
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-25T19:46:24.977Z
Answers.Text: @nickw I agree. A survey course in AI, as well as a typical course in advance algorithm design will cover these topics pretty well, and probably well enough for someone to start on an ML PhD. That said, if they can do a mathematics course that is _specifically_ about optimization, they'll be way ahead of the pack.
Answers.UserDisplayName: John Doucette
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-25T18:14:12.787Z
Answers.LastActivityDate: 2019-10-25T20:05:55.823Z
Answers.LastEditDate: 2019-10-25T20:05:55.823Z
Answers.UserDisplayName: John Doucette
Body: <p>Although I have a decent background in math, I'm trying to understand which courses from CS and logic to look into. My aim is to get into a Machine Learning PhD program.</p>
  
Tags: <machine-learning>
Title: Which courses in computer science and logic are relevant to Machine Learning?
UserDisplayName: stranger
ThreadText: # Which courses in computer science and logic are relevant to Machine Learning?
  
  (Asked by: username_0 on 2019-10-17)
  
  Although I have a decent background in math, I'm trying to understand which courses from CS and logic to look into. My aim is to get into a Machine Learning PhD program.
  
  **Tags:** machine-learning
  
  ---
  
  ## 3 answers
  
  ### Answer by username_4 on 2019-10-25. Score: 5 | Accepted answer
  
  I worked as a professor for a time, and often advised students on this. For a PhD in machine learning, I think the ideal background is:
  
  1. **Core CS Courses**
     * Programming (typically 3-4 courses). Language choice is not highly important, but Python, C++, Java, and perhaps JavaScript, are reasonable picks, if only because of their prevalence.
     * Core topics: data structures, algorithms, operating systems, databases
     * numerical linear algebra or numerical methods
     * advanced algorithm design and analysis
  
  Together these will allow you to read and write the code that even highly optimized versions of ML algorithms are written in, and to understand what might be going wrong within them.
  
  **2. AI & ML courses, usually offered through a CS department**
  
  * a broad survey course in AI (like AI:AMA by Russel & Norvig), usually offered to senior undergraduates.
  * A course applied machine learning or data mining.
  
  You may also take other AI courses, but they are not as common to see offered to undergraduates, so many students wait until graduate school:
  
  * reinforcement learning
  * soft computing
  * computational learning theory
  * Bayesian Methods
  * Deep Learning
  * Multiagent Systems
  * Information Retrieval
  * Natural Language Processing
  * Computer Vision
  * Robotics
  
  Together, these will give you the broadest possible background in AI & ML. These can allow you to find new applications of ML, or to pull AI techniques from one area into another as you need.
  
  **3. Statistics courses**
  
  * a 1 or 2 term course in probability theory, ideally a version that requires and uses calculus.
  * at *minimum* a course in statistical hypothesis testing.
  
  Much stronger would be to also take courses in:
  
  * regression
  * generalized linear models
  * experiment design
  * causal inference
  * Bayesian methods
  
  These courses allow you to reason formally and comfortably about uncertainty. They also give you the correct framework for answering questions about whether your ML algorithm is working, and what patterns an ML algorithm uncovers mean.
  
  **4. Mathematics courses**
  
  * 3 semesters of calculus, going at least as far as multi-variate/vector calculus.
  * optionally, a more advanced course that builds on calculus, like real analysis, but only to reinforce calculus concepts.
  * at least 1, and preferably 2, courses in linear algebra
  * at least 1, and preferably 2, courses in discrete mathematics.
  * ideally, something like Knuth et al.'s *Concrete Mathematics*
  * ideally a course in advanced optimization techniques
  * optionally, courses in logic, but be aware that this is almost a fringe area in AI now, and essentially irrelevant to a PhD in machine learning. The parts you need are usually covered in a broad survey AI course.
  
  These courses give you the basic mathematical fluency to understand most machine learning algorithms well.
  
  > **Comments:**
  > **username_5**: I have found studying optimization techniques to be invaluable when trying to decide what technique to use in solving ml/ai problems  
  > **username_4**: @nickw I agree. A survey course in AI, as well as a typical course in advance algorithm design will cover these topics pretty well, and probably well enough for someone to start on an ML PhD. That said, if they can do a mathematics course that is _specifically_ about optimization, they'll be way ahead of the pack.  
  
  ---
  
  ### Answer by username_1 on 2019-10-25. Score: 2
  
  From the top of my mind roughly in order of priority excl. math:
  
  **Practical/applied CS**: machine learning, artificial intelligence (incl. symbolic AI), data mining, algorithms, data structures
  
  **Theoretical CS**: complexity theory
  
  **Programming**: Python
  
  Logic is highly relevant for symbolic AI but not so much for sub-symbolic approaches like ML.
  
  For all topics mentioned in the first two categories you can find free online lectures from different universities.
  
  
  ---
  
  ### Answer by username_2 on 2019-10-17. Score: 1
  
  In several projects, I found data analysis and data structures to be critical. Machine Learning requires huge amounts of data and, most likely, the data will come from multiple sources. Prior to use, data requires analysis, cleaning, interpretation, feature engineering (subject matter expertise), and structure.
  
  > **Comments:**
  > **username_3**: Data analysis is not necessarily part of the core of computer science. It is more of a statistical sub-area.  
  
  ---
  
  