Two of my computer science courses this year have to do with learning functional programming languages. The other day (actually about a month ago, this post has taken me a while to write as I've got plenty of school work to do and that's taken precedence) one of my professors mentioned that first year computer science courses were now teaching Scheme instead of the Java I learned at the time. More and more I come across mentions of Functional Programming Languages (FPLs) and how they're the next big thing. But why? And what makes them so different from the Java and C++ and other imperative programming languages (IPLs) that I've learned?