In this paper, the S-expression Interpreter Framework (SIF) is presented as a tool for teaching language design and implementation. The SIF is based on the interpreter design pattern and is written in the Ruby programming language. Its core is quite small, but it can be easily extended by adding primitive procedures and special forms. The SIF can be used to demonstrate advanced language concepts (variable scopes, continuations, etc.) as well as different programming styles (functional, imperative, and object oriented). Categories and Subject Descriptors D.3.4 [Programming Languages]: Processors - interpreters, run-time environments. General Terms Design, Languages. Keywords Interpreter, Ruby, S-expression, Design Patterns.