Many professional imperative programmers and undergraduate students share a common belief: Haskell is hard learn. Yet there are also some great success stories. Is Haskell indeed harder to learn than imperative programming, or just different? What is needed to lower the barriers to learning and adopting Haskell? What techniques and tools can developers, managers, and educators employ to accelerate and spread Haskell proficiency?
More precisely, the panel will try to find answers to the following questions:
Having run the Visual C++ team and Microsoft's Productivity Tools Team, I have experienced how various tools enable -- or fail to enable -- programmer success. After hearing glowing reviews of Haskell and then trying it myself, I was deeply impressed. At this conference last year I announced the creation of FP Complete to accelerate Haskell's adoption by more applied/commercial users. The demand is there: this spring we delivered the online FP School of Haskell, which has served tens of thousands of users already, and whose contributors include many attendees at this conference. Based on feature requests we are now delivering FP Haskell Center, a commercial-grade IDE and deployment system for Haskell apps. We also just started the FP Haskell Competition in the hope that prizes and recognition might motivate people to share their learning even more. My top priorities are to understand what we can do better, and how best to work with the community in making Haskell more accessible and easier to use.
My experience is based on assisting in teaching a Haskell-based functional programming course to over 600 undergraduate students. I would like to advocate the usage of QuickCheck (or other automatic testing tools) as both: an automatic testing facility of students' homework and a high-level specification facility that is used by students and helps them to capture fundamental properties of their program without going into implementation details. Another topic of interest of mine is the integration of a competition in courses as means to motivate (especially, but not only) talented students.
My experience is based on teaching a Haskell-based advanced programming course to masters and advanced undergraduate students at Penn. This course is kept relatively small, under 40 students per iteration. I'd like to talk about teaching program design—how Haskell works (and doesn't work) for that purpose.