Practical Networked Applications in Rust, a training course

Hey Rust folk.

Here’s a project that I’ve been hacking on (with Yilin Chen and
Xuwei Fu) that I hope might interest people. It’s a training course
on building real-world systems software with Rust, Practical Networked
Applications in Rust
.

I think it is commonly recognized that while there is quite a lot of good Rust
documentation, there are not many guides on putting the pieces together to
create complete software projects. So this is an attempt to fill that gap.

Details about the course are in the link, but a short summary is that it
leads you through a series of projects, all on the same codebase, that
incrementally integrate new Rust subjects, finally resulting in a
high-performance, networked, parallel and asynchronous key-value database.
Before each project, the topics are introduced independently
through external resources and small exercises. It’s my hope that the course
both explicitly and implicitly teaches people a variety of things about best
practices, the crate ecosystem, the documentation ecosystem, tooling,
systems-level programming generally, and other tidbits that new Rust programers
typically have to discover on their own.

I am creating it for my employer, PingCAP, as a tool for onboarding new Rust
programmers, but I am also determined that it be useful for a broader audience
of aspiring Rust systems programmers. In particular, even though the end-product
is a database, I intend that there is, or will be, enough subject matter to
cover a wide variety of systems programming concerns.

Today it is definitely in an “alpha” state and incomplete, but it is starting to
look pretty neat, so I want to get it in front of people and get feedback. The
scope is still modest (it gets through four projects decently, the fourth being
on parallelism, and then falls apart on the next async project), but I think it
could ultimately span at least 10 projects, with more content to be added to the
existing projects as well.

Because of its incompleteness, I can’t wholeheartedly suggest that you actually
take the course, but for any that do I would be grateful to hear about your
experience. And even if you don’t try the course, I’m still interested in your
feedback, what you think of the structure and the progression, what topics you want
in this kind of material, etc. Besides individual mentoring and blog posts, I
don’t have any background as an educator, so any thoughts about how learnable
this looks and what to do to make it moreso are also hugely appreciated.

Cheers :beers:

31 Likes

Looks totally awesome. I’ll be going through it starting tomorrow. Any specific place you want feedback?

wow, that’s awesome

Totally agree with you. It’s been a while I’m struggling with Rust but I couldn’t find any project based tutorials for beginners.

1 Like

Will it get to a non ‘Alpha and Beta’ state ? Be complete ? Not fall apart ? Be at least 10 projects strong ?

@jbowles I’m especially interested to hear about places where there is not enough explanation to complete the task at hand. I’m also interested to hear what topics people want covered that fit into the context of this course.

@PaulGureghian I hope that it will be complete by September.

2 Likes

Love the course :wink: Thanks for making it and the other courses, super useful resource for those of us looking to get our hands dirty with Rust back-end/distributed systems programming!