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
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/
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.
"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/
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.
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
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
"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