Commit 61d0f76b authored by Dario Pinto's avatar Dario Pinto
Browse files

refacto training pages

parent 2065f29d
<h1 id="page-title">Course Mastering Opam & OCaml tooling</h1>
<h2 class="page-subtitle">Overview</h2>
The OCaml package manager opam has reached an exceptional popularity in the OCaml world. It can now be seen as the easiest way to install OCaml and its development environment on any computer. But did you know that opam was also designed to integrate nicely in a professional could boost your development productivity too?
Objectives
<br />
* Understand how opam interacts with repositories
* Understand how opam manages package dependencies
* Use expert-level opam options
* Discover undocumented features of opam
* Create your own public packages
* Create your private repository
* Include opam in your company development process
<div class="row">
<div class="col-lg-6">
<ul class="list-group list-group-flush">
<li class="list-group-item">Length: 2 Days</li>
<li class="list-group-item">Pricing: 12 000€ for 10 people, though customizable with duration and location</li>
<li class="list-group-item">Attendees: developpers</li>
<li class="list-group-item">Available remotely: yes</li>
<li class="list-group-item">Tutors: our engineers</li>
</ul>
</div>
<div class="col-lg-6">
<h4>Make it happen!</h4>
<br />
<div class="col-lg-12" align="center">
<div class="list-group">
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Next sessions!</a>
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Contact us!</a>
</div>
</div>
</div>
</div>
<hr class="featurette-divider">
<h2 class="page-subtitle">Course Prerequisites</h2>
The course assumes the knowledge of another programming language, so that basic programming paradigms are known. No prior knowledge of OCaml or functional programming is required.
Participants are expected to have a computer with Internet access during the course (Linux, Mac OS X or Windows), to be able to access the main opam repository. They should create a GitHub account prior to the course, and can upload an SSH key (it can be done during the course).
<h2 class="page-subtitle">Overview</h2>
<h2 class="page-subtitle">Practice</h2>
The OCaml package manager opam has reached an exceptional popularity in the OCaml world. It can now be seen as the easiest way to install OCaml and its development environment on any computer. But did you know that opam was also designed to integrate nicely in a professional could boost your development productivity too?
The course is half theory, half practice. Participants will have to call opam with many configuration parameters, they will create their own repositories and packages. Participants can come with their own (small) source packages as examples.
<h2 class="page-subtitle">Registration</h2>
This course is tailored for a duration of 2 days on site (12k€ HT for a group of 10 participants at most). The content is adapted to the duration and participants’ profiles. <a href="mailto:contact@ocamlpro.com">Contact us!</a>
<div class="row">
<div class="col-lg-6">
<h3>Objectives</h3>
<ul>
<li>
Understand how opam interacts with repositories
</li>
<li>
Understand how opam manages package dependencies
</li>
<li>
Use expert-level opam options
</li>
<li>
Discover undocumented features of opam
</li>
<li>
Create your own public packages
</li>
<li>
Create your private repository
</li>
<li>
Include opam in your company development process
</li>
</ul>
</div>
<div class="col-lg-6">
<h3>Prerequisites</h3>
<li>
Being familiar with another programming language
</li>
<li>
Participants are expected to have a computer with Internet access during the course (Linux, Mac OS X or Windows), to be able to access the main opam repository. They should create a GitHub account prior to the course, and can upload an SSH key (it can be done during the course).
environment.
</li>
</div>
</div>
<h1 id="page-title">Course OCaml Code Optimization</h1>
<h2 class="page-subtitle">Overview</h2>
<br />
This training has been designed by the OCamlPro team to focus specifically on writing the most efficient code for demanding applications. Participants will benefit from the direct involvement of the OCamlPro team in the development of OCaml compilers.
Objectives
1. Write the most efficient code for your applications
2. Understand the transformations performed by the compilers
3. Optimize data structures for garbage collection
<div class="row">
<div class="col-lg-6">
<ul class="list-group list-group-flush">
<li class="list-group-item">Length: 2 Days</li>
<li class="list-group-item">Pricing: 12 000€ for 10 people, though customizable with duration and location</li>
<li class="list-group-item">Attendees: developpers</li>
<li class="list-group-item">Available remotely: yes</li>
<li class="list-group-item">Tutors: our engineers</li>
</ul>
</div>
<div class="col-lg-6">
<h4>Make it happen!</h4>
<br />
<div class="col-lg-12" align="center">
<div class="list-group">
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Next sessions!</a>
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Contact us!</a>
</div>
</div>
</div>
</div>
<hr class="featurette-divider">
<h2 class="page-subtitle">Program</h2>
1. OCaml’s compilers internals
2. Analysis of code transformations at different passes
3. OCaml’s Garbage Collector internals
4. Efficient code examples
5. Efficient data structures
6. Profiling code and memory
<h2 class="page-subtitle">Course Prerequisites</h2>
The course assumes some experience of the OCaml language and its programming environment. Participants are expected to have a computer access during the course (Linux, Mac OS X or Windows), an easy-to-install OCaml archive will be provided before the course to setup a minimal but productive environment.
<h2 class="page-subtitle">Overview</h2>
<h2 class="page-subtitle">Practice</h2>
This training has been designed by the OCamlPro team to focus specifically on writing the most efficient code for demanding applications. Participants will benefit from the direct involvement of the OCamlPro team in the development of OCaml compilers.
The course is half theory, half practice. Participants will have to write and adapt simple applications in OCaml, to build and test them.
Participants can interact with the teachers about the problems they encounter with OCaml.
<h2 class="page-subtitle">Registration</h2>
<div class="row">
<div class="col-lg-6">
<h3>Objectives</h3>
<ul>
<li>
Write the most efficient code for your applications
</li>
<li>
Understand the transformations performed by the compilers
</li>
<li>
Optimize data structures for garbage collection
</li>
</ul>
</div>
<div class="col-lg-6">
<h3>Prerequisites</h3>
<li>
Familiarity with OCaml language and its programming environment
</li>
<li>
A computer access (Linux, Mac OS X, or Windows). An easy-to-install OCaml archive will be provided before the course to setup a minimal but productive
environment.
</li>
</div>
</div>
<hr class="featurette-divider">
<h2 class="page-subtitle">Road Map</h2>
This training is tailored on a duration of 2 days, on site (12k€ for a group of at most 10 participants). The content is customized according to the duration and participants’ profiles and needs. <a href="mailto:contact@ocamlpro.com">Contact us!</a>
1. **OCaml’s compilers internals**
2. **Analysis of code transformations at different passes**
3. **OCaml’s Garbage Collector internals**
4. **Efficient code examples**
5. **Efficient data structures**
6. **Profiling code and memory**
<h1 id="page-title"> Course OCaml development</h1>
<br />
<div class="row">
<div class="col-lg-6">
<ul class="list-group list-group-flush">
<li class="list-group-item">Length: 5 Days</li>
<li class="list-group-item">Pricing: 20 000€ for 10 people, though customizable with duration and location</li>
<li class="list-group-item">Attendees: developpers</li>
<li class="list-group-item">Available remotely: yes</li>
<li class="list-group-item">Tutors: our engineers</li>
</ul>
</div>
<div class="col-lg-6">
<h4>Make it happen!</h4>
<br />
<div class="col-lg-12" align="center">
<div class="list-group">
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Next sessions!</a>
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Contact us!</a>
</div>
</div>
</div>
</div>
<hr class="featurette-divider">
<h2 class="page-subtitle">Overview</h2>
This course has been designed by the OCamlPro team to enable developers to build upon their experience of other programming languages, such as C, C++, Python, C# or Java, to program confidently
in OCaml. This covers all the main aspects of the OCaml language and tools and interleaves theory and practice. Depending on the duration and the customer needs, we can focus more on specific topics and
design suitable learning projects.
This course has been designed by the OCamlPro team to enable developers to build upon their experience of other programming languages, such as C, C++, Python, C# or Java, to program confidently in OCaml. This covers all the main aspects of the OCaml language and tools and interleaves theory and practice. Depending on the duration and the customer needs, we can focus more on specific topics and design suitable learning projects.
<hr class="featurette-divider">
The course is half theory, half practice. Participants will have to write and adapt simple applications in OCaml, to build and test them.
<h2 class="page-subtitle">Objectives</h2>
<br />
<div class="row">
<div class="col-lg-6">
<h3>Objectives</h3>
<ul>
<li>
Discover functional programming in OCaml
</li>
<li>
Modelize real-world data in OCaml types
</li>
<li>
Use the OCaml environment in a production context
</li>
<li>
Read and write OCaml code
</li>
<li>
Understand the architecture of OCaml applications
</li>
</ul>
</div>
<div class="col-lg-6">
<h3>Prerequisites</h3>
<li>
Being familiar with another programming language
</li>
<li>
A computer access (Linux, Mac OS X, or Windows). An easy-to-install OCaml archive will be provided before the course to setup a minimal but productive
environment.
</li>
</div>
</div>
- Discover functional programming in OCaml
- Modelize real-world data in OCaml types
- Use the OCaml environment in a production context
- Read and write OCaml code
- Understand the architecture of OCaml applications
<hr class="featurette-divider">
<h2 class="page-subtitle">Program</h2>
<br />
<h2 class="page-subtitle">Road Map</h2>
1. **Presentation of OCaml**
* History of OCaml
......@@ -31,7 +78,7 @@ design suitable learning projects.
3. **OCaml develpment tools**
* The OCaml toplevel
* The OCaml compilers
4. **Language bases**
4. **Basics of the language**
* Predefined types and simple values
* Functions and recursivity
* OCaml Imperative programming
......@@ -52,27 +99,3 @@ design suitable learning projects.
8. **Overview of OCaml extensions**
* Polymorphic variants
* Objects and classes
<h2 class="page-subtitle">Course Prerequisites</h2>
<br />
<p>
The course assumes the knowledge of another programming language, so that basic programming paradigms are known. No prior knowledge of OCaml or functional programming s required.
Participants are expected to have a computer access during the course (Linux, Mac OS X or Windows), an easy-to-install OCaml archive will be provided before the course to setup a minimal but productive
environment.
</p>
<h2 class="page-subtitle">Practice</h2>
<br />
<p>
The course is half theory, half practice. Participants will have to write and adapt simple applications in OCaml, to build and test them.
</p>
<h2 class="page-subtitle">Registration</h2>
<br />
<p>
This training is usually proposed as a 5 days on site training (20k€ for a group of at most 10 participants). The content and tarif is customized depending on the duration and location.<a href="mailto:contact@ocamlpro.com">Contact us!</a>
</p>
<h1 id="page-title">Course OCaml Expert</h1>
<br />
<div class="row">
<div class="col-lg-6">
<ul class="list-group list-group-flush">
<li class="list-group-item">Length: 5 Days</li>
<li class="list-group-item">Pricing: 20 000€ for 10 people, though customizable with duration and location</li>
<li class="list-group-item">Attendees: developpers</li>
<li class="list-group-item">Available remotely: yes</li>
<li class="list-group-item">Tutors: our engineers</li>
</ul>
</div>
<div class="col-lg-6">
<h4>Make it happen!</h4>
<br />
<div class="col-lg-12" align="center">
<div class="list-group">
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Next sessions!</a>
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Contact us!</a>
</div>
</div>
</div>
</div>
<hr class="featurette-divider">
<h2 class="page-subtitle">Overview</h2>
<br/>
This training has been designed by the OCamlPro team to enable developers to use more advanced features of OCaml powerful type-system, benefit from all the open-source tools and libraries, and to write compact and efficient code.
Objectives
- Understand advanced features of the type-system
- Interface OCaml with its environment
- Understand the OCaml garbage collector
- Write efficient code in OCaml
The course is half theory, half practice. Participants will have to write and adapt simple applications in OCaml, to build and test them.
<div class="row">
<div class="col-lg-6">
<h3>Objectives</h3>
<ul>
<li>
Understand advanced features of the type-system
</li>
<li>
Interface OCaml with its environment
</li>
<li>
Understand the OCaml garbage collector
</li>
<li>
Write efficient code in OCaml
</li>
</ul>
</div>
<div class="col-lg-6">
<h3>Prerequisites</h3>
<li>
Basic knowledge of the OCaml language and its programming environment
</li>
<li>
A computer access (Linux, Mac OS X, or Windows). An easy-to-install OCaml archive will be provided before the course to setup a minimal but productive
environment.
</li>
</div>
</div>
<hr class="featurette-divider">
<h2 class="page-subtitle">Program</h2>
<h2 class="page-subtitle">Road Map</h2>
1. **OCaml type system insights:**
* polymorphic variants
......@@ -31,19 +81,3 @@ Objectives
* Writing web servers in OCaml
* OCaml to Javascript
<h2 class="page-subtitle">Course Prerequisites</h2>
The course assumes basic knowledge of the OCaml language and its programming environment.
Participants are expected to have a computer access during the course (Linux, Mac OS X or Windows), an easy-to-install OCaml archive will be provided before the course to setup a minimal but productive environment.
<h2 class="page-subtitle">Practice</h2>
The course is half theory, half practice. Participants will have to write and adapt simple applications in OCaml, to build and test them.
Participants can interact with the teachers about the problems they encounter with OCaml.
<h2 class="page-subtitle">Registration</h2>
This training is normally tailored as a 5 days training (10 participants at most, on site).
Content can be customized to better fit your needs and depending on the duration. <a href="mailto:contact@ocamlpro.com">Contact us!</a>
<h1 id="page-title">Rust Vocational Training</h1>
<br/>
[Rust](https://www.rust-lang.org/) is a systems language with a strong focus on safety, efficiency and (safe) concurrency. Its development is spearheaded by Mozilla, although the vast majority of contributions to Rust come from external developers since Rust and its ecosystem are developed in the open.
<div class="row">
<div class="col-lg-6">
<ul class="list-group list-group-flush">
<li class="list-group-item">Length: from 1,5 to 5 Days</li>
<li class="list-group-item">Pricing for modules(tax NI): 1-2 = 1990€/person and 1-3 = 2490€/person </li>
<li class="list-group-item">Attendees: developpers</li>
<li class="list-group-item">Available remotely: yes</li>
<li class="list-group-item">Tutors: <a class="navlink" href="team">Adrien Champion</a></li>
</ul>
</div>
<div class="col-lg-6">
<h4>Make it happen!</h4>
<br />
<div class="col-lg-12" align="center">
<div class="list-group">
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Next sessions!</a>
<a class="list-group-item list-group-item-action list-group-item-dark" href="mailto:contact@ocamlpro">Contact us!</a>
</div>
</div>
</div>
</div>
Rust borrows heavily from functional programming languages to provide very expressive abstraction mechanisms. Because it is a systems language, these mechanisms are almost always zero-cost. For instance, polymorphic code has no runtime cost compared to a monomorphic version.
<hr class="featurette-divider">
This concern for efficiency also means that Rust lets developers keep a very high level of control and freedom for optimizations. Rust has no Garbage Collection or any form of runtime memory inspection to decide when to free, allocate or re-use memory. But because manual memory management is almost universally regarded as dangerous, or at least very difficult to maintain, the Rust compiler has a borrow-checker which is responsible for i) proving that the input program is memory-safe (and thread-safe), and ii) generating a safe and “optimal” allocation/deallocation strategy. All of this is done **at compile-time.**
<h2 class="page-subtitle">Overview</h2>
While ownership, the underlying principle of the borrow-checker, is often quite daunting for newcomers, Rust integrates this approach to memory management very nicely in the language. Huge efforts have been deployed to make this mechanism as natural as possible. In fact, most seasoned Rust developers internalize the borrow-checker and seldom actually think about it. For such developers, the borrow-checker is not a constraint: it only rejects programs because of typos, “minor oversights”, or (very rare) deep architectural errors from the developer. Meaning, the borrow-checker rejects memory-unsafe programs. (The same, to some extent, can be said about thread-unsafe programs.)
Rust is a language with C/C++-like performance with very expressive, **zero-cost** abstraction mechanisms from functional programming languages; it also generates the memory allocation strategy of the program automatically if one exists, and, if none do, can point precisely to what the problem is. It it also worth noting that Rust has an extremely ergonomic and powerful project/package manager, [cargo](https://doc.rust-lang.org/stable/cargo/), and shines in the quality of the explanation and suggestions that come with its compiler errors. It is thus not surprising that Rust is so popular: it has been voted “most loved programming language” in the [StackOverflow developer survey](https://insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted) for four years in a row, and has an impressive number of [companies running it in production](https://prev.rust-lang.org/en-US/friends.html) for a young systems language.
<br/>
<div class="row">
<div class="col-lg-6">
<h3>Objectives</h3>
<ul>
<li>
Master the main principles of Rust: ownership and traits
</li>
<li>
Master the ecosystem: project management, dependencies, sub-project layout
</li>
<li>
Master declarative macros
</li>
<li>
Getting acquainted with standard and extended libraries in a pratical environment
</li>
<li>
Using bound advanced polymorphism: higher-kinded types and associated types
</li>
<li>
Manage concurring parts of a programme, understanding the safety guarantees the Rust offers in that context
</li>
<li>
Some introduction to <strong>Unsafe Rust</strong>
</li>
</ul>
</div>
<div class="col-lg-6">
<h3>Prerequisites</h3>
To do the complete course:
<li>
Being familiar with another programming language
</li>
<li>
Being able to develop in a function language, being familiar with pattern-matching, strong type systems, algebraic types, polymorphism....
</li>
To access confirmed and advanced sessions:
<li>
Basics in project management
</li>
<li>
Basic understanding of the concept of ownership in Rust
</li>
<li>
Being able to write small programs that use certain run-of-the-mill aspects of the standard library. Including the following: <code>Option</code> and <code>Result</code> types, and simple traits like <code>Write</code>, <code>Read</code>, <code>Display</code>, <code>From</code>, <code>Into</code>...
</li>
</div>
</div>
<hr class="featurette-divider">
<div class="row">
<h2 class="page-subtitle">Modules</h2>
<div class="col-lg-4">
<h4>Introduction</h4>
<p><strong>Module 1 (1,5 days)</strong></p>
<p><strong>Basics : </strong>types and expressions,functions, using macros, user-defined types, loops and panic mode...</p>
<p><strong>Ecosystem : </strong>manage a simplistic project, dependencies, organising modules, <code>rustfmt</code>...</p>
<p><strong>Traits : </strong>simple polymorphism, define and implement traits...</p>
<p><strong>Ownership : </strong>semantics of copy and move, refenrences and lifetimes, slice types...</p>
</div>
<div class="col-lg-4">
<h4>Rust in the real World</h4>
<p><strong>Module 2 (2 days)</strong></p>
<p><strong>Macros : </strong>define declarative macros, handle visibility...</p>
<p><strong>Traits : </strong>rules, extensibility, associated types, constraints of advanced polymorphism...</p><p><strong>Ownership and memory : </strong>lifetimes, boxing, <code>Copy</code> and <code>Clone</code>, advanced traits...</p>
<p><strong>Ecosystem : </strong>meta-attributes, documentation, tests, managing mid to large projects...</p>
<p><strong>Main standard and extended libraries (<a href="http://www.crates.io">crates.io</a>):</strong> iterators and records, error handling, “fearless concurrency” on iterators...</p>
<p><strong>Complex use case :</strong> incapsulates virtually every concept presented in the course in a fairly complex project.</p>
</div>
<div class="col-lg-4">
<h4>Advanced features</h4>
<p><strong>Module 3 (1,5 days)</strong></p>
<p><strong>Fearless concurrency :</strong> threads and traits like <code>Send</code> and <code>Sync</code>, <code>mpsc</code>, locks...</p>
<p><strong>Advanced traits : </strong>higher-kinded types, object traits (dynamic dispatch), function pointers...</p>
<p><strong>Writing and using procedural macros</strong></p>
<p><strong>Discovering <em>unsafe Rust</em></strong></p>
<p><strong>Complex use case :</strong> plain and complete introduction to &#8220;fearless concurrency&#8221; and &#8220;advances traits&#8221;</p>
</div>
</div>
<br/>
<p align="center"><strong>This course is modular! Participants may attend the entire session, or just modules 1 and 2, or module 2 alone, or stick to modules 2 and 3.</strong></p>
<hr class="featurette-divider">
<h2 class="page-subtile">Pricing</h2>
All costs given below are for open sessions. Pricing for exclusive sessions depends on the number of participants and the actual location, <a href="mailto:contact@ocamlpro.com">contact us</a> for an estimation.
<div class="row">
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
overflow:hidden;padding:10px 5px;word-break:normal;}
.tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;}
.tg .tg-c3ow{border-color:inherit;text-align:center;vertical-align:top}
.tg .tg-7btt{border-color:inherit;font-weight:bold;text-align:center;vertical-align:top}
</style>
<table class="tg">
<thead>
<tr>
<th class="tg-7btt">Full Session</th>
<th class="tg-7btt">Beginner</th>
<th class="tg-7btt">Intermediate</th>
<th class="tg-7btt">Beginner and Intermediate</th>
<th class="tg-7btt">Intermediate and advanced</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tg-c3ow">3,500.00€</td>
<td class="tg-c3ow">1,500.00€</td>
<td class="tg-c3ow">2,000.00€</td>
<td class="tg-c3ow">3,000.00€</td>
<td class="tg-c3ow">3,000.00€</td>
</tr>
<tr>
<td class="tg-c3ow">4 days</td>
<td class="tg-c3ow">1 day</td>
<td class="tg-c3ow">2 days</td>
<td class="tg-c3ow">3 days</td>
<td class="tg-c3ow">3 days</td>
</tr>
</tbody>
</table>
</div>
At the end of the day, Rust is a language with C/C++-like performance with very expressive, **zero-cost** abstraction mechanisms from functional programming languages; it also generates the memory allocation strategy of the program automatically if one exists, and, if none do, can point precisely to what the problem is. It it also worth noting that Rust has an extremely ergonomic and powerful project/package manager, [cargo](https://doc.rust-lang.org/stable/cargo/), and shines in the quality of the explanation and suggestions that come with its compiler errors. It is thus not surprising that Rust is so popular: it has been voted “most loved programming language” in the [StackOverflow developer survey](https://insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted) for four years in a row, and has an impressive number of [companies running it in production](https://prev.rust-lang.org/en-US/friends.html) for a young systems language.
<hr class="featurette-divider">
<h2 class="page-subtitle">Layout</h2>
<div class="row">
<div class="col-lg-4">
<br/>
The session is divided in three parts:
1. A beginner introduction to Rust’s basics features (one day);
2. Crucial features and libraries for real-life development, along with a complex use-case used to showcase how to use them in a real project (two days);
3. Advanced/specific features (one day).
</div>
The session is divided in three parts:
<div class="col-lg-4">
Note that attendees planning to start at part 2 must make sure they are comfortable with the topics of part 1. This means, roughly, basic project management, having a basic understanding of ownership, and being able to write small programs that use some of the most common features of the standard library. Typically, this includes types Option, Result… and “simple” traits such as `Write`, `Read`, `Display`, `From`, `Into`...
</div>
1. A beginner introduction to Rust’s basics features (one day);
2. Crucial features and libraries for real-life development, along with a complex use-case used to showcase how to use them in a real project (two days);
3. Advanced/specific features (one day).
<div class="col-lg-4">
The road map below details the topics discussed in each part. Participants can chose to attend either the whole session, parts 1 through 3, parts 1 and 2, only part 2, or parts 2 and 3.
</div>
</div>
The road map below details the topics discussed in each part. Participants can chose to attend either the whole session, parts 1 through 3, parts 1 and 2, only part 2, or parts 2 and 3.
> Note that attendees planning to start at part 2 must make sure they are comfortable with the topics of part 1. This means, roughly, basic project management, having a basic understanding of ownership, and being able to write small programs that use some of the most common features of the standard library. Typically, this includes types Option, Result… and “simple” traits such as `Write`, `Read`, `Display`, `From`, `Into`...
<hr class="featurette-divider">
<h2 class="page-subtitle">Road Map</h2>
......@@ -49,6 +213,8 @@ The road map below details the topics discussed in each part. Participants can c
Part 3 discusses relatively specific topics, in particular unsafe Rust and procedural macros. This is where the training has the most flexibility and can be customized depending on the participants.
For instance, it is possible to replace the discussion on procedural macros and/or unsafe Rust by a deeper dive into fearless concurrency and/or an exercise session where attendees can practice the notions seen so far (typically from part 2) while the trainer provides hints, help and insights when needed.
<hr class=