August 21, 2023

Rust 101's first run at STU Bratislava

Henk

Embedded software engineer

Rust 101's first run at STU Bratislava
When we first introduced Rust 101 to you on our website, preparations for its first run where in full swing. The action started in February 2023; 20 students of the Faculty of Informatics and Information Technologies of the Slovak University of Technology in Bratislava followed 9 lectures and 9 tutorials, and worked on their own rust project to round off the course. The course was completed in May.

This first run was mainly taught by course creator Henk himself. Also involved were TG devs Folkert (co-teacher and co-developer), Ruben (co-teacher and co-developer) and Marc (co-developer and teaching assistant).

16 February 2023: the first lecture

On 16 February, Henk and Folkert had travelled to Bratislava and finally met with some of the staff and, of course, their students for the next 12 weeks. After a round of introductions in the classroom, it was time to dive into everyone's new favourite subject: Rust 101.

First lecture Day 1 of Rust 101 at STU FIIT: Henk is teaching and Folkert is assisting

Example of material

The remaining lectures were taught remotely. Marc had arranged a Discord server where students could enlist each other and their teachers for help, both during and outside class hours.

The full course covered a wide array of subjects, structured in such a way that even students who had never worked with Rust found themselves more and more confident in experimenting with it and eventually writing their own code. This is where the Discord server served its purpose.

To give you an example of what one set of a lecture and tutorial look like, take a look at the slides and the exercises of Module C, which deals with concurrency and parallelism in Rust.

Final project example

To show their teachers and prove to themselves what they had learnt, the students were tasked to design and build their own Rust project. They were given three weeks to do this and during class hours, Henk was available for live chatting or videocalling.

Now, teachers aren't supposed to pick favourites, but we'd like to show you someone's (we're not naming any names...) favourite project, because it's pretty cool to think that this was done by students who couldn't have done this two months earlier.

The students who did this project wrote a full-fledged image analysis and manipulation service in Rust. Pretty awesome if you ask us!

Final project structure The application structure of the image analysis and manipulation program

The future

It is our strong hope that many unis will pick up this course, or add one like it to the computer sciences curriculum in the near future. To make sure that this course material can be used by any institution, regardless of their budget or timeline, Rust 101 is modular and open-source. Educators can pick and choose the elements they want to cover, meaning they don't have to use the full 12-week course and can even incorportate parts of it into other courses!

Interested in running (part of) Rust 101 at your university? Check out the repo. If you're looking for help getting started, or you're looking for a teacher for this course, contact Henk.

(our services)

Interested in Rust?

We offer:

  • Engineering in Rust
  • Training and workshops
  • Rust 101

> Our Rust services

Henk

Embedded software engineer

henk@tweedegolf.com

Stay up-to-date

Stay up-to-date with our work and blog posts?

Related articles

At RustNL 2023, a Rust conference held in Amsterdam recently, I had the opportunity to talk about ntpd-rs, our project implementing the Network Time Protocol.
For some time, we have been quietly laying the groundwork for a new implementation of sudo in Rust. Now we are excited to talk about it!

While working on the Roc compiler, we regularly dive deep on computer science topics. A recurring theme is speed, both the runtime performance of the code that we generate, as well as the performance of our compiler itself.

One extremely useful technique that we have been playing with is data-oriented design: the idea that the actual data you have should guide how code is structured.