My CS professor tries to use less mainstream languages for exactly this purpose–to put everyone on an even playing field. The first two months of labs in the course are taught entirely in Haskell. The lectures are about DFAs and NFAs.
I've graded and TA'd the course for two years, and I think his approach works extremely well. It lets you filter out the people who really get it from the people who are just pattern matching from previous experience.
They actually do this at Imperial College, London for computer science. Programming 1 is 100% haskell [1]. The idea is to have a level playing field for all students as many may have had prior experience in imperative languages.
I'm repeating some of my advice given on another post that was pulled down due to a downmodded parent.
If you want to do something a little different you can also try subsetting Haskell as per in most of the courses found in http://www.haskell.org/haskellwiki/Haskell_in_education#Hask... That is the approach they take in the University I studied CS, and it's an interesting one to combine with learning Python as a fist language.
This is a nice approach. Thanks to all of you in this thread. I think I'll try something like this when I introduce Haskell I/O in my Programming Languages class in a month or two.
OP: Thanks for this. I'm teaching a class on Haskell for my company's interns this summer and I'm trying to come up with a syllabus and a plan for it. This really helped.
Haskell is so full of great ideas. But they are well hidden. What worked for me is sitting next to a grad student passionate about Haskell. I would explain a concept in English and he would tell me the Haskell term to Google.
Haskell Type Classes are brilliant. But I would recommend a strict evaluation language like ML (and modules with signatures) for Semester #1 and lazy Haskell for Semester #2. Anyone could cover a ton of useful contextual material taking just a little more time.
I've graded and TA'd the course for two years, and I think his approach works extremely well. It lets you filter out the people who really get it from the people who are just pattern matching from previous experience.
reply