|
| Titre : |
AlgoBlox: Block-based programming software for STEAM education |
| Type de document : |
document électronique |
| Auteurs : |
Mosbah Eddine Layadi ; Habib Aissaoua, Directeur de thèse |
| Editeur : |
Setif:UFA |
| Année de publication : |
2025 |
| Importance : |
1 vol (66 f .) |
| Format : |
29 cm |
| Langues : |
Anglais (eng) |
| Catégories : |
Thèses & Mémoires:Informatique
|
| Mots-clés : |
STEAM
Block-based programming
Flutter/Dart
Arduino/ESP32
large language models
AI-assisted learning
Multilingual education |
| Index. décimale : |
004 Informatique |
| Résumé : |
This thesis presents the development of AlgoBlox, an integrated STEAM educational
programming software designed for children and adolescents aged six to eighteen years old.
AlgoBlox empowers learners to engage with programming concepts through an intuitive
block-based interface that translates graphical blocks into C++ and Arduino/ESP32 code,
which is then compiled and uploaded to physical devices via the Arduino CLI.
Innovatively built from scratch using Flutter’s CustomPainter without reliance on existing
libraries such as Blockly, the software uniquely incorporates artificial intelligence
features including a teacher mode that leverages a large language model to guide users
through project construction interactively, and a chatbot capable of explaining and assisting
with block-based code in real-time. The platform’s implementation is grounded in
modern, proven technologies: the Flutter framework with Dart programming language for
responsive cross-platform development, direct microcontroller support for Arduino Uno,
Arduino Mega, and ESP32 boards enabling hands-on robotics learning, Arduino CLI for
automated code compilation and device programming, JSON-based project serialization
for human-readable file formats, and OpenRouter APIs providing access to large language
models for intelligent tutoring capabilities.
The system’s multilingual support including native right-to-left language support for
Arabic and artificial intelligence integration foster an accessible and personalized learning
experience, advancing computational thinking and coding literacy among young learners
within the STEAM education framework. By combining pedagogically-grounded blockbased
visual programming with direct hardware integration, intelligent AI-powered guidance,
and genuinely multilingual design, AlgoBlox addresses documented gaps in global
educational programming tools.
This thesis encompasses both theoretical foundations and practical implementation.
The work addresses critical gaps in educational programming tools for the Arab world
and developing regions more broadly, offering a culturally-responsive, pedagogically-sound
solution for programming education grounded in modern, accessible technologies. |
| Note de contenu : |
Sommaire
Declaration of Originality 1
Abstract 2
Dedication 4
Acknowledgment 5
List of Abbreviations 11
General introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1 Literature review 16
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Educational robotics software environments and platforms . . . . . . . . . 16
1.2.1 Scratch and Scratch extensions for robotics . . . . . . . . . . . . . . 17
1.2.2 PictoBlox and the StemPedia ecosystem . . . . . . . . . . . . . . . 17
1.2.3 Google Blockly and Code.org-based environments . . . . . . . . . . 18
1.2.4 LEGO Mindstorms and LEGO education platforms . . . . . . . . . 19
1.2.5 Arduino ide and open-source microcontroller ecosystems . . . . . . 20
1.2.6 Emerging platforms: MakeCode, VEX coding, and others . . . . . . 21
1.3 Comparative analysis and synthesis . . . . . . . . . . . . . . . . . . . . . . 22
1.4 Empirical evidence on learning outcomes and engagement . . . . . . . . . . 23
1.5 Identified gaps and the motivation for AlgoBlox . . . . . . . . . . . . . . . 24
1.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 Tools and technologies used in AlgoBlox 26
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Flutter framework and Dart programming language . . . . . . . . . . . . . 26
2.2.1 Overview and selection rationale . . . . . . . . . . . . . . . . . . . . 26
2.2.2 Dart programming language characteristics . . . . . . . . . . . . . . 27
2.2.3 Flutter architecture for AlgoBlox . . . . . . . . . . . . . . . . . . . 28
2.3 Arduino and ESP32 microcontroller support . . . . . . . . . . . . . . . . . 29
2.3.1 Hardware integration philosophy . . . . . . . . . . . . . . . . . . . 29
2.3.2 Arduino uno and Arduino mega 2560 . . . . . . . . . . . . . . . . . 29
2.3.3 ESP32: WiFi and bluetooth integration . . . . . . . . . . . . . . . . 30
2.4 Arduino command-line interface . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.1 Overview and integration . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.2 Compiler toolchains . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.3 Arduino core libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5 Json and project file format . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1 Project serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.2 Block serialization details . . . . . . . . . . . . . . . . . . . . . . . 33
2.6 Teacher mode application programming interface . . . . . . . . . . . . . . 33
2.6.1 Architecture and purpose . . . . . . . . . . . . . . . . . . . . . . . 33
2.6.2 Teacher mode data structure . . . . . . . . . . . . . . . . . . . . . . 33
2.6.3 Validation and feedback loop . . . . . . . . . . . . . . . . . . . . . 34
2.7 Large language model integration via OpenRouter . . . . . . . . . . . . . 35
2.7.1 OpenRouter platform overview . . . . . . . . . . . . . . . . . . . . 35
2.7.2 Teacher mode integration . . . . . . . . . . . . . . . . . . . . . . . 35
2.7.3 ChatBot assistant integration . . . . . . . . . . . . . . . . . . . . . 35
2.7.4 Api rate limiting and cost management . . . . . . . . . . . . . . . . 36
2.7.5 Privacy and data protection . . . . . . . . . . . . . . . . . . . . . . 36
2.8 Code generation and target languages . . . . . . . . . . . . . . . . . . . . . 36
2.8.1 C++ Arduino code generation . . . . . . . . . . . . . . . . . . . . . 36
2.9 Deployment and distribution . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.9.1 Windows executable packaging . . . . . . . . . . . . . . . . . . . . 37
2.9.2 Dependencies management . . . . . . . . . . . . . . . . . . . . . . . 38
2.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3 AlgoBlox: system design and architecture 39
3.1 Overview of the software architecture . . . . . . . . . . . . . . . . . . . . . 39
3.2 Custom block rendering using Flutter’s custom painter . . . . . . . . . . . 40
3.2.1 Custom implementation vs. existing libraries . . . . . . . . . . . . . 40
3.2.2 Block shape rendering . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.3 Block rendering implementation . . . . . . . . . . . . . . . . . . . . 41
3.3 Block definition system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.1 JSON-based block definitions . . . . . . . . . . . . . . . . . . . . . 41
3.4 Code generation pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.1 Abstract syntax tree (AST) construction . . . . . . . . . . . . . . . 42
3.4.2 Code generation strategy . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5 Teacher mode with AI-guided learning . . . . . . . . . . . . . . . . . . . . 42
3.5.1 Project generation process . . . . . . . . . . . . . . . . . . . . . . . 42
3.5.2 Step-based guided interface . . . . . . . . . . . . . . . . . . . . . . 43
3.6 ChatBot assistant implementation . . . . . . . . . . . . . . . . . . . . . . . 43
3.7 Arduino CLI integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.7.1 Compilation and upload process . . . . . . . . . . . . . . . . . . . . 43
3.8 Multilingual support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.1 Language files organization . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.2 RTL language support . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.9 Project management and file persistence . . . . . . . . . . . . . . . . . . . 44
3.9.1 Local file storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.9.2 Project history and undo/redo . . . . . . . . . . . . . . . . . . . . . 44
3.10 Implemented features summary . . . . . . . . . . . . . . . . . . . . . . . . 45
3.11 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4 AlgoBlox in practice: setup and interfaces with core operations 46
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 System requirements and installation . . . . . . . . . . . . . . . . . . . . . 46
4.2.1 Current platform support . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.2 Hardware requirements . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.3 Installation process . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3 Understanding the AlgoBlox interface . . . . . . . . . . . . . . . . . . . . . 48
4.3.1 Main application window layout . . . . . . . . . . . . . . . . . . . . 48
4.4 Creating your first project . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4.1 Step 1: launch AlgoBlox and set language . . . . . . . . . . . . . . 53
4.4.2 Step 2: connect microcontroller . . . . . . . . . . . . . . . . . . . . 53
4.4.3 Step 3: create your first program - led blink . . . . . . . . . . . . . 53
4.4.4 Step 4: upload to microcontroller . . . . . . . . . . . . . . . . . . . 54
4.5 Intermediate programming concepts . . . . . . . . . . . . . . . . . . . . . . 55
4.5.1 Variables: storing and using data . . . . . . . . . . . . . . . . . . . 55
4.5.2 Conditionals: making decisions . . . . . . . . . . . . . . . . . . . . 55
4.5.3 Loops: repeating actions . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6 Advanced features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6.1 Teacher mode: guided step-by-step projects . . . . . . . . . . . . . 56
4.6.2 AlgoBlox chatbot assistant . . . . . . . . . . . . . . . . . . . . . . . 57
4.6.3 Code generation and visualization . . . . . . . . . . . . . . . . . . . 59
4.6.4 Multilingual support and interface customization . . . . . . . . . . 59
4.7 Project management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.7.1 Saving projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.7.2 Project history and undo/redo . . . . . . . . . . . . . . . . . . . . . 61
4.8 Troubleshooting common issues . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.1 Board not detected . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.2 Compilation errors . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.3 Upload failures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.8.4 Program not running on microcontroller . . . . . . . . . . . . . . . 62
4.9 Tips and best practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.9.1 Programming tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.9.2 Hardware tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.9.3 Classroom/educational tips . . . . . . . . . . . . . . . . . . . . . . 63
4.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Conclusion 64 |
| Côte titre : |
MAI/1071 |
AlgoBlox: Block-based programming software for STEAM education [document électronique] / Mosbah Eddine Layadi ; Habib Aissaoua, Directeur de thèse . - [S.l.] : Setif:UFA, 2025 . - 1 vol (66 f .) ; 29 cm. Langues : Anglais ( eng)
| Catégories : |
Thèses & Mémoires:Informatique
|
| Mots-clés : |
STEAM
Block-based programming
Flutter/Dart
Arduino/ESP32
large language models
AI-assisted learning
Multilingual education |
| Index. décimale : |
004 Informatique |
| Résumé : |
This thesis presents the development of AlgoBlox, an integrated STEAM educational
programming software designed for children and adolescents aged six to eighteen years old.
AlgoBlox empowers learners to engage with programming concepts through an intuitive
block-based interface that translates graphical blocks into C++ and Arduino/ESP32 code,
which is then compiled and uploaded to physical devices via the Arduino CLI.
Innovatively built from scratch using Flutter’s CustomPainter without reliance on existing
libraries such as Blockly, the software uniquely incorporates artificial intelligence
features including a teacher mode that leverages a large language model to guide users
through project construction interactively, and a chatbot capable of explaining and assisting
with block-based code in real-time. The platform’s implementation is grounded in
modern, proven technologies: the Flutter framework with Dart programming language for
responsive cross-platform development, direct microcontroller support for Arduino Uno,
Arduino Mega, and ESP32 boards enabling hands-on robotics learning, Arduino CLI for
automated code compilation and device programming, JSON-based project serialization
for human-readable file formats, and OpenRouter APIs providing access to large language
models for intelligent tutoring capabilities.
The system’s multilingual support including native right-to-left language support for
Arabic and artificial intelligence integration foster an accessible and personalized learning
experience, advancing computational thinking and coding literacy among young learners
within the STEAM education framework. By combining pedagogically-grounded blockbased
visual programming with direct hardware integration, intelligent AI-powered guidance,
and genuinely multilingual design, AlgoBlox addresses documented gaps in global
educational programming tools.
This thesis encompasses both theoretical foundations and practical implementation.
The work addresses critical gaps in educational programming tools for the Arab world
and developing regions more broadly, offering a culturally-responsive, pedagogically-sound
solution for programming education grounded in modern, accessible technologies. |
| Note de contenu : |
Sommaire
Declaration of Originality 1
Abstract 2
Dedication 4
Acknowledgment 5
List of Abbreviations 11
General introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1 Literature review 16
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Educational robotics software environments and platforms . . . . . . . . . 16
1.2.1 Scratch and Scratch extensions for robotics . . . . . . . . . . . . . . 17
1.2.2 PictoBlox and the StemPedia ecosystem . . . . . . . . . . . . . . . 17
1.2.3 Google Blockly and Code.org-based environments . . . . . . . . . . 18
1.2.4 LEGO Mindstorms and LEGO education platforms . . . . . . . . . 19
1.2.5 Arduino ide and open-source microcontroller ecosystems . . . . . . 20
1.2.6 Emerging platforms: MakeCode, VEX coding, and others . . . . . . 21
1.3 Comparative analysis and synthesis . . . . . . . . . . . . . . . . . . . . . . 22
1.4 Empirical evidence on learning outcomes and engagement . . . . . . . . . . 23
1.5 Identified gaps and the motivation for AlgoBlox . . . . . . . . . . . . . . . 24
1.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 Tools and technologies used in AlgoBlox 26
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Flutter framework and Dart programming language . . . . . . . . . . . . . 26
2.2.1 Overview and selection rationale . . . . . . . . . . . . . . . . . . . . 26
2.2.2 Dart programming language characteristics . . . . . . . . . . . . . . 27
2.2.3 Flutter architecture for AlgoBlox . . . . . . . . . . . . . . . . . . . 28
2.3 Arduino and ESP32 microcontroller support . . . . . . . . . . . . . . . . . 29
2.3.1 Hardware integration philosophy . . . . . . . . . . . . . . . . . . . 29
2.3.2 Arduino uno and Arduino mega 2560 . . . . . . . . . . . . . . . . . 29
2.3.3 ESP32: WiFi and bluetooth integration . . . . . . . . . . . . . . . . 30
2.4 Arduino command-line interface . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.1 Overview and integration . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.2 Compiler toolchains . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.3 Arduino core libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5 Json and project file format . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1 Project serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.2 Block serialization details . . . . . . . . . . . . . . . . . . . . . . . 33
2.6 Teacher mode application programming interface . . . . . . . . . . . . . . 33
2.6.1 Architecture and purpose . . . . . . . . . . . . . . . . . . . . . . . 33
2.6.2 Teacher mode data structure . . . . . . . . . . . . . . . . . . . . . . 33
2.6.3 Validation and feedback loop . . . . . . . . . . . . . . . . . . . . . 34
2.7 Large language model integration via OpenRouter . . . . . . . . . . . . . 35
2.7.1 OpenRouter platform overview . . . . . . . . . . . . . . . . . . . . 35
2.7.2 Teacher mode integration . . . . . . . . . . . . . . . . . . . . . . . 35
2.7.3 ChatBot assistant integration . . . . . . . . . . . . . . . . . . . . . 35
2.7.4 Api rate limiting and cost management . . . . . . . . . . . . . . . . 36
2.7.5 Privacy and data protection . . . . . . . . . . . . . . . . . . . . . . 36
2.8 Code generation and target languages . . . . . . . . . . . . . . . . . . . . . 36
2.8.1 C++ Arduino code generation . . . . . . . . . . . . . . . . . . . . . 36
2.9 Deployment and distribution . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.9.1 Windows executable packaging . . . . . . . . . . . . . . . . . . . . 37
2.9.2 Dependencies management . . . . . . . . . . . . . . . . . . . . . . . 38
2.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3 AlgoBlox: system design and architecture 39
3.1 Overview of the software architecture . . . . . . . . . . . . . . . . . . . . . 39
3.2 Custom block rendering using Flutter’s custom painter . . . . . . . . . . . 40
3.2.1 Custom implementation vs. existing libraries . . . . . . . . . . . . . 40
3.2.2 Block shape rendering . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.3 Block rendering implementation . . . . . . . . . . . . . . . . . . . . 41
3.3 Block definition system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.1 JSON-based block definitions . . . . . . . . . . . . . . . . . . . . . 41
3.4 Code generation pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.1 Abstract syntax tree (AST) construction . . . . . . . . . . . . . . . 42
3.4.2 Code generation strategy . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5 Teacher mode with AI-guided learning . . . . . . . . . . . . . . . . . . . . 42
3.5.1 Project generation process . . . . . . . . . . . . . . . . . . . . . . . 42
3.5.2 Step-based guided interface . . . . . . . . . . . . . . . . . . . . . . 43
3.6 ChatBot assistant implementation . . . . . . . . . . . . . . . . . . . . . . . 43
3.7 Arduino CLI integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.7.1 Compilation and upload process . . . . . . . . . . . . . . . . . . . . 43
3.8 Multilingual support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.1 Language files organization . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.2 RTL language support . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.9 Project management and file persistence . . . . . . . . . . . . . . . . . . . 44
3.9.1 Local file storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.9.2 Project history and undo/redo . . . . . . . . . . . . . . . . . . . . . 44
3.10 Implemented features summary . . . . . . . . . . . . . . . . . . . . . . . . 45
3.11 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4 AlgoBlox in practice: setup and interfaces with core operations 46
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 System requirements and installation . . . . . . . . . . . . . . . . . . . . . 46
4.2.1 Current platform support . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.2 Hardware requirements . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.3 Installation process . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3 Understanding the AlgoBlox interface . . . . . . . . . . . . . . . . . . . . . 48
4.3.1 Main application window layout . . . . . . . . . . . . . . . . . . . . 48
4.4 Creating your first project . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4.1 Step 1: launch AlgoBlox and set language . . . . . . . . . . . . . . 53
4.4.2 Step 2: connect microcontroller . . . . . . . . . . . . . . . . . . . . 53
4.4.3 Step 3: create your first program - led blink . . . . . . . . . . . . . 53
4.4.4 Step 4: upload to microcontroller . . . . . . . . . . . . . . . . . . . 54
4.5 Intermediate programming concepts . . . . . . . . . . . . . . . . . . . . . . 55
4.5.1 Variables: storing and using data . . . . . . . . . . . . . . . . . . . 55
4.5.2 Conditionals: making decisions . . . . . . . . . . . . . . . . . . . . 55
4.5.3 Loops: repeating actions . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6 Advanced features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6.1 Teacher mode: guided step-by-step projects . . . . . . . . . . . . . 56
4.6.2 AlgoBlox chatbot assistant . . . . . . . . . . . . . . . . . . . . . . . 57
4.6.3 Code generation and visualization . . . . . . . . . . . . . . . . . . . 59
4.6.4 Multilingual support and interface customization . . . . . . . . . . 59
4.7 Project management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.7.1 Saving projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.7.2 Project history and undo/redo . . . . . . . . . . . . . . . . . . . . . 61
4.8 Troubleshooting common issues . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.1 Board not detected . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.2 Compilation errors . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.3 Upload failures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.8.4 Program not running on microcontroller . . . . . . . . . . . . . . . 62
4.9 Tips and best practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.9.1 Programming tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.9.2 Hardware tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.9.3 Classroom/educational tips . . . . . . . . . . . . . . . . . . . . . . 63
4.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Conclusion 64 |
| Côte titre : |
MAI/1071 |
|