Skip to content

Commit 39974dc

Browse files
Draft for curriculum, + first lesson
1 parent a5c2b2b commit 39974dc

11 files changed

Lines changed: 525 additions & 1 deletion

File tree

docs/desktop_applications/index.md

Lines changed: 148 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,150 @@
1-
# Intorduction
1+
# Introduction
22

3+
## Rust Desktop Applications in Slint
34

5+
Hey there! Super excited to welcome you to the world of desktop application development. We know it might seem a bit daunting at first, but trust us, you're in for a really cool ride.
6+
7+
We're going to dive deep into Rust – a programming language that's making waves because it helps you build incredibly fast and reliable apps, all while keeping things safe. Then, we'll jump into Slint, a UI toolkit that lets you design awesome-looking desktop interfaces with ease, perfectly paired with Rust's power.
8+
9+
Our goal here isn't just to throw a bunch of code at you. We want to show you how much fun it can be to actually _build_ something tangible that runs right on your computer. By the end of this course, we genuinely hope you'll be hooked on Rust and ready to start tackling your own real-world projects. Let's get building some amazing stuff together!
10+
11+
# Course Content:
12+
13+
## Day 1 (11 August)
14+
15+
### Lesson 1: Rust Fundamentals - Core Language & Environment Setup
16+
17+
Objective: Establish a foundational understanding of the Rust programming language, its unique value proposition, and essential development environment setup.
18+
19+
Topics:
20+
21+
- The Strategic Purpose of the Rust Language (5 min)
22+
- Rust's Paradigm Shift: Safety and Performance (5 min)
23+
- Strategic Advantages of Rust for Desktop Application Development (5 min)
24+
- Setting Up the Rust Development Environment (15 min)
25+
- Understanding Cargo: Rust's Build System and Package Manager Ecosystem (5-10 min)
26+
- Initiating and Executing Your First Rust Application (5-10 min)
27+
- Variables and Data Declaration in Rust (20 min)
28+
- Console Interaction: Input/Output Stream Management (20 min)
29+
30+
### Lesson 2: Rust Fundamentals - Control Flow & Functions
31+
32+
Objective: Master Rust's core control flow constructs and the principles of function declaration for logical program execution.
33+
34+
Topics:
35+
36+
- Conditional Execution: if Statements (15 min)
37+
- Advanced Pattern Matching: The match Expression (10 min)
38+
- Iterative Control Structures (30 min)
39+
- Defining and Utilizing Functions (15 min)
40+
- Practical Application: Developing a Console
41+
- Based Guessing Game (20 min)
42+
43+
## Day 2 (12 August)
44+
45+
### Lesson 3: Rust Fundamentals - Advanced Concepts & Data Structures
46+
47+
Objective: Delve into Rust's unique memory management model and advanced data structuring capabilities.
48+
49+
Topics:
50+
51+
- Demystifying Ownership, Borrowing, and Lifecycles (30 min)
52+
- Structuring Data with structs (30 min)
53+
- Modeling Data with enums (10 min)
54+
- Organizing Code with Modules (20 min)
55+
56+
### Lesson 4: Introduction to Slint - Building Static User Interfaces
57+
58+
Objective: Introduce the Slint UI framework, its integration with Rust, and the creation of basic static graphical interfaces.
59+
60+
Topics:
61+
62+
- Introducing Slint: A Declarative UI Framework (5 min)
63+
- Synergies: Why Slint is an Ideal Partner for Rust (5 min)
64+
- Setting Up Your First Slint Application (20 min)
65+
- Understanding the .slint Language and Basic UI Syntax (15 min)
66+
- Core Slint UI Elements (20 min)
67+
- Structuring Your UI: Essential Layout Managers (15 min)
68+
- Developing Your First Static Desktop Application (10 min)
69+
70+
## Day 3 (13 August)
71+
72+
### Lesson 5: Slint Interactivity - State, Events, and Dynamic UIs
73+
74+
Objective: Enable dynamic user interfaces by implementing state management, data binding, and event handling within Slint applications.
75+
76+
Topics:
77+
78+
- State Management and Data Binding (30 min)
79+
- Handling User Interactions: Events and Callbacks (including Error Handling) (30 min)
80+
- Practical Application: Developing an Interactive Calculator Application (30 min)
81+
82+
### Lesson 6: Network Communication - Foundations of HTTP & Asynchronous Rust
83+
84+
Objective: Understand the principles of inter-computer communication via HTTP and master asynchronous programming in Rust for non-blocking network requests.
85+
86+
Topics:
87+
88+
- The Imperative of Inter-Computer Communication (5 min)
89+
- HTTP Protocol: Structure and Fundamentals (5 min)
90+
- Introduction to Asynchronous Rust (30 min)
91+
- Making External API Calls with reqwest and tokio (25 min)
92+
- Data Serialization/Deserialization: Processing API Responses with serde (25 min)
93+
94+
## Day 4 (15 August)
95+
96+
### Lesson 7: API Integration & UI Updates
97+
98+
Objective: Apply asynchronous API communication skills to build dynamic UI features that consume and display external data.
99+
100+
Topics:
101+
102+
- Practical Exercises: Consuming Diverse External APIs and Parsing Responses
103+
- Dynamically Updating Slint UI Elements with Collected Data
104+
105+
### Lesson 8: Advanced Slint Features - Reusability & Customization
106+
107+
Objective: Enhance UI development efficiency and flexibility through advanced Slint component design and styling techniques.
108+
109+
Topics:
110+
111+
- Understanding the Power of UI Components (5 min)
112+
- Benefits of Component Reusability in UI Development (5 min)
113+
- Crafting Your First Reusable Slint Component (20 min)
114+
- Customizing UI Aesthetics: Creating Bespoke Styles (20 min)
115+
- Practical Application Exercise (40 min)
116+
117+
## Day 5 (16 August)
118+
119+
### Lesson 9: Data Persistence - Local Storage & File System
120+
121+
Objective: Implement strategies for local data storage, enabling applications to retain information across sessions and interact with the file system.
122+
123+
Topics:
124+
125+
- The Necessity of Persistent Data in Desktop Applications (5 min)
126+
- Overview of Local Data Persistence Strategies (5 min)
127+
- Direct File System Interactions (20 min)
128+
- Achieving Robust Local Data Persistence: Integrating an Embedded Database (60 min)
129+
130+
### Lesson 10: Desktop Application Best Practices & Deployment
131+
132+
Objective: Equip participants with essential knowledge for building production-ready desktop applications, including robust error management, lifecycle considerations, and deployment strategies.
133+
134+
Topics:
135+
136+
- Comprehensive Error Handling Strategies in Rust Applications
137+
- Packaging and Deployment Fundamentals for Cross-Platform Desktop Apps
138+
- Key Best Practices for Application Architecture and Lifecycle Management
139+
- Project Brainstorming and Future Learning Pathways
140+
- Project Sprints: Collaborative Development & Presentation
141+
142+
## Day 6 (18 August)
143+
144+
Project Development Sprint (Part 1) - Working on the final project
145+
Project Development Sprint (Part 2) - Working on the final project
146+
147+
## Day 7 (19 August)
148+
149+
Project Presentation (Part 1)
150+
Project Presentation (Part 2)

0 commit comments

Comments
 (0)