Undergrad AI should both give students an appreciation for AI as well as a glimpse of important research problems in the field. More and more, this means teaching the theory and practice of optimization. When IBM ads tell us they want a “smarter planet”, this is what they’re talking about.
So teach this:
- Machine Learning, through the Kernel Trick. Machine Learning is the most exciting part of AI right now, and students with an AI class under their belts should have exposure to things like clustering and SVMs.
- Mixed-Integer Programming. I don’t mean the principles behind how MIP solvers actually work, but students should know how to model a problems as MIPs and get a general sense of when MIPs work well. I think that MIPs really drive home a concept that’s central to AI, which is that the interesting problem you’re trying to solve is NP-hard but you can still do it a lot of the time.
- Local Search. A much more extensive introduction to local search should be explored. In particular, there should be a fuller discussion of different search algorithms, and a contrast drawn with MIPs about when using each is more appropriate.
and not that:
- Logic. First order logic, SAT, horn clauses, all of that garbage. Get rid of it. A friend of mine once said “SAT is the fourth-best way to solve any problem”.
- LISP. Functional programming is undeniably important and CS majors should certainly learn it at some point, but undergrad AI isn’t where they should be doing it. Cutting LISP fully away from the undergrad AI curriculum is an important step from disassociating the field from the bad old days of Strong AI nonsense.
- Genetic Algorithms. At both Harvard and CMU, a good amount of time was spent explaining these things, with only a cursory slide at the end of the presentation arguing that they might not be such a good idea. Genetic Algorithms deserve to lose their spot to more potent local search algorithms.