Those who do not know Lisp (or Scheme) are doomed to reinvent it.
I wrote this for two reasons:
I wanted to learn Scheme because many claim that doing so will make you a better programmer. Looking back now, I find this to be true and I found many reasons to learn Scheme. The most important one is to learn about computation to improve computational thinking. Learning Scheme introduced me to numerous important concepts: evaluation, s-expressions, lambda expressions, procedures, procedure calls, recursion, tail-recursion, pairs, lexical closure, delayed evaluation, memoization, macros. If none of these mean anything to you, just look at their number.
The only knowledge I had was programming experience in C and some intuition about what computers, variables, functions, data structures, and pointers are.