Any recommended study materials in this case?

Hi.
Maybe this is beyond the scope of the question I should be asking here.

My major is not computer science, but bioinformatics.
In bioinformatics, good coding skills are needed to make analysis programs.

Do you know of any resources that teach Rust-specific or general programming concepts or skills?

I'm interested in optimization, high performance, stability especially. But other concepts should be fun.

If you know of any, please let me know.

I think it's hard to point/guide you to specific learning resources since the way you have formulated your question is too vague, but since you are just starting to learn to code that's fine.

I have a collection of general software development resources that you can check out here: Firebits - Your online hub for building and sharing knowledge

If you are interested in Rust-specific material, you find it here: Firebits - Your online hub for building and sharing knowledge

1 Like

In bioinformatics, the most frequently encountered general problems and areas of interest are:

  • Large amounts of data. High-performance computing topics, such as parallelism (threading, SIMD), caching/memoization, and efficient data structures (databases, persistent hash tables, etc.) are often needed for reducing constant factors in algorithms, in order to make treatment of eg. huge alignment problems at least tractable. Making algorithms mechnaically sympathetic to specialized hardware (GPUs and FPGAs) is another major area of research.
  • Relatedly, dynamic programming underlies many search and pattern marching algorithms, which are central to sequence processing. In addition, research into old problems (such as regular expressions or efficient string indexing, eg. the Burrows-Wheeler transform) still continues to yield new results and is worth studying at least superficially.
  • Some bioinformatics problems are coupled with, or involved in the creation of, statistical models, machine learning methods, or related tools. In these problems, scientific computing, numerical methods, efficient linear algebra and general tensor operations, and basic signal processing techniques (such as filtering and convolution) are essential to understand. You'll need to learn about de facto "standard" software (such as the SciPy ecosystem, Apache Arrow, or Polars in rust), file formats (such as npy/npz or matlab workspaces) and organizing the reproducible fitting and reliable deployment of machine learning models using popular tools (eg. ONNX).
  • Nowadays, bioinformatic pipelines are mostly used in decentralized cloud environments, simply because consumer-grade hardware is usually hopelessly underpowered to handle the sheer computational needs of the usual bioinformatics problem. However, bioinformatics scientists often work without proper IT support, partly because traditional software engineers and DevOps engineers usually do not possess the necessary domain knowledge, and partly because they often work in an academic setting, where human and financial resources are scarce. Consequently, knowledge in the topics of infrastructure management, containerization, and higher-level systems architecture is also something a competent bioninformatics practitioner needs to seek.
  • Software engineering and quality are a huge issue. Again, a large share of bioinformatics software is conceived in an academic environment, where "proof of concept" level code quality is the maximum most people who write software will ever reach, and most academics either simply aren't capable of following/oblivious of contemporary good software engineering practice, or they are aware but view it as an unnecessary annoyance. As a result, the typical bioinformatics software (with notable exceptions) is of extremely low quality, hard or impossible to maintain and modify, fragile in the presence of non-ideal or incorrect input, inefficient in its usage of computational resources, and/or downright full of bugs, crashes, and undefined behavior. Therefore, a unique selling point can be a piece of software in which it is not only the underlying theory that is cutting-edge, but the execution is also decent. If you allow yourself to learn about proper software engineering as opposed to just "coding", you'll be able to stand out of the crowd.
3 Likes

Thank you very much guys.