From: Jason Kantz
Subject: suggestions for lisp workshop
Date: 
Message-ID: <1142973318.136302.81970@i39g2000cwa.googlegroups.com>
I'm putting together a three day workshop on
programming in Common Lisp and I'm looking for
some input.  Below is an outline of my initial plan.
The workshop is targeted for beginners, and I
expect participants will be coming from a Java
background.

Here's how you can help:

- point out an essential topic you think is
  missing from below

- point me to or suggest a short exercise or
  programming task that you found helpful in your
  learning

Also in the marketing of this I'm taking the angle
of "Will learning lisp make you a better
programmer?"  It would be nice to have some lisp
endorsements.  If you are interested in supplying
a statement about what's good about lisp and why
you are glad you learned it, package one up in an
email with your name/credentials/job title and
send it to jason at kantz dot com.  I would love
to include it in my marketing materials.


Day 1

1 Hour

  emacs tutorial,

  slime tutorial, working with the toplevel repl,
  evaluation, advantages of parentheses

  Basics: boolean ops, conditionals, control
  constructs, let, specials

  lists, quote, list ops

  functions, lambda, functional programming
  constructs

  strings, arrays, sequences, hashtables,
  structures


1 1/2 hour

  2 or three fun, short programming challenges,
  which apply above material, and which
  participants solve on their own.  Then we
  compare and code review.  open to suggestions
  here


Day 2

1 Hour

  Error handling

  CLOS - material based on Jeff Dalton's brief
  guide to CLOS

  Macros, backquote, variable capture, gensym,
  destructuring, setf


1 1/2 hour

  exercises: Extend a small CLOS program
  compare and code review
  exercises: some basic macros
  compare and code review


Day 3

Overview of some select libraries:
  asdf
  Lisp Unit
  CL-PPCRE
  net-telent-date
  S-XML
  Allegroserve
  CLSQL

Exercises and code review

From: Peter Herth
Subject: Re: suggestions for lisp workshop
Date: 
Message-ID: <dvpprd$rpc$01$1@news.t-online.com>
If you allow me the shameless plug, but when you are at the
stage to introduce libraries, consider Ltk. Not only that
sooner or later someone wants to do some GUI stuff, using
Ltk is a lot of FUN :)

Peter


-- 
Ltk, the easy lisp gui http://www.peter-herth.de/ltk/
From: Jason Kantz
Subject: Re: suggestions for lisp workshop
Date: 
Message-ID: <1143041698.061132.316630@e56g2000cwe.googlegroups.com>
Thanks, I'll be sure to metion it as an option.  I think we'll be
working with Lispworks though, and in that case Capi is the most
logical GUI library--cross platform, no installation dependencies,
helpful user community.
From: Peter Seibel
Subject: Re: suggestions for lisp workshop
Date: 
Message-ID: <m28xr32vqo.fsf@gigamonkeys.com>
"Jason Kantz" <··········@gmail.com> writes:

> I'm putting together a three day workshop on programming in Common
> Lisp and I'm looking for some input. Below is an outline of my
> initial plan. The workshop is targeted for beginners, and I expect
> participants will be coming from a Java background.

So I happened to have spent two years of my life thinking about how
best to present Common Lisp to folks who are new to Lisp but have
experience programming in languages like Java and Python. One of the
things that I worked the hardest on was deciding the order to present
stuff. Turns out you can't introduce macros too early (if you do it
right) and there's no need to introduce lists until after a bunch of
other stuff. You can see my suggested order of presentation at:

  <http://www.gigamonkeys.com/book/>

-Peter

-- 
Peter Seibel           * ·····@gigamonkeys.com
Gigamonkeys Consulting * http://www.gigamonkeys.com/
Practical Common Lisp  * http://www.gigamonkeys.com/book/
From: Jason Kantz
Subject: Re: suggestions for lisp workshop
Date: 
Message-ID: <1143043318.293036.9030@i40g2000cwc.googlegroups.com>
Peter Seibel writes:
>  and there's no need to introduce lists until after a bunch of
> other stuff.

Agreed.  Many important concepts can be covered before
lists just using arithmetic based examples: evaluation rule,
functions, conditionals and predicates, tail recursion, tree
recursion, first class functions, lambda, functions that
return functions, let, free variables, lexical scope

> You can see my suggested order of presentation at:
>  <http://www.gigamonkeys.com/book/>

I'll certainly recommend your book.
From: justinhj
Subject: Re: suggestions for lisp workshop
Date: 
Message-ID: <1143044968.485027.197580@i39g2000cwa.googlegroups.com>
Jason Kantz wrote:
> Here's how you can help:
> - point out an essential topic you think is
>   missing from below

Just to do the opposite of what you suggest, I had a thought that
perhaps on day 3 you should cover less libraries rather than more. I'd
much rather spend half a day exploring a complete example of developing
a web server with allegroserve and maybe accessing a sql database or
doing some ajax, rather than try and do an overview of so many
libraries.

Something like Peter's mp3 database and server for example.

I also think it's great that you start out with slime showing them how
great that is. IMHO slime and emacs make lisp development really stand
out. Your code is alive on the page in a way that it cannot be in other
languages due to the way the environment works.

> - point me to or suggest a short exercise or
>   programming task that you found helpful in your
>   learning

A few things I did while learning :

  word frequency counter with a binary tree

  boggle board solver

  1 player text based blackjack game, including cheesey ascii card
drawing

Justin
From: Larry Clapp
Subject: Re: suggestions for lisp workshop
Date: 
Message-ID: <slrne234ao.po5.larry@theclapp.ddts.net>
On 2006-03-21, Jason Kantz <··········@gmail.com> wrote:
> I'm putting together a three day workshop on programming in Common
> Lisp and I'm looking for some input.  Below is an outline of my
> initial plan.  The workshop is targeted for beginners, and I expect
> participants will be coming from a Java background.
>
> Here's how you can help:
>
> - point out an essential topic you think is
>   missing from below
>
> - point me to or suggest a short exercise or
>   programming task that you found helpful in your
>   learning

I found these helpful (start at the bottom and work upwards):

http://theclapp.blog-city.com/read/javaandorlisp.htm

I especially enjoyed this one
http://theclapp.blog-city.com/shortest_path__lisp_version.htm, though
I don't know that it qualifies as "short".  :)

-- Larry
From: Paolo Amoroso
Subject: Re: suggestions for lisp workshop
Date: 
Message-ID: <87lkv2qrjg.fsf@plato.moon.paoloamoroso.it>
"Jason Kantz" <··········@gmail.com> writes:

> Also in the marketing of this I'm taking the angle
> of "Will learning lisp make you a better
> programmer?"  It would be nice to have some lisp
> endorsements.  If you are interested in supplying
> a statement about what's good about lisp and why
> you are glad you learned it, package one up in an

You may have a look at the "Why Lisp?" link in my signature.


Paolo
-- 
Why Lisp? http://wiki.alu.org/RtL%20Highlight%20Film
The Common Lisp Directory: http://www.cl-user.net