<p>Let me mention, at least, another dimension to this. There are various functional languages and some of them are closer to what your students may have in their backgrounds. A language with dynamic scope and abstract syntax is a very different beast from one with lexical scope and a rich syntax. </p>

<p>The only functional language that I really worked at was ML and I got quite good at it. But I learned that I really want the concrete syntax that it offers as an aid in my thinking. The underlying concepts are the same, of course, but I'm pretty worthless in Scheme. But then, I didn't learn Emacs from my mother as many schemers seem to have done. </p>

<p>So, if you want to <em>level the playing field</em> then I will guess that you want something as unlike their previous experience as possible. Say Scheme, rather than Haskell. </p>

<p>However, some students will pick up the new ideas faster than others no matter what you do, so it is good, in my view, to take advantage of that. </p>

<p>And of course, if you are going to do something very non-standard, make sure that you have the necessary expertise first. That isn't a situation for staying one chapter ahead in the book as some instructors are forced by circumstances to do. </p>

CC BY-SA 4.0
2018-05-13T18:45:26.140Z
(a side note) FWIW Scheme's typical wall-of-words code can IMO be made more readable by generously adding more white space inside, and by aligning various entities visually. that's *not* the accepted style of course; so what, if it helps. (see e.g. [this](https://stackoverflow.com/a/48694546/849891) to see what I mean; or even [this](https://stackoverflow.com/a/49631993/849891) which is a bit over the top). and, using *short* variable names!
Will Ness
CC BY-SA 4.0
2018-05-13T18:54:55.760Z
@WillNess, a student of McCarthy's and one of the developers of CLOS told me that he can understand lisp code from a distance just by looking at the visual structure. That assumes the standard formatting, of course. I have no reason to doubt him as he is reliable in all known ways.
Buffy
CC BY-SA 3.0
2017-09-07T19:14:27.663Z
2017-09-07T19:14:27.663Z
Buffy
<p>On <a href="https://cseducators.stackexchange.com/questions/3469/what-could-be-the-possible-advantages-of-teaching-scheme-as-first-programming-la">another question</a>, <a href="https://cseducators.stackexchange.com/a/3473/283">Ben. I claimed</a>:</p>

<blockquote>
  <p>By utilizing a functional language in your first course, you get to
  have a classroom full of kids who have a much more similar footing.
  And when you move on, later, to imperative programming, you no longer
  have any kids with no experience. It's a simple trick to keep your
  cohorts more on-level without wasting the time of the advanced
  students.</p>
</blockquote>

<p>I've heard this argument before and wonder if it's really true. The first programming course I encountered was in Scheme, and it seemed that students with prior programming experience (even in imperative languages) tended to do well in the course, while some students without prior experience were lost. Of course, my undergraduate days were long ago, correlation does not equal causation, and my data is anecdotal.</p>

<p><strong>Is there evidence that using a functional programming in an introductory college course reduces the effects of differences in programming background?</strong></p>

CC BY-SA 3.0
2017-09-06T21:58:33.413Z
(a) The SIGCSE list might point you to some research. (b) The outcome in a single instance might depend on the instruction given. If the instructor was someone learning Scheme him/herself then the outcome might not be predicted to be very positive, and might turn out as you describe. Now if Hal Abelson was the instructor...
Buffy
CC BY-SA 3.0
2017-09-06T22:29:03.757Z
Hal Abelson *was* the instructor. (Well, not when I took it, but when I TA'd it.)
Ellen Spertus
CC BY-SA 3.0
2017-09-06T22:35:48.940Z
I'd expect better results with Hal. Why don't you ask him this question?
Buffy
CC BY-SA 3.0
2017-09-07T15:50:40.443Z
@Buffy I owe Hal code. I suppose I could ask him, but I don't know that he ever did an evaluation.
Ellen Spertus
<undergraduate><functional-programming><programming-paradigms>
Does teaching an intro course with a functional language really help level the playing field?
# Does teaching an intro course with a functional language really help level the playing field?

(Asked by: username_0 on 2017-09-06)

On [another question](https://cseducators.stackexchange.com/questions/3469/what-could-be-the-possible-advantages-of-teaching-scheme-as-first-programming-la), [Ben. I claimed](https://cseducators.stackexchange.com/a/3473/283):

> By utilizing a functional language in your first course, you get to
> have a classroom full of kids who have a much more similar footing.
> And when you move on, later, to imperative programming, you no longer
> have any kids with no experience. It's a simple trick to keep your
> cohorts more on-level without wasting the time of the advanced
> students.

I've heard this argument before and wonder if it's really true. The first programming course I encountered was in Scheme, and it seemed that students with prior programming experience (even in imperative languages) tended to do well in the course, while some students without prior experience were lost. Of course, my undergraduate days were long ago, correlation does not equal causation, and my data is anecdotal.

**Is there evidence that using a functional programming in an introductory college course reduces the effects of differences in programming background?**

**Tags:** undergraduate, functional-programming, programming-paradigms

> **Comments:**
> **username_1**: (a) The SIGCSE list might point you to some research. (b) The outcome in a single instance might depend on the instruction given. If the instructor was someone learning Scheme him/herself then the outcome might not be predicted to be very positive, and might turn out as you describe. Now if Hal Abelson was the instructor...  
> **username_0**: Hal Abelson *was* the instructor. (Well, not when I took it, but when I TA'd it.)  
> **username_1**: I'd expect better results with Hal. Why don't you ask him this question?  
> **username_0**: @username_1 I owe Hal code. I suppose I could ask him, but I don't know that he ever did an evaluation.  

---

## 1 answers

### Answer by username_1 on 2017-09-07. Score: 2

Let me mention, at least, another dimension to this. There are various functional languages and some of them are closer to what your students may have in their backgrounds. A language with dynamic scope and abstract syntax is a very different beast from one with lexical scope and a rich syntax.

The only functional language that I really worked at was ML and I got quite good at it. But I learned that I really want the concrete syntax that it offers as an aid in my thinking. The underlying concepts are the same, of course, but I'm pretty worthless in Scheme. But then, I didn't learn Emacs from my mother as many schemers seem to have done.

So, if you want to *level the playing field* then I will guess that you want something as unlike their previous experience as possible. Say Scheme, rather than Haskell.

However, some students will pick up the new ideas faster than others no matter what you do, so it is good, in my view, to take advantage of that.

And of course, if you are going to do something very non-standard, make sure that you have the necessary expertise first. That isn't a situation for staying one chapter ahead in the book as some instructors are forced by circumstances to do.

> **Comments:**
> **username_2**: (a side note) FWIW Scheme's typical wall-of-words code can IMO be made more readable by generously adding more white space inside, and by aligning various entities visually. that's *not* the accepted style of course; so what, if it helps. (see e.g. [this](https://stackoverflow.com/a/48694546/849891) to see what I mean; or even [this](https://stackoverflow.com/a/49631993/849891) which is a bit over the top). and, using *short* variable names!  
> **username_1**: @WillNess, a student of McCarthy's and one of the developers of CLOS told me that he can understand lisp code from a distance just by looking at the visual structure. That assumes the standard formatting, of course. I have no reason to doubt him as he is reliable in all known ways.  

---

