[plt-scheme] Teaching Scheme

From: Samuel Williams (space.ship.traveller at gmail.com)
Date: Mon May 3 11:44:59 EDT 2010

Dear Matthias,

Thanks for your comments.

On 4/05/2010, at 2:59 AM, Matthias Felleisen wrote:

> Dear Mr Williams, 
> the founders of this list have written an extensive list of papers 
> on why it is INappropriate to teach novices with ANY off the
> shelf programming language, including Scheme. ALL languages
> for professional programmers are BAD languages for novices. 

This doesn't feel intuitive, but that is just my opinion. In any sense, how do we define what is a off the shelf language?

I personally get a great thrill and inspiration from seeing visualizations in OpenGL, and hearing synthesized audio from OpenAL, and making web applications in Ruby on Rails, and writing games in C++. I think it is important for me to feel inspired and enjoy what I'm doing. However, I'm not suggesting this isn't possible with your approach, I'm simply curious whether I'd feel the same way (which is ultimately why I enjoy studying computer science).

> Instead of listing all papers, let me suggest two that are good 
> starting ponts for chasing our 15 years adventure backwards: 
> http://www.ccs.neu.edu/scheme/pubs/#icfp09-fffk
> a somewhat technical article that includes what we can 
> accomplish with middle school (US terminology!) kids 
> http://www.ccs.neu.edu/scheme/pubs/fk-cacm09.pdf
> the draft of a CACM Viewpoint that provides an abstract 
> perspective of our stuff ; a true print is available in the ACM 
> on-line library 
> You have permission to post those links and any other links
> from my web site on your site BUT NOT on the "pro Scheme" 
> page. 

Can you explain exactly what you mean by the "pro Scheme" page?

Can you clarify why you don't want me linking to those documents from a "pro Scheme" page?

> In my mind there are three critical points: 
> 1. Don't listen to students and their interests. Teach everyone. 

This doesn't seem intuitive, but okay. I'll have to read the research papers. I'm sorry to be so flippant - I simply don't have an extended period of time to read it right now.

> 2. Make sure your teachings help even those who don't pursue
>    a college-level CS degree. 

This is a useful goal. But won't it also hold back those who want to work on a specific project or idea? At school I wrote OpenGL games which helped me with my math, and all sorts of other applications including parsers, interactive websites, etc.. I can't easily feel that I was disadvantaged by this experience.

But conversely, there may have been another approach that advantaged me more?

> 3. Teach systematic program design, not programming. 

Is this equivalent to "algorithmic thinking"?

> For your perusal, I have appended are two versions of your 
> '100 doors' problems: 
>  FP, good: a functional, well-designed version 
>  IMP, sloppy: an attempt on my side to write PLT code that 
>    is as bad as the C version at your site. I went thru an 
>    intermediate FP version that was as compact and in the 
>    end I just couldn't drop the unit tests. Sorry. 
> They are both intended to be run from with DrScheme our
> pedagogic environment (see web page for another article). 
> This prints the results -- as a truly 'interpreted' language 
> ought to do. (PLT Scheme is jit-ed, sorry.) 
> You're welcome to post these solutions, if you include the 
> first paragraph of this message and my name. 

Okay, I'll see how I go.

Thanks for taking the time to put this together.

I can't really make a substantive comment since I have not read the research papers you've presented.

However, right off the top of my head, it feels like the approach you are suggesting is fairly narrow (and I feel also fairly limiting). Is this intentional, or am I misunderstanding? Is the goal here to limit the scope of computer science to a very specific set of concepts and outcomes?

I apologize if it is simply a misinterpretation on my part.

Kind regards,

Posted on the users mailing list.