You’re working for Systematic Metagenomics, a bioengineering analytics firm that gathers and analyzes large quantities of metagenomic data. Although most of the company’s current projects involve viral metagenomics, your boss is considering expanding to projects in related fields, such as microbial resistomics (see, for example, Holt KE, Microbial genomics for antimicrobial resistance ecology and action, Nat Rev Genet. 2026;27:7–8. doi:10.1038/s41576-025-00909-z.)
A key part of your company’s analysis work is a large suite of
comparison algorithms on genomic and metagenomic data. These
algorithms are related to those used by GNU diff and similar
software engineering programs, for the same reason
that the
algorithm used by GNU diff is related to
the BLAST
algorithm for comparing protein or nucleotide sequences to a
database of sequences.
However, your company’s proprietary algorithms are not off-the-shelf:
they are specialized, complicated, and sometimes surprisingly
expensive.
Although most of the high-level code is written in Python,
for performance reasons most of the CPU and GPU cycles are spent in
code written in low level languages such as assembly language and
C/C++ for CPU-related code, along with
CUDA for GPU-related code.
Unfortunately your company’s code is sometimes unreliable: the low level code crashes due to hardware traps at the machine level or due to memory errors, overflows, or other undefined behavior at the C/C++/CUDA level. This can happen in the middle of a large, expensive run, thus either crashing the run or making the run’s results untrustworthy. Your boss is considering having your team write some or all of the low-level code into Rust, under the idea that this will improve reliability and improve the company’s bottom line.
To help address this you and your team are starting to write some new modules in Rust, with the idea of eventually converting much of the low-level C and C++ code to Rust. However, you have consistently been flummoxed by Rust’s memory-safety rules. At the simplest level, developers are sometimes confused by Rust’s sometimes-obscure diagnostics. More generally, developers have trouble, even with AI assistance, redesigning APIs so that modules can be coded and used conveniently in Rust-friendly environments. Your developers have read The Rust Programming Language but they still get confused and stuck far too often.
Your boss suggests that you read the following papers to help your team learn to do its work more efficiently:
Do some research on how well the approach used by Crichton, Gray, and Krishnamurthi (CGK) can help you and your fellow developers use Rust more effectively. Focus on the difference between the Rust book’s standard approach (which you should do first, as that’s what your team is already doing) and the CGK approach. Try out both approaches on coding problems of your own. Your boss wants to know whether the CGK approach will work well, and to some extent you’re the guinea pig.
Write an executive summary that gives the strengths and weaknesses of having your developers use the CGK approach to understand the Rust compiler’s diagnostics and to design their APIs, along with problems with using this approach. The idea is to explore the most-important language-relevant technical challenges in having your developers learn to use this new approach. The summary should be suitable for Systematic Metagenomics’s software executives, that is, for readers who have some expertise in software, and who know C/C++/CUDA reasonably well, along with all the languages already covered in this class.
The summary should be in 10-point font or larger and should be at most two pages. You can put references and appendixes in later pages, if you can’t get under the page limit: the appendixes can contain any source code or diagrams that don’t otherwise fit. One appendix should report on your experience with your particular coding problems. Please keep the resources for written reports and oral presentations in mind, particularly its rubrics and its advice for citations to sources that you consulted.
You are allowed, indeed encouraged, to use generative AI like ChatGPT, Claude and Gemini to write your summary. However, you must cite this source just like any other source, and must put into an appendix a complete log of your session (both prompts and results) with these services.
For the purpose of this assignment, assume the latest stable version of the language; you need not worry about portability to earlier versions. Specify the version number in your summary.
Submit a file hw6.pdf containing your summary.