Understanding my students or why I started learning Haskell, Part II

– Why a new language and why Haskell?

Reason 01: Understanding my students or why I started learning Haskell, Part I

Reason 02: Feeling like a student again

This calls for an explanation. I’ve been teaching at two Universities with various intensity for some years and I have started (nudge nudge – know what I mean) to notice some patterns among students. I lack proper backing here so I can’t make too general and sweeping arguments, but I can say that the course book/literature isn’t read by the students the way we expect. I get the impression that the book is not at all among the students’ main alternatives when learning how to program. Students have been telling me that they’d like to watch videos to learn. Why don’t the students read the books? Are the books bad? Should we use books at all? Are they all written in the wrong why – e g assuming everyone knows math and programming? Are the books using a boring pedagogy? One thing I’ve noticed is that most books are best suited for people who already know how to program and need to know another one.

By the way: … is there a good book on learning what programming is? I mean learning from scratch. And I mean good

Talking about books I think about the ones I used during my studies. Did I read the books? I’ve always thought and said I did, but really, did I? Being honest I don’t think I did a good job reading the books. Not in a proper way at least. So in a way I may be more similar to my students than I think.

In a class where I currently lecture we have switched (partly) to using Flipped Classroom and I get the impression – again, no proper backing – that we can see an increase in learning among the students. Still, we can’t rely on videos. Hmm, perhaps if we tag the videos properly? And develop an interface that makes it easy to browse and search. Anyhow, I don’t think we rely on videos alone. We need a book.

Learning, or re-learning after some 15 years in my case, a functional programming is as close to learning programming from scratch as I can come. So I decided to use this as an opportunity. Btw, learning a logical language like Prolog would perhaps be better – but I want to learn something I will find useful in my current profession. I guess I’ll be a Guinea pig in a way. How will I feel when reading books on a new subject? What kind of books do I like when NOT knowing the subject?

So learning a functional language will make me find the kind of literature that fits me. And assuming I am somewhat similar to my students in not wanting to read a language specification to start with I think I can draw some conclusions from the book I find nice and use these conclusions in my coming classes/courses. And probably I will eat some humble pie too. … btw, I certainly don’t mind reading language specifications. But not when starting off with a new language. Yeah yeah, some of you want to do it that way.

Bla bla bla, I will write about my findings tonight (publish tomorrow) – why it became Haskell and not Scheme.

Understanding my students or why I started learning Haskell, Part I

– Why a new language and why Haskell?

Two main reasons!

Reason 01: I need a new hacking challenge.

Knowing the Free Software hackers I have the pleasure to know it’s hard to think I am any good as a programmer. I think I am pretty good and fast in writing C. But comparing myself to my hacker friends I sometimes feel a bit limited in my understanding of programming. So I really think I need to extend my programming skills with a new language. Or even better, a new programming language paradigm. Since I know imperative/procedural programming (C), scripting (Bash) and OO (Java) the obvious next thing is to properly learn a functional language.

Functional languages or languages that can be used in a functional way I was considering: Lisp, Javascript, Scheme/Guile and Haskell.

…. sorry, Luca and Jose, Epsilon Algol are not functional 

Javascript:

I have been talking with a friend (Mikko) about my next language to learn for over a year and since he’s good at Javascript I always thought that Javascript (using it in a functional way) would be my next language. I think I would love the “competition” between us. But after some thoughts I decided let go off it – after all I am not a web programmer which is where Javascript is used mostly, I like lower level stuff…..  the idea of writing an Arduino simulator in Javascript is still kept in my brain.

Scheme/Guile:

It’s GNU’s extension language and Andy and Ludovic have been presenting it nicely to me… and they contribute a lot to it). I decided to give it a try.

Haskell:

Jon has done a good, almost fanatic, job promoting it and it is a language I almost learned when I studied – I learned Standard ML – Haskell wasn’t ready then I guess. Ok, I decided to give this a try too.

Lisp:

Hmmm, it’s kind of embarrassing to not know Lisp in Free Software communities. Still I skipped it. I think I wanted to go for a language which is used by friends of mine so I can discuss details over a chat or a beer.

Reason 02 coming up soon….