[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: following up on speed

At Sat, 20 Jul 2002 16:43:10 +0200, Michael Sperber [Mr.  Preprocessor] wrote:
> >>>>> "Daniel" == Daniel Weinreb <DLWeinreb@attbi.com> writes:
> Daniel> At MIT, we were taught to think about semantics and abstraction much
> Daniel> more than we were taught
> Daniel> to think about performance. There is a real danger in taking this
> Daniel> approach too far.
> Daniel> Those of you on this list who regularly initiate
> Daniel> undergraduates into the mysteries of Scheme: do you teach them
> Daniel> performance analysis? In the first semester?
> Not in the first semester.  IMHO, performance analysis, to be
> meaningful at all, requires a basic understanding of the execution and
> machine model, which usually happens later in the intro sequence of
> courses.
> The real reason for not doing it that early, however, is that
> beginning students have a tendency to take new techniques too far:

Mile's right. I introduce it in the sophomore/junior level course on 
principles of PLs. I slowly take apart an interpreter, get an abstract
machine, and eventually a gc. I note how things affects performance. 

I have always wished that the algorithms course in the second semester
be based on performance analysis and performance debugging of somewhat
larger programs. I could never convince a colleague. 

As for tail-recursion, I have stopped mentioning the word to beginners. 
It's pointless. If you want them to think "loop", teach them about 
map, for-each, andmap, ormap, foldr, build-list, etcetc. Never mind that
tail-recursion stuff. 

-- Matthias