More seriously though it is really useful for people who are going into embedded or systems programming to write a command line interpreter at some point in their studies. It blends a couple of disconnected courses (data structures and parsing) into something tangible and useful.
I wonder if there is a good canonical list of chunks that you should be able to create from a blank sheet of paper in order to demonstrate mastery of CS. I would put an interpreter, a database, a CLI (shell), a compiler, a scheduler, and a device driver as the list but there might be others.