Re: [OT] Re: Using Haskell for teaching [was: Help me decide D or C]

2019-08-03 Thread Russel Winder via Digitalmars-d-learn
On Fri, 2019-08-02 at 23:24 -0600, Jonathan M Davis via Digitalmars-d-learn
wrote:
[…]
> The university I went to had an undergrad class on programming paradigms
> that I _think_ was required (maybe two even), but it was definitely just the
> focus of a small number of classes, whereas my experience is that you get a
> lot more out of it when you actually use a language with a different
> paradigm for a while rather than just doing one group of assignments in it -
> and when the class covers multiple programming paradigms, that also dilutes
> how much you get out of each. On some level, as with many things, a lot of
> it depends on how much the students decide to put into it on their own.
[…]

UCL used to have a 10 week module that tried to do three language to show that
different programming languages were best for different problems. Prolog,
Snobol, and ??? were the trio when we terminated the module as not being
effective. This reinforced having a third programming language module in the
compulsory programming sequence so as to have 10 weeks per language rather
than three. Still not really long enough but it worked a lot better.

I think universities will be far better able to teach programming now that
entrants already know Python (to a greater or lesser extent). The single
biggest problem will be (has always been) having academics on the staff
competent and willing to put on programming courses. Far too many academics in
universities are truly crap programmers and are the last people you want to
show their crapness to students.
 

-- 
Russel.
===
Dr Russel Winder  t: +44 20 7585 2200
41 Buckmaster Roadm: +44 7770 465 077
London SW11 1EN, UK   w: www.russel.org.uk



signature.asc
Description: This is a digitally signed message part


Re: [OT] Re: Using Haskell for teaching [was: Help me decide D or C]

2019-08-02 Thread Jonathan M Davis via Digitalmars-d-learn
On Friday, August 2, 2019 11:05:13 AM MDT Russel Winder via Digitalmars-d-
learn wrote:
> On Fri, 2019-08-02 at 10:25 -0600, Jonathan M Davis via
> Digitalmars-d-learn wrote:
>
> […]
>
> > My feeling is that functional languages are likely to be a very poor
> > place for most folks to start learning, much as I think that they're
> > great for someone to learn and work with at some point. I have heard of
> > beginning programming classes using functional languages and having it
> > go very well, but it seems hard to believe to me. Imperative
> > programming can already be a lot for beginners, but most people really
> > don't think even vaguely in a functional manner. Even simple recursion
> > tends to be a bit of a mind-bender for people at first.
>
> […]
>
> At UCL in the late 1980s and early 1990s, we used a functional programming
> language in the first term and C++ in the second term for teaching
> programming. Initially Scheme was the functional programming language but
> we then switched to Miranda (which was a pre-cursor to Haskell).
>
> This deep immersion in two totally different programming paradigms worked
> very well. The mid/late 1990s mad rush to Java everywhere in teaching (of
> which I was a part) was in hindsight madness (of a global sort). The move
> by many institutions to using Python first and then Java rebalances
> somewhat but is missing the point – it's about the paradigms. I have
> retrenched as a believer in the Haskell/C++, or Prolog/Java, or some
> such. In the new era with new undergraduates already knowing Scratch and
> Python, universities should really go the whole hog in getting
> programming paradigms and programming as a skill as well as knowledge,
> with all the tools,fair and square into the first year curriculum.
>
> Of course I have been out of academia for 20 years, and am now out of
> employment, so my views have no impact. :-)

The university I went to had an undergrad class on programming paradigms
that I _think_ was required (maybe two even), but it was definitely just the
focus of a small number of classes, whereas my experience is that you get a
lot more out of it when you actually use a language with a different
paradigm for a while rather than just doing one group of assignments in it -
and when the class covers multiple programming paradigms, that also dilutes
how much you get out of each. On some level, as with many things, a lot of
it depends on how much the students decide to put into it on their own.

I still find it funny that the class that got me started with Haskell was
the grad version of the programming paradigms course, and we used Haskell
only because the teacher was always using Scheme (in fact, he was a
developer for Dr. Scheme IIRC) and felt like doing something different. So,
while I'd used Scheme some in an undergrad course, I ended up using Haskell
in the course with the teacher who was majorly into Scheme. It seemed a bit
like if one of the major D contributors decided to use Rust for a bit just
to try something different.

Of course, I haven't done anywhere near as good a job at learning new
languages for a while now, because I've been focused enough on D that I
haven't really wanted to spend time writing programs in something else. And
I don't think that it works very well to really learn a language if you
don't use it as your go-to language for a while (at least if you want to
be good at more than the basics). There's no question though that I'm better
at D thanks to the time I spent on languages such as Haskell.

- Jonathan M Davis