Go check out Peter Norvig's "Write a lisp interpreter in Python": http://norvig.com/lispy.html
It's a very slick implementation. BTW, we had a similar requirement for our "Programming Languages" undergraduate course: to implement our own language with a BNF grammar, parser, etc (done in ML). It was one of the best learning experiences we had!