# Jupyter Notebooks in Undergraduate Mobile Robotics Courses: Educational Tool and Case Study
## 4 Methods
### Educational Tool
#### 4.2.2 The Collection of Jupyter Notebooks  
This section describes the contributed collection of Jupyter notebooks for mobile robotics courses, covering _labs_ 1 to 7, and categorized according to their tackled topic. Most of the notebooks follow a common structure:  
1. **Introduction. ** Description of the topic to be addressed in the notebook, including relevant theoretical concepts introduced as text, figures, equations, etc. This section also put the notebook in the context of a real problem (e.g., robot localization in a shopping mall). 2. **Imports. ** Code cell importing all the external modules needed to complete the assignment. 3. **Utils (optional). ** Depending on the complexity of the exercise, some code can be provided to the student to assist the implementation. 4. **Issues. ** Each exercise will be comprised of a number of issues or points to be solved, each one made up of some text cell describing it and some incomplete code cells. **Demos. ** In order to test the correctness of the assignment and illustrate the concepts of the exercise, there will be mostly complete code cells to create visualizations. This structure implements the _worked example_ approach [3; 42; 43; 44], so inexpert students can end up developing an algorithm for, for example, localizing the robot within a map of its workspace. Next sections describe these notebooks and the topics they address with more detail. Notice that they are referenced as _Lab. X_, being \(X\) the session index as provided in Table 1.  
It is also worth mentioning the content of the GitHub repository containing the notebooks' collection. It is organized as follows:  
* **images:** directory containing the figures used in the notebooks' narratives (see Figure 1 for an example). * **utils:** directory grouping together a number of utilities (Python.py files) that ease students' implementations if needed, so they can focus on more relevant parts of the algorithms addressed in the notebooks (recall the third point in the previous list). Examples of these utilities could be a function for drawing a triangle representing a robot at a certain position and with a given orientation, a method for plotting the uncertainty about robot/landmarks localization by means of ellipses, a method for composing poses, another one building complex Jacobian matrices, etc. * _ipynb files:_ the Jupyter notebooks themselves. * **LICENSE:** a file describing the notebooks' public license (GNU General Public License v3.0). * **README:** a file briefly describing the notebooks and their high-level dependencies. * **requirements:** a text file containing the packages on which the designed notebooks depend. It can be used to automatically install such dependencies by means of _pip_ or Anaconda. _Lab. 1:_ Probability Fundamentals  
_Problem description._ A solid, base knowledge of statistics is a must in courses dealing with mobile robots, sensors, and their inherent uncertainty [59; 60]. In contrast to most industrial robots, which usually operates in controlled environments and do repetitive works (e.g., an assembly line), a mobile robot faces a wider range of workspace configurations and situations that lead to uncertainty in both the robot and world state. Mobile robots operate in environments where not everything is known a priori, making intelligent decisions based on sensory data. Among the most common sources of uncertainty we can find: dynamic environments, sensor disturbances, or unreliable movement systems. Thus, the field of mobile robotics found in the utilization of probabilistic approaches a principled way to handle this uncertainty, which have had great success as of late [13; 61]. Such approaches are used to manage probabilistic models of the robot localization, the maps of its environment, the uncertainty in sensors' observations and actuators' actions, etc [17].