This section describes who the project would serve and why a language might be a good way to meet their needs.
What need is met by your idea? Who are you helping? What is that person's experience like now? What would their experience be like if you could help them?
Why is a DSL appropriate for your user(s)? How does it address the need?
What excites you about this idea? How did you come up with it?
Describe the project's domain in five words.
How might the user interact with the language? What does programming look like? Why is this the right way to interact with the problem domain?
What might happen when a program runs? How does a program interact with the user? What kinds of errors might occur, and how might they be communicated to the user?
What should be easy to do in this language? What should be possible, but difficult? What should be impossible or very difficult?
Are there any other DSLs in this domain? If not, describe how you know there aren't and conjecture why not. If so, describe them and provide links. How well do they address the need? Are there any particularly admirable qualities of the language? Are there parts of the language you think could be improved?
This section examines whether the idea makes for a good CS 111 project.
If someone were to work on this project, what percentage of their time would be spent directly engaging in the language aspects of this project (e.g., making language design decisions), as opposed to "systems" aspects of the project (e.g., implementing a complicated semantics that doesn't require a lot of language design)?
How big an idea is this? How ambitious is this project?
Why might this be a good idea for a project? Why might this not be a good idea project?