Delete search term

Header

Main navigation

School of Engineering

CEC Rust for Embedded Developers

Rust is a system programming language developed by the Mozilla Research Team. It attaches particular importance to security, speed and parallelism, and is becoming increasingly significant. Rust combines high performance with comprehensive security through a powerful type system and advanced tooling. Innovative concepts such as ownership, avoidance of null pointers and prevention of data races help to avoid typical programming errors and security vulnerabilities.

Apply

Compare favorites

At a glance

Qualification:

Confirmation of course (2 ECTS)

Start:

17.02.2025

Duration:

Costs:

CHF 2'100.00

Location: 

ZHAW, Building MT, Technopark, Winterthur, Trakt A, Technoparkstrasse 2, 8401 Winterthur  (Show on Google Maps)

Language of instruction:

  • German, English
  • Language of instruction: German / Documents: English

Objectives and content

Target audience

This course is aimed at software developers who:

  • Work in the fields of embedded systems, system programming or C/C++
  • Work with safety‐critical and/or performance‐critical systems
  • Have identified potential use cases for Rust and want to evaluate the language

Objectives

Participants gain both basic theoretical knowledge and practical skills in the following areas:

  • Key aspects of the language
    • Fundamentals (types, control flow, functions)
    • Memory management (ownership)
    • Object-oriented programming (polymorphism, dynamic dispatch)
    • Functional programming (algebraic data structures, closures, iterators)
    • Advanced techniques (concurrency, asynchronous programming)
       
  • Secondary aspects of a programming language essential for productivity
    • Project structure
    • Tooling
    • Use of libraries
    • Continuous integration & delivery

Content

The CEC Rust for Embedded Developers teaches the fundamentals to be able to work productively with the language. The focus is placed on a comprehensive understanding of the language, regardless of specific use cases. Further topics such as Rust-specific libraries and continuous integration are also covered. At the end of the course, participants implement a production-ready project including continuous delivery. They specialise in a field of application they choose themselves, such as embedded systems.

The CEC Rust for Embedded Developers consists of six teaching units comprising six lessons each. During the first two days of the course, participants familiarise themselves with the basics of the Rust language (Language Basics). Over the next two course days, students learn about the advanced features that distinguish Rust as a modern programming language (Advanced Features). During the last days of the course, participants receive an introduction to the key development tools (Development Tooling) in order to implement their own production-ready software project (Production-Ready Project).

Block 1 (six lessons)
Content

  • Types
  • Control flow
  • Functions
  • Memory management

Learning objectives

  • Participants can write simple Rust programs with universal programming constructs.
  • Participants understand the Rust Memory management system.

Block 2 (six lessons)
Content

  • Algebraic data types
  • Methods
  • Project structure
  • Error handling

Learning objectives

  • Participants can develop idiomatic data models.
  • Participants can apply idiomatic error handling. 

Block 3 (six lessons)
Content

  • Lifetimes
  • Closures
  • Iterators

Learning objectives

  • Participants can apply polymorphism.
  • Participants can use APIs with anonymous functions.
  • Participants understand the concept of a lifetime annotation.  

Block 4 (six lessons)
Content

  • Smart pointers
  • Concurrency
  • Static & dynamic dispatch
  • Asynchronous programming

Learning objectives

  • Participants understand secure concurrency and know the most important smart pointers.
  • Participants can apply dynamic dispatch.
  • Participants understand asynchronous programming (async/await). 

Block 5 (six lessons)
Content

  • Libraries
  • Documentation
  • Tooling
  • CI/CD
  • Project start

Learning objectives

  • Participants can find, evaluate and utilise Rust libraries and use their documentation.
  • Participants are familiar with the key development tools.
  • Participants can set up a CI/CD pipeline for a Rust project.

Block 6 (six lessons)
Content

  • Project completion

Learning objectives

  • Participants can complete a production-ready Rust project right up to delivery.
     

Combined with two hours of self-study for preparation and another two for review (6 x 4 hours), this results in a total of 60 hours (2 ECTS).

Methodology

The course consists of teaching units, practical exercises, and elements of e-learning and self-study (preparation and review). The final software project, in which a specific case study is developed, can be implemented individually or in groups.

More details about the implementation

Part-time classes take place every other week on Monday afternoons from 1 p.m. to 7 p.m. (six lessons). The course takes three months to complete. Participants receive their individual timetables at least one month before the course starts. Time off during the course is determined by the school holidays of the city of Winterthur.

Dates 2025: 17.02. / 03.03. / 17.03. / 31.03. / 14.04. / 05.05.2025

Enquiries and contact

Provider

School of Engineering

Application

Admission requirements

Admission to this continuing education course requires a university degree (university, university of applied sciences, ETH, HTL, HWV). However, candidates with practical experience or similar professional skills may also be accepted if their ability to participate can be demonstrated by other means. 

Basic knowledge of programming and in particular an understanding of Stack, Heap and manual storage management are required.

Information for applicants

We do not maintain waiting lists and do not offer spot reservations.
If a spot frees up during the preceding course, we will take into account the order in which applications were received.

Start Application deadline Registration link
17.02.2025 17.01.2025 Application