We may earn an affiliate commission when you visit our partners.
Filip Jerga and Eincode by Filip Jerga

What is Rust?

Rust is a programing language. Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages.

What is WebAssembly? 

Read more

What is Rust?

Rust is a programing language. Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages.

What is WebAssembly? 

WebAssembly is a new type of code that can be run in modern web browsers — it is a low-level assembly-like language with a compact binary format that runs with near-native performance and provides languages such as C/C++, C#, and Rust with a compilation target so that they can run on the web. It is also designed to run alongside JavaScript, allowing both to work together.

Is this course right for you?

If you plan to start your career as a developer or improve your programming skills, this course is right for you. Learn how to build a browser game with minimal JS and Rust code compiled into WebAssembly instructions.

You will get the confidence and skills required to start your projects during this course. In addition, you will get the right mindset to apply for a developer career.

What are you going to work on?

You will build the Snake game from scratch. You will learn to write code in Rust language, static type, compiled language.

The course starts with an explanation and practical examples of the Rust language. You will learn Rust-specific features such as "moving" and "copying"

Rust doesn't have a garbage collector. Memory is cleared when the values are getting out of the scope. You will learn how to manage this concept with ease.

The next feature you will learn of is borrowing and references. Through references, you will be able to access values without owning them.

In the beginning lectures, we will also talk about memory management in Stack and the Heap structures, modularity, strings, and other essential topics.

After Rust's introduction lectures, you will start building your Snake game. You will learn how to structure the application modular and cleanly. 

You will build your own JS frontend, exposed through a simple Webpack development server. Later, you will transform JS implementation into TS (Typescript). This will specify types and be on the same page as Rust code.

You will build your rust backend code, the backbone of our game. You will learn how to compile Rust code into WebAssembly code. WebAssembly is code that can run in the browser. It's faster (almost Native speed) and more efficient than JS.

At the end of the course, we will create a production server and deploy our game to Heroku, so anybody on the internet can play our game.

Enroll now

What's inside

Learning objectives

  • Create a browser game made in rust/webassembly and javascript
  • Understand rust language in practical and fun way
  • Use gained knowledge to create your own applications
  • Establish yourself in the field of the exciting rust development environment

Syllabus

Introduction
[Optional] How to resolve issues
[Optional] Lecture Structure
Rust Preparation
Read more
Rust Installation
Rust Versions
Main Func
Mut Variables
Cargo Init
Basics Types
New function
Primitive types
[AI] Prim Numbers 2
Primitive Types 3
Move & Copy
AI Stack
AI More Stack
String Heap
String Move
AI Moves additional explanation
Return moved value
Copying age
Reference & Borrowing
References
Mutable borrow
AI Mutable Borrow Example
Dereference
AI Dereferencing
Strings
String vs &str
String slice
String Slice +
Clone
Box & Struct
Box type
Struct
Struct functions, methods
Constructors
Enums
Enum values
Enum match
If Let
Struct no fields
Traits
Trait
Trait narrowing
Modularity
Pub fields
Import options
Mod keyword
Nested modules
Super keyword
External lib
Display Trait
Into to WebAssembly
WebAssembly start + Link
More wasm
Load Wasm in Browser
Dev Server
[AI] webpack dev server
Copy plugin
Fetch wasm
Import to wasm
Wasm Memory
JS Memory
Preparing the Game
Pack Webassembly
Init Our Code
[AI] pkg files
Import FN to webassembly
Bootstrap
Wee alloc
Starting the Game
World struct
Getter width
Get canvas
Draw World
Create snake
Draw Snake
[AI] Debugger
Update the World
World Update
Set Timeout
Typescript
Snake random idx
Direction
Move in one row
Up and Down
Function refactor
Moving Snake
Keydown events
Change snake dir
Snake Cells
Cell Ptr
Invalid pointer
Render all cells
Snake color

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Uses Rust, a language known for memory safety and performance, offering a strong foundation for building robust web applications
Covers WebAssembly, which allows developers to run code written in languages like Rust at near-native speeds in the browser, improving performance
Includes TypeScript, which helps to specify types and stay on the same page as Rust code, improving code quality and maintainability
Culminates in deploying the game to Heroku, providing practical experience with cloud deployment and making the project accessible online
Requires familiarity with JavaScript and Webpack, which may pose a barrier to entry for complete beginners without prior web development experience
Focuses on building a Snake game, which may not be directly applicable to all web development projects, limiting the breadth of skills acquired

Save this course

Save Rust & WebAssembly with JS (TS) - The Practical Guide to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Rust & WebAssembly with JS (TS) - The Practical Guide with these activities:
Review JavaScript Fundamentals
Reinforce your JavaScript knowledge, as the course uses it for the frontend and to interact with WebAssembly.
Browse courses on JavaScript
Show steps
  • Review basic syntax, data types, and control flow.
  • Practice DOM manipulation and event handling.
  • Familiarize yourself with asynchronous JavaScript.
Brush Up on Webpack
Refresh your understanding of Webpack, as it's used to bundle the JavaScript and WebAssembly code.
Browse courses on Webpack
Show steps
  • Review the core concepts of Webpack, such as entry points, loaders, and plugins.
  • Practice configuring Webpack for different environments.
Read 'Programming Rust'
Deepen your understanding of Rust by reading a comprehensive guide.
Show steps
  • Read the chapters covering ownership, borrowing, and lifetimes.
  • Work through the examples and exercises in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Experiment with Rust's Ownership System
Solidify your understanding of Rust's ownership and borrowing concepts through hands-on practice.
Show steps
  • Create a small Rust project that involves complex data structures.
  • Implement functions that manipulate these data structures, paying close attention to ownership and borrowing rules.
  • Debug any compiler errors related to ownership or borrowing.
Write a Blog Post on WebAssembly
Reinforce your understanding of WebAssembly by explaining its concepts and benefits in a blog post.
Show steps
  • Research WebAssembly and its use cases.
  • Outline the key concepts of WebAssembly in a clear and concise manner.
  • Write a blog post explaining WebAssembly to a beginner audience.
Contribute to a Rust or WebAssembly Project
Deepen your understanding of Rust and WebAssembly by contributing to an open-source project.
Show steps
  • Find a Rust or WebAssembly project on GitHub.
  • Identify a bug or feature that you can contribute to.
  • Submit a pull request with your changes.
Read 'Rust Web Development'
Expand your knowledge of Rust web development by reading a specialized guide.
Show steps
  • Read the chapters covering web frameworks and APIs.
  • Experiment with the examples and code snippets in the book.

Career center

Learners who complete Rust & WebAssembly with JS (TS) - The Practical Guide will develop knowledge and skills that may be useful to these careers:
WebAssembly Developer
A WebAssembly Developer specializes in writing code that compiles to WebAssembly for use in web applications. Because this course has a focus on using Rust to develop WebAssembly applications, it is perfectly aligned with the responsibilities of a WebAssembly Developer. This course provides experience with all stages of the development lifecycle, including setting up a development server and configuring tools for development. A WebAssembly developer requires a deep understanding of memory management and performance, which this course provides through the study of Rust and its unique memory model. This course is highly useful for anyone who wants to become a WebAssembly developer.
Rust Developer
A Rust Developer is a software engineer who specializes in using the Rust programming language. This course is especially useful for aspiring Rust developers, as it introduces Rust programming concepts such as memory management, borrowing, and references. The course provides experience with the Rust toolchain and ecosystem. A rust developer should be able to use the Rust language to build performant and reliable applications. This course helps one work toward being a Rust developer by exploring many of its unique features.
Full-Stack Developer
A Full Stack Developer is responsible for both the frontend and backend aspects of an application. This course is particularly well suited for those interested in becoming Full Stack developers, as it covers both frontend development with JavaScript and TypeScript and backend development with Rust and WebAssembly. The course demonstrates how these technologies can be used together and provides experience with deploying a complete application to a server. The course additionally emphasizes the use of modular code, which is highly relevant to the work of full stack developers. This course gives the skills necessary to be a competent full stack developer.
Web Developer
A Web Developer creates and maintains websites and web applications. This course is particularly valuable for aspiring web developers because it covers the full stack, from the frontend with Javascript and Typescript, to the backend with Rust and WebAssembly. The course also gives learners experience with a development server and deploying a project, both of which are essential skills for a web developer. A web developer should be comfortable working with multiple languages and technologies, and this course provides a great way to gain that versatility. Because the course develops a complete game, it covers many different aspects of web development in a practical fashion.
Frontend Engineer
A Frontend Engineer builds user interfaces for websites and applications. This role often involves working with JavaScript and HTML, and this course helps by delving into these languages, as well as Typescript, a superset of Javascript which adds static typing. This course also provides experience building a frontend with Webpack. A frontend engineer will often need to integrate with and call APIs which might be written in other languages, which is a skill learners of this course will develop through their work with Rust and WebAssembly. This course provides a pathway for those interested in this position by developing knowledge of the tools and technologies used by frontend engineers.
Software Engineer
A Software Engineer designs, develops, and tests software applications. This course helps give aspiring software engineers a great foundation by exploring memory management, a key concept in computer science, and working with multiple programming languages. The course also demonstrates how different programming languages can work together, a critical skill for software engineering. A software engineer should be well versed in a variety of programming paradigms, which makes this course useful through its introduction to Rust's unique features. The course specifically works with rust's memory management, which will allow a software engineer to write more efficient and reliable code.
Game Developer
A Game Developer designs, codes, and tests video games. This course is highly relevant to aspiring game developers because it involves building a browser game from scratch using Rust, WebAssembly, JavaScript, and TypeScript. Game developers can use a wide array of tools and languages, so experience with compiled languages like rust is useful. The course teaches memory management and performance critical concepts that are specifically relevant to building games. The course also provides experience with structuring an application with modular code, which is important in building complex games.
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests software and hardware for embedded systems. While this course focuses on web based systems, the core concepts are useful for embedded systems engineers to learn. Rust is commonly used in embedded systems because memory and resource management are critical. This course explores these topics in depth. An embedded systems engineer should be able to write memory efficient code, and this course helps teach those concepts. This course may be useful if one wants to become an embedded systems engineer.
Application Developer
An Application Developer develops software applications for a variety of platforms. This course may be useful to aspiring application developers due to its work with multiple languages and the process of structuring a project, including modularity. Application developers build and deploy software products, similar to what is done in this course through building and deploying a game. The course additionally covers memory management, which is a core concept in application development. This course may aid in becoming a more effective application developer.
Software Architect
A Software Architect designs the high-level structure and components of a software system. This course helps build a foundation for aspiring software architects by teaching how to structure a project, implement modularity and how to use multiple programming languages together. Software architects must also be able to discuss details like memory management, which is explored in this course. Although this course does not focus on architecture itself, it may be useful in becoming a software architect.
DevOps Engineer
A DevOps Engineer is involved in automating software deployments and infrastructure. This course provides experience deploying a software product to a server, a key responsibility of a DevOps engineer. This course may also be useful because it covers the entire development cycle, from code to deployment. While this course does not focus on DevOps topics, it would be useful for an aspiring DevOps engineer to better understand the technologies they are deploying and managing. This course may be helpful to a DevOps engineer.
Technical Lead
A Technical Lead manages a team of developers and helps guide the technical direction of projects. This course may be useful for aspiring Technical Leads as it covers many of the fundamental topics that software engineers will work with. A technical lead needs to understand a wide array of technical topics, so courses like this that demonstrate working in multiple languages will be useful. This course may help a technical lead become more effective.
UI Developer
A UI developer specializes in the implementation of the user interface for websites and applications. This course helps by providing experience using JavaScript and TypeScript, both of which are commonly used in UI Development. This course also shows how to structure a frontend project, using tools like Webpack. A UI developer will need to implement the designs or mockups created by a UI designer. This course may be beneficial to becoming a UI developer.
Backend Developer
A Backend Developer focuses on the server-side logic and databases of a web application. This course is helpful for learning how a backend can be built from technologies like Rust and WebAssembly. The course covers the process of deploying that backend to a server as well. This course may be useful for those wishing to go into backend software development.
Mobile Developer
A Mobile developer specializes in writing code for mobile applications using various languages. This course may be useful as it covers key programming concepts such as memory management, modularity, and how to structure an application. While this course focuses on web development, the experience gained by learning multiple languages is beneficial to all aspiring software developers, including mobile developers. This course may be helpful to those wishing to become mobile developers.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Rust & WebAssembly with JS (TS) - The Practical Guide.
Provides a comprehensive introduction to Rust programming. It covers the language's core concepts, including ownership, borrowing, and concurrency. It valuable resource for understanding the Rust language in greater depth than the course provides. This book is often used as a textbook in university courses.
Focuses on using Rust for web development, covering topics like server-side rendering, APIs, and web frameworks. It provides practical examples and guidance on building web applications with Rust. This book expands on the course by providing more depth on how to use Rust in web development. It useful reference for building web applications with Rust.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser