Project Ideas

Here are some brief ideas for projects. These are jumping-off points, for you to explore and discover something that is interesting to you. You can also look back at our class notes and assignments for inspiration or talk with me!

If there is something you are interested in that is not on this list, please let me know! I am happy to help you find resources and get started on a project that is interesting to you.

Ultimately, we will work together to decide on a project that is exciting and challenging for you, and which is scoped appropriately for the time we have.

Support

  • IDE for the hmc language
  • Benchmarks for our compiler
  • Continuous integration / testing for our compiler

Front

  • New source language and / or language features
    • More types
    • String operations
    • Arrays
    • Object-oriented features
    • Functional features (e.g., higher-order functions or pattern-matching)
    • A type system
    • Modules
  • Better parse error messages

Middle

  • Semantic analysis
    • Type checking
    • Name resolution
    • Pointer analysis
    • Dataflow analysis
  • Intermediate representations
    • Control-flow graph
    • Static single assignment (SSA) form
    • LLVM IR
    • Continuation-passing style (CPS)
  • Optimizations
    • Local (straight-line code)
    • Regional (single loops, or other control-flow structures)
    • Intraprocedural (whole functions)
    • Interprocedural (whole program) -Low level (e.g., peephole optimizations or register allocation)

Back

  • Code generation for a new target architecture
    • ARM
    • RISC-V
    • WebAssembly