

Some advice on teaching FP - tianyicui
http://existentialtype.wordpress.com/2011/04/17/some-advice-on-teaching-fp/

======
onan_barbarian
Bob is an incredibly smart and accomplished guy, and I imagine the students
will get a lot from the course.

That being said the tone of triumphalism and the suggestion that a whole bunch
of tough problems in CS (parallelism, program verification of real systems)
are about to be solved by the majesty of strongly-typed functional languages
is awfully familiar from the way Bob was talking about 15-20 years ago.

We certainly have seen many interesting research papers, type systems and
compilers since then, but I'm not sure whether much progress has been made on
anything more visible to the much-maligned 'working programmer'.

~~~
_delirium
The more worrying thing from a pedagogical point of view is his claim that a
bunch of problems that programmers outside academia regularly deal with are
non-problems and don't need to be taught, because they're cruft that is on the
verge of obsolescence.

He had better be right, or he'll be helping to produce a cohort of students
who don't know a lot of stuff they might find themselves needing to know! (Of
course, I realize that Harper doesn't control the entire CMU curriculum, so
it's quite possible that despite his views, CMU students will end up studying
the "not worth studying" versions of parallelism/architecture/etc. problems
and solutions in other courses.)

~~~
parenthesis
This is a first year course. I think the idea is to teach students a `right
way' before sullying their minds with real world `wrong ways' and more
practical concerns.

~~~
cabalamat
> sullying their minds with real world `wrong ways' and more practical
> concerns

Why do computers exist, and why do people study them? Because they're very
useful for "practical concerns". Practical concerns should be at the heart of
any study of computers and computation; it's impractical for them not to be.

~~~
jimwise
I'm not sure I agree -- it's my experience that too often `practical concerns'
become an excuse to teach faddish details of what is being done in the `real
world' now, instead of provide any sense of the parts of the field which
_don't_ change with each new technology.

I'd rather teach a new hire who had worked through a curriculum built around
SICP[1] or HtDP[2] the languages and technologies we actually use here -- even
though we never write a line of scheme -- then teach a student who got a four
year `Computer Science' education focused on the details of a particular
programming language or technology stack how to use that very stack to
accomplish lasting things...

[1] <http://mitpress.mit.edu/sicp/>

[2] <http://www.htdp.org/>

~~~
onan_barbarian
This is a false dichotomy. I would rather a student who had gotten a coherent
CS education in some random Algol-descended language who had worked on a
curriculum consisting of a great big chunk of algorithms, systems work (os,
compilers, networks) and architecture.

I am finding many "high-church-of-X" approaches to CS increasingly
unsatisfying, whether it's rabid OO, the rabid 'functional programming solves
all problems', Stephanov's 'grind away for 6-12 months putting the basics on a
RIGOROUS FOUNDATION without solving a single interesting problem' book, etc...

My feeling is that many of these religious attitudes will not survive the
first contact with a truly serious enemy - in other words, a system with
substantial complexity that can't be expressed in an elegant way. I don't
think it's a mistake that strong FP guys spend so much time hacking around on
compilers, type systems, regular expressions, etc. Maybe a foray into
scientific computing - but if you're biting off problems that were previously
tackled by a bunch of nested loops in HPF, maybe these aren't the world's most
hairy algorithms either.

------
rntz
I'm a TA (one of four) for the course Harper is talking about in this post. As
they say on reddit, ask me anything. I do not guarantee I'll answer. I'll
check back in in the morning.

~~~
cwzwarich
Has Harper actually done any real programming of significance? I am an
"industry programmer" who has a pretty strong theoretical bent (have a math
degree rather than CS, have read most of Harper's papers on the type theory
and semantics of module systems), but when I read his blog posts I get the
feeling that when it comes to programming he doesn't really know what's up.

~~~
rntz
I dunno, I just TA for the guy. I suspect it depends on what you mean by "real
programming of significance". I can tell you that Harper is really damn smart.
I'd be truly surprised if he was bad at programming. But his actual
experience, I don't know. He hasn't written any code for the course itself,
but that's not really his role.

------
babeKnuth
"One beautiful feature of the language-based approach is that we start with a
very familiar model of computation, the evaluation of polynomials over the
reals. It’s very familiar for all students, and I think they find it very
satisfying precisely because it has a direct computational flavor."

Don't know how true this is at other universities, but this doesn't sound like
my experience at all. :)

