CS577 PROJECT GUIDELINES DATES Apr 27 Initial proposals due May 4 Final proposal approval required May 25 Progress report due June 12 Project delieverables and writeup due RULES Each student must do a substantial programming project or write a substantial survey paper on a topic relevant to the course. Students choose their project/topic, with agreement of the instructor. It is permissible to work in teams of two on a project (but not on a paper), with a corresponding increase in expectations. The project or paper will count as roughly 2/3 of the course grade. The grade will factor in the difficulty of what you attempt as well as the quality of your results. EXAMPLE CODING PROJECTS There are *only* examples. The best projects are usually the ones you think of yourself. o Build an LLVM or WebAssembly backend for a toy language (e.g. Appel's Tiger or miniJava) o Use the Spoofax DynSem tool to generate an interpreter for some interesting language o Translate a Java subset to functional IR and implement some simple optimizations o Implement a new GC algorithm for the Jikes RVM, and compare its performance with that of existing collectors on that platform. o Do a careful performance comparison of code produced by three different JavaScript compilers on a suitable benchmark suite. Don't attempt to do too much! (The suggestions above are already pretty optimistic.) As a general rule, learning to use any existing framework is very timeconsuming, so you should not plan to do anything very big on top. If you want to explore a deeper idea, try to use a more toy framework. Teams of two are allowed on coding projects. Some possible platforms for coding projects: o LLVM (Low Level Virtual Machine) o Graal (Oracle's experimental JIT compiler for JVM) o Truffle (Oracle's framework for efficient interpreters hosted in Java) o Spoofax (TU Delft language prototyping environment) o WebAssembly (Native code platform for browsers) o RPython (framework for efficient interpreters hosted in Python) o Open JDK o My Mini-JVM o Jikes (IBM's research Java-in-Java JIT) o CompCert certified compiler (written in Coq/OCAML) EXAMPLE SURVEY PAPERS Again, these are *only* examples. o Performance assessment of gradual typing systems. o Data-race detection mechanisms for parallel code. o Compiler structuring techniques for heterogeneous cores. o Machine learning techniques in compilation. o Techniques for verifying correctness of compiler transformations. Surveys should cover about six conference or journal papers that "speak to each other." No teaming is allowed on survey papers. INITIAL PROPOSAL CONTENTS Your initial proposal should be one page. It should describe the following: o Project/paper topic. This should be described by saying what question your project is going to answer. Examples: Which commercially available Java JIT produces the fastest-running code? Does garbage collection algorithm XYZ make the Jikes optimizing JVM run faster than existing GC's? How can optimizers inline functions even in the presence of dynamically loaded code? o Approach. Are you doing experimental comparison, implementation, or a research paper survey? o Deliverables. What do you plan to hand in? Just a paper? Experimental results? Code? o Materials and tools If you're doing an experimental comparison or implementation, what existing software and tools will you work with? If you're doing a research comparison, list at least 4 key papers you plan to include in your literature survey. Proposals should be submitted by email to me on the due date. I will give feedback on them as quickly as possible. I may encourage you to narrow your topic, use a different approach, or use different tools. In rare cases, I may require you to change your topic. It is a very good idea to discuss topics with me in advance. PROGRESS REPORT A 1-2 page intermediate progress report will be required about three weeks into the project. This is intended to help keep projects on track. PROJECT WRITEUP All projects, even those whose primary product is code, must include a written summary of methods and results.