Due: Tuesday, June 11, 2024 at 3:30PM (start of final exam time)
The goal of CS340R is to start to answer the question:
“What are the most important open research challenges for software systems written in Rust?”
Over the past quarter, you have been re-implementing a research or other open source software system in Rust, to gain experience in writing difficult Rust systems code and the challenges you encounter when doing so. In this final assignment, you write up your results.
Your report should be an 8-10 page paper in two-column ACM conference style. The ACM has LaTex and Word templates. You are not writing a standard research paper, but you can still follow the same basic structure:
Abstract: summarize the contents of your document such that a reader knows what they might learn, reading it.
Introduction: summarize the the whole paper, being sure to explicitly call out the important findings (make someone want to read more).
Background: summarize/describe the system you re-implemented, the performance metrics you chose, and why.
Design: describe your Rust implementation, how it differed from the existing one, and any parts of it that were particularly difficult. Dig into the Rust code here, compare and contrast it with the original language. Be sure to bring up any decisions or changes you made to fix performance problems. Authors typically use the minted package for code listings in LaTeX.
Evaluation: Show your results, side by side with figures copied from the original paper. Explain the results, especially if they differ. If you do not know why they differ, say so: do not invent hypotheses that you don't have any real basis for. If your hypothesis has some futher evidence that supports it, describe the evidence and explain.
Discussion: looking back, were there things that seemed unnecessarily hard? Rust memory management, for example, is inherently tougher than C because of its safety guarantees. But were there particular pieces of your software for which there seemed to be no good solution and you had to do something obviously bad (e.g., rely on lots of clones, significantly restructure your code for a trivial detail). Were there problems for which you couldn't find any good resources or guidelines about? E.g., is there an “I wish I had….”?
We will also talk about report expectations in class on Tuesday 5/28.
Send an email to cs340r-spr2324-staff@lists.stanford.edu, with the subject “Team <NAME> Final Report”, attaching your report as a PDF.