The logic and languages cluster, while not exclusively a functional programming set, practically covers a lot of what one might think of as upper-division FP concepts. Foundations of PL and Semantics are bread and butter PL theory, for example.
Software Foundations includes, for example, the use of type systems to ensure bug-freedom, program semantics, and more. Matt Fredrikson focuses on the intersection of formal programming languages research and security. For example, lecture 3: https://15316-cmu.github.io/lectures/03-safety.pdf
Cyber-physical is one of the hardest classes I've ever seen. Seriously - it combines very solid differential mathematics with logic and formal verification. It's a different set of skills than Semantics, but it combines a really solid dose of the same kind of logical and proof-centric thinking that advanced PL courses do. And rapidly runs into the logical underpinnings of both fields. For example, lecture 13: http://symbolaris.com/course/fcps16/13-diffchart.pdf
(In large part, this is because the course relies on identifying PL-style semantics of differential systems, and thus, students in the course end up being exposed to nearly identical proof methods as they do in the more straight-up PL semantics course, in addition to a lot of differential equations.)
It does look like there are portions of those classes that are similar to a PL semantics course, which in turn covers some of the concepts you'd cover in an upper-division FP course. It's still a bit of stretch.
After I looked over the assignments for a section of Software Foundations, I don't think that taking an AI class instead would make much of a difference when it comes to having a solid foundation in functional programming, which is what the GP was talking about.