This repository contains the code for the video tutorials series Pragmatic Rust for Engineers by Janus IT and friends. The series teaches Rust programming and/or to solve engineering problems. Therefore the series addresses two audiences:
- Rust Programming Learners from Engineering disciplines such as Chemical Engineering, Electric Engineering, Mechanical Engineering, etc.
- Software Developers who want to apply Rust to tackle engineering problems or/and use Rust in scientific environments.
In the first part of the series we will investigate the Haber-Bosch process for Ammonia production. Haber-Bosch consumes 1.1% of the world's energy supply, and is responsible for 1.8% of the world's CO2 emissions. First, we will concentrate on simulating the reaction along a plug flow reactor, then add some plots to visualize our results and we conclude with some interaction via Web Assembly.
Read Jonathan Ayalas Blog Article about Haber-Bosch if you want to learn more.
We conclude the first season of Pragmatic Rust for Engineers with a WebAssembly powered tool to analyze the Haber-Bosch reaction.
Read Tim Janus Blog Article - if you want to know why learning Rust is worthwhile as an Engineer.
Pragmatic Rust for Engineers is a video series that teaches programming by applied coding on (simplified) engineering problems inspired from the real world. We propose four different learning strategies but it's up to you to choose what suits you best. We just want to add switching difficulty is always possible and redoing on a harder mode is always an option. The content is quite dense so don't beat yourself up, have fun and reach out if you have any questions.
- Just watch the Video
- difficulty: story-mode - An entertaining time, lean back and learn something.
- Investigate the Solutions Source Code
- difficulty: easy - An intense time, dig into the code in
solution.rs
and make sense out of it.
- difficulty: easy - An intense time, dig into the code in
- Code yourself supported with hints
- difficulty: medium - An adventure with helpful 'NPCs' scatter around the
hints.rs
source files.
- difficulty: medium - An adventure with helpful 'NPCs' scatter around the
- Code yourself only based on an implementation plan
- difficulty hard - A threatening adventure fight
main.rs
alone, you're only gear is your keyboard and mouse.
- difficulty hard - A threatening adventure fight
When choosing 4,3 or 2 you can use git as version control system to support you by restricting access to those files. For each task of the series you'll find three corresponding ordered commits and you can branch out from there.
task: task desc
- Contains the implementation plan and task description as markdown file.hint: task desc
- Contains some code and hints that show how tasks can be achieved in Rust programming.solu: task desc
- Contains the solution of the task at the end of the video (probably with some additional documentation)
If you haven't use git yet, no problem we show how use it in the first videos.
Beware sometimes we add the link here but the Video is scheduled later on YouTube.
- 0/x Pragmatic Rust for Engineers: Setting up your Rust Development Environment on Windows - 2023-12-04 8:00am CET
- 1/x Pragmatic Rust for Engineers: Steady-state Haber-Bosch Reaction - 2023-12-05 6:30am CET
- 2/x Pragmatic Rust for Engineers: Simulate and visualize a multi-bed Haber-Bosch Reactor - 2023-12-21 6:30am CET
- Tasks
- Hints
- Solution consist of main function and configuration, simulation and visualization module.
- 3/x Pragmatic Rust for Engineers: Interactive Haber-Bosch via WASM (Web Assembly) -
- Tasks
- [Hints] Contains the implementation we have at the end of the video, see the branch
tj_hints_v3
- or this git commit - [Solution] - Contains the tool that was used to do the analysis in the Video
All the code is dual-licensed under either:
at your option. This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.