Deadline: Feb 13 Wed
|Proposal element||Measure of quality||Points|
|Overview: High-level description||Clear, concise, and effectively communicate the key ideas of the language.||25%|
|Motivation: Use cases||Describes situations where the language will shine, and how the language will be used in those situations.||25%|
|Language features||Describes the pieces of the language and what they do. What tools and abstractions will be available to the user? What are the key design decisions?||25%|
|Example program(s)||Program(s) showcase interesting features and uses of the language. Program(s) are self-explanatory or are explained sufficiently.||25%|
Q: Can we compile to something other than LLVM?
A: By default, the compiler should compile the source code to LLVM bytecode. However, if you plan to design a really fancy and complex language, you can connect it to a higher-level language with the approval from the TAs. You have to convince us of its necessity.
Q: Can our language be similar to what other teams have done before?
A: Your language idea does not have to be totally novel, but you should think about some ‘twist’ you can add to your language to make it interesting. Do not just copy directly off of a past project.
Q: What if we discover later that some of our proposed features are too ambitious? A: It is okay if your final project looks different than what you proposed, we know that difficulty can be hard to predict. We will also try to give you a realistic idea of the difficulty of your language when we give you feedback on your proposals.
- GRAIL: A Graph-Construction Language
- FRY - A Flat File Data Processing Language
- Fly Language
- SetC: A Concise Set Language
- Coral Programming Language Proposal
The assignment and reference implementation are designed and implemented by Ryan Matthew Bernstein and Justin Wong, TAs for COMS W4115 Programming Languages and Translators, Spring 2019, Columbia University.