You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+24-3Lines changed: 24 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -8,12 +8,33 @@ Why? Have a look at our [blog post](https://tweedegolf.nl/en/blog/80/rust-101-op
8
8
9
9
This repo will contain everything that's needed to organize the course: slides, exercises, tools, setup instructions and more.
10
10
11
-
The rendered exercises, including installation instructions, can be found at <https://101-rs.tweede.golf>
12
-
13
11
*Currently highly in flux, and incomplete, but feedback and [contributions](./CONTRIBUTING.md) are welcome! So is sponsorship; read more below or on our [Sponsorship page](https://github.com/sponsors/tweedegolf).*
14
12
13
+
## Usage
14
+
Have a look at the [ModMod Readme](./modmod/README.md) for instructions on how to render the content of a track.
15
+
16
+
## Structure
17
+
The actual content can be found in the [`content`](./content) directory.
18
+
The content is structured in a tree of Tracks, Modules, Units, and Topics.
19
+
Tracks define a single course, which consists of one or more Modules, which again combines one or more Units, which again is a set of Topics.
20
+
Units roughly correspond to one lecture+tutorial (or at least that is the idea, but TODO), and consist of several Topics. Related Units are combined in a Module.
21
+
Topics are packages that cover a single topic, and include a small number of slides, some exercises, and an exercise descripion.
22
+
Topics can define their learning objectives, further reading material, and how they should be summarized in a Unit introduction.
23
+
24
+
Tracks, Modules, Units, and Topics and the files they refer to are described in the several TOML files in the [`content`](./content) directory.
25
+
[ModMod](./modmod/README.md) combines the content into a structure that can be directly published to your students in a Git repo, for instance.
26
+
27
+
## Pre-defined tracks
28
+
-[Rust Language Introduction](./content/rust-intro.track.toml) aims to introduce the basics to the Rust programming language, and to enable students to engineer their own applications and crates.
29
+
-[Rust for the Web](./content/rust-for-web.track.toml) covers content that is needed to use Rust in web applications.
30
+
-[Rust for Systems Programming](./content/rust-for-systems.track.toml) contains more low-level topics, to teach systems programming using Rust.
31
+
-[Scientific Rust](./content/scientific-rust.track.toml) is about using Rust in scientific programming.
32
+
33
+
*Note: although the outline of the tracks is mostly complete, the tracks may still contain TODOs. You're invited to contribute your own content to fix these!*
34
+
15
35
## High-level goals
16
-
Rust 101 aims to provide an open-source course, lectures, tutorials and exercises, that can be used by any higher education institution. In its entirety or by using bits and pieces to create your custom course.
36
+
Rust 101 aims to provide an open-source course, lectures, tutorials and exercises, that can be used by any higher education institution.
37
+
Use one of the pre-defined tracks, or compose your own with the content we provide and your own.
17
38
18
39
1. Provide a modular, resuable basis for live-taught Rust courses
19
40
2. Provide students with practical, hands-on experience
`modmod` is a tool that stitches together the Rust 101 content into a collection of exercise scaffolding, the exercise decription book, and Sli.dev slides.
4
+
Provide it with a track definition TOML file, and it will collect everything that's needed to run your custom course.
-o, --output <OUTPUT_DIR> The folder the output will be written to
15
+
-c, --clear Clear the output folder
16
+
-h, --help Print help
17
+
```
18
+
19
+
For instance, you can run the following to render the Rust intro track into `./target/course`:
20
+
21
+
```bash
22
+
cargo run -- -o target/course -c ../content/rust-intro.track.toml
23
+
````
24
+
25
+
Have a look at file the structure and the TOML files in [content](../content) to get an idea of how the input is structured.
26
+
27
+
## Output
28
+
29
+
ModMod outputs a file structure that looks like this:
30
+
31
+
```txt
32
+
$ tree -L 2
33
+
.
34
+
├── book
35
+
│ ├── book.toml
36
+
│ └── src
37
+
├── exercises
38
+
│ ├── 1-course-introduction
39
+
│ ├── 2-foundations-of-rust
40
+
│ └── 3-crate-engineering
41
+
└── slides
42
+
├── 1-introduction.md
43
+
├── 2-foundations-of-rust.md
44
+
├── 3-crate-engineering.md
45
+
├── images
46
+
└── package.json
47
+
````
48
+
Note that many subfolders were excluded in previous example. You can run `tree` yourself in the course output folder to see the structure deeper down.
49
+
50
+
The `book` folder contains definition of the MdBook containing the exercise descriptions. You can build it using [MdBook](https://github.com/rust-lang/mdBook):
51
+
```bash
52
+
# install mdbook using Cargo
53
+
cargo install mdbook
54
+
55
+
# Move to book path
56
+
cd /path/to/course/book
57
+
58
+
# build the book
59
+
mdbook build
60
+
61
+
# serve the book
62
+
mdbook serve
63
+
````
64
+
65
+
The `exercises` folder contains the scaffolding of the included exercises as referred to by the exercise description book.
66
+
The `slides` folder contains a package of the unit slides, which you can render using [Slidev](https://sli.dev).
0 commit comments