Possible topics
Some potential topics are listed below. The ones that I am more likely to be able to prepare detailed guidance for are shown earlier in the list.
Using our existing benchmarks plus a new benchmark that you develop, compare your implementation with a implementation of a language such as Python, Lua, Guile, or similar. Use the benchmarks to improve run-time performance.
Enable any binary operator to take a literal as its second operand. This is the single best step that I personally could take to improve the performance of my system: compiling and expression like
(+ n 1)
or(> i 0)
into a single VM instruction can speed up inner loops noticeably.Implement μML pattern matching (no type system required).
Turn vScheme into Nano-ML, remove tag checks from VM projections
If you’re taking CS 107, translate your 107 language to run on your UFT/SVM system
Implement a more user-friendly concrete syntax (Python, Lua, JavaScript, Haskell)
Use your UFT and SVM to create tools that people could actually use, either in CS 105 or elsewhere: a read-eval-print loop complete with
use
, and support for#!
scripts.Implement error handling.
Implement a peephole optimizer
Compile vScheme code to C code, eliminating instruction-dispatch overhead
[Propose your own topic here]
Learning outcomes
To be determined.