diff --git a/docs/course-data.yaml b/docs/course-data.yaml
index f6cb283..a643cee 100644
--- a/docs/course-data.yaml
+++ b/docs/course-data.yaml
@@ -576,7 +576,7 @@ software-dev:
- "Commit, push, and pull changes"
- "Run a unit test and fix a simple Python function"
- "Define continuous integration"
- - module_name: "Deep dive into Git and GitHub"
+ - module_name: "4.1 Deep dive into Git and GitHub"
tutorial_file: 4.1-github-deep-dive.md
topics:
- "GitHub issues"
@@ -590,7 +590,7 @@ software-dev:
- "Create a new branch"
- "Merge a GitHub pull request"
- "Resolve a merge conflict"
- - module_name: "Setting up VS Code"
+ - module_name: "4.2 Setting up VS Code"
tutorial_file: 4.2-vscode-setup.md
topics:
- "IDEs"
@@ -606,7 +606,7 @@ software-dev:
- "Set up VS Code"
- "Install Miniconda"
- "Install VS Code extensions"
- - module_name: "Debugging in VS Code"
+ - module_name: "4.3 Debugging in VS Code"
tutorial_file: 4.3-vscode-debugging.md
topics:
- "Print statements"
@@ -622,7 +622,7 @@ software-dev:
- "Step through code"
- "Use the debug console"
- "Set up debug configurations"
- - module_name: "Unit testing"
+ - module_name: "4.4 Unit testing"
tutorial_file: 4.4-unit-testing.md
topics:
- "pytest"
@@ -639,7 +639,7 @@ software-dev:
# Coding best practices? (e.g., modularity, readability, PEP8, object-oriented programming, etc.)
# Linting and code formatting? (e.g., black, flake8, isort, etc., especially VS Code Extensions)
# VS Code extensions? (e.g., Python, Jupyter, Git, etc.)
- - module_name: "Automated documentation"
+ - module_name: "4.5 Automated docs"
tutorial_file: 4.5-automated-docs.md
topics:
- "Markdown"
@@ -654,7 +654,7 @@ software-dev:
- "Set up a readthedocs account and publish a readthedocs page"
tutorial:
- "GitHub-flavored Markdown tutorial"
- - module_name: "Continuous integration (CI)"
+ - module_name: "4.6 Continuous integration"
tutorial_file: 4.6-continuous-integration.md
topics:
- "Continuous integration"
@@ -665,7 +665,7 @@ software-dev:
- "Explain the purpose of continuous integration"
- "Set up a GitHub actions workflow"
- "Run unit tests and documentation builds on GitHub actions"
- - module_name: "Project templates"
+ - module_name: "4.7 Project templates"
tutorial_file: 4.7-project-templates.md
topics:
- "PyScaffold"
@@ -680,7 +680,7 @@ software-dev:
- "Add project content"
- "Publish a Python package to PyPI"
- "Outline the key benefits of dependency management during software development"
- - module_name: "Launching a free cloud server"
+ - module_name: "4.8 Launching a free cloud server"
tutorial_file: 4.8-cloud-server.md
topics:
- "Serverless computing"
@@ -692,7 +692,7 @@ software-dev:
- "Use a container"
- "Create a container"
- "Deploy a materials discovery campaign on a cloud server"
- - module_name: "On-demand cloud simulations"
+ - module_name: "4.9 On-demand cloud simulations"
tutorial_file: 4.9-cloud-simulations.md
topics:
- "Cloud computing"
diff --git a/docs/courses/hello-world/1.3-bayesian-optimization.ipynb b/docs/courses/hello-world/1.3-bayesian-optimization.ipynb
index 9cf7af0..d8272bd 100644
--- a/docs/courses/hello-world/1.3-bayesian-optimization.ipynb
+++ b/docs/courses/hello-world/1.3-bayesian-optimization.ipynb
@@ -149,7 +149,31 @@
"- [The Olympus benchmarking package](https://aspuru-guzik-group.github.io/olympus/classes/planners/index.html) with a variety of other optimization algorithms documented\n",
"- [A `self-driving-lab-demo` discussion](https://github.com/sparks-baird/self-driving-lab-demo/discussions/57) which has a list of optimization algorithms \n",
"- [Honegumi](https://github.com/sgbaird/honegumi), an interactive \"skeleton code\" generator for optimization packages\n",
- "- [AC BO Hackathon Resources](https://ac-bo-hackathon.github.io/resources/), resources for participants from the Bayesian Optimization Hackathon for Chemistry and Materials"
+ "- [AC BO Hackathon Resources](https://ac-bo-hackathon.github.io/resources/), resources for participants from the Bayesian Optimization Hackathon for Chemistry and Materials\n",
+ "\n",
+ "- Materials Informatics Course: Bayes Theorem and Naive Bayes Classifiers\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "\n",
+ "- Materials Informatics Course: Coding a Naive Bayes Classifier By Hand\n",
+ "\n",
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "- Materials Informatics Course: Gaussian Processes\n",
+ "\n",
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "- Materials Informatics Course: Bayesian Optimization\n",
+ "\n",
+ "\n",
+ " \n",
+ "
"
]
},
{
diff --git a/docs/courses/hello-world/1.4.1-onboard-led-temp.ipynb b/docs/courses/hello-world/1.4.1-onboard-led-temp.ipynb
index 62b9f7a..e93d750 100644
--- a/docs/courses/hello-world/1.4.1-onboard-led-temp.ipynb
+++ b/docs/courses/hello-world/1.4.1-onboard-led-temp.ipynb
@@ -8,7 +8,7 @@
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/AccelerationConsortium/ac-microcourses/blob/main/docs/courses/hello-world/1.4.1-onboard-led-temp.ipynb)\n",
"\n",
- "Ensure that you've followed the instructions in the [hardware/software communication notebook](./1.4-hardware-software-communication.ipynb) to set up your Pico W microcontroller. This notebook will allow you to interact with the microcontroller via the MQTT protocol. This assumes you are using the same HiveMQ microcredentials as in this notebook (`HIVEMQ_USERNAME`, `HIVEMQ_PASSWORD`, `HIVEMQ_HOST`).\n",
+ "Ensure that you've followed the instructions in the [hardware/software communication notebook](./1.4-hardware-software-communication) to set up your Pico W microcontroller. This notebook will allow you to interact with the microcontroller via the MQTT protocol. This assumes you are using the same HiveMQ microcredentials as in this notebook (`HIVEMQ_USERNAME`, `HIVEMQ_PASSWORD`, `HIVEMQ_HOST`).\n",
"\n",
"\n",
"\n",
diff --git a/docs/courses/hello-world/1.6-connecting-the-pieces.md b/docs/courses/hello-world/1.6-connecting-the-pieces.md
index 031b798..586107f 100644
--- a/docs/courses/hello-world/1.6-connecting-the-pieces.md
+++ b/docs/courses/hello-world/1.6-connecting-the-pieces.md
@@ -26,11 +26,11 @@ You've made it to the final module of this microcourse! Well done π₯³. In this
β
Review the tutorials from the earlier modules. Direct links to the tutorial pages are copied here for convenience:
-1. [Running the demo](./1.1-running-the-demo.ipynb)
-2. [Blink and read](./1.2-blink-and-read.ipynb)
-3. [Bayesian optimization](./1.3-bayesian-optimization.ipynb)
-4. [Hardware-software communication](./1.4-hardware-software-communication.ipynb)
-5. [Data logging](1.5-data-logging.ipynb)
+1. [Running the demo](./1.1-running-the-demo)
+2. [Blink and read](./1.2-blink-and-read)
+3. [Bayesian optimization](./1.3-bayesian-optimization)
+4. [Hardware-software communication](./1.4-hardware-software-communication)
+5. [Data logging](1.5-data-logging)
β
Review the knowledge checks via the main course website
diff --git a/docs/courses/software-dev/4.1-github-deep-dive.md b/docs/courses/software-dev/4.1-github-deep-dive.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/courses/software-dev/4.1-vscode-setup.md b/docs/courses/software-dev/4.1-vscode-setup.md
deleted file mode 100644
index 0ba458b..0000000
--- a/docs/courses/software-dev/4.1-vscode-setup.md
+++ /dev/null
@@ -1,152 +0,0 @@
-
-(4.1-setup-vscode)=
-# 𧩠4.1 Setting Up VS Code
-
-```{contents}
-:depth: 3
-```
-
-## π° Tutorial
-
-In this module, you will learn how to set up VS Code and optimize it for Python development using tools like Miniconda, various extensions, and advanced features.
-
-1. Set up VS Code
-2. Install Miniconda for environment management
-3. Install key VS Code extensions for Python development
-4. Configure SSH for remote development
-5. Explore advanced tools such as Black formatter, Pylance, and GitHub Copilot Chat
-
-### Setting Up VS Code
-
-First, you will download and install Visual Studio Code (VS Code), a lightweight and powerful editor. Then, you'll learn how to configure it for efficient Python development.
-
-#### Steps:
-
-1. Download and install VS Code from the official site: [VS Code Download](https://code.visualstudio.com/).
-2. Open VS Code and get familiar with the interface, including the command palette, sidebar, and settings menu.
-
-**Video Tutorial**: [Getting Started with VS Code](https://www.youtube.com/watch?v=VqCgcpAypFQ)
-
-### Installing Miniconda
-
-Miniconda is a lightweight distribution of Conda, an environment and package manager for Python. It allows you to manage multiple isolated environments on your machine.
-
-```{note}
-Consider using [Mamba](https://github.com/mamba-org/mamba), a widely used, fast (written in C++), drop-in replacement for conda.
-```
-
-#### Steps:
-
-1. Download Miniconda from the [official site](https://docs.conda.io/en/latest/miniconda.html).
-2. Install Miniconda by following the instructions for your operating system.
-3. After installation, create a new Python environment:
- ```bash
- conda create -n myenv python=3.9
- conda activate myenv
- ```
-
-4. Ensure that VS Code is set up to use this environment for Python development.
-
-**Video Tutorial**: [How to Install Miniconda](https://www.youtube.com/watch?v=oHHbsMfyNR4&pp=ygUYSG93IHRvIEluc3RhbGwgTWluaWNvbmRh)
-
-### Installing Essential VS Code Extensions
-
-Extensions can enhance the functionality of VS Code, especially for Python development. Below are some essential extensions to install:
-
-- [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python): Adds Python language support.
-- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance): A high-performance language server with type checking and autocompletion.
-- [Black Formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter): Automatically formats your Python code.
-- [autoDocstring](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring): Generates docstrings for your Python functions and methods.
-- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot): An AI-powered coding assistant.
-- [GitHub Copilot Chat](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat): AI chat features powered by Copilot.
-- [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh): For remote development using SSH.
-
-To install these extensions:
-1. Open the **Extensions** view in VS Code (`Ctrl + Shift + X`).
-2. Search for each extension by name and click **Install**.
-
-**Video Tutorial**: [Best VS Code Extensions for Python](https://www.youtube.com/watch?v=fj2tuTIcUys&pp=ygUiQmVzdCBWUyBDb2RlIEV4dGVuc2lvbnMgZm9yIFB5dGhvbg%3D%3D)
-
-### Using SSH for Remote Development
-
-VS Code supports remote development, allowing you to write and run code on a remote machine as if it were local.
-
-#### Steps:
-
-1. Install the **Remote - SSH** extension from the marketplace.
-2. Set up SSH on your local machine by generating SSH keys:
- ```bash
- ssh-keygen -t rsa -b 4096
- ```
-3. Copy the public key to your remote server:
- ```bash
- ssh-copy-id username@hostname
- ```
-4. Use VS Code's Remote Explorer to connect to the remote server using SSH.
-
-**Video Tutorial**: [VS Code Remote Development with SSH](https://www.youtube.com/watch?v=miyD4c1dnTU&pp=ygUjVlMgQ29kZSBSZW1vdGUgRGV2ZWxvcG1lbnQgd2l0aCBTU0g%3D)
-
-### Configuring Black Formatter
-
-Black is an opinionated Python code formatter that ensures code is formatted consistently. Hereβs how to configure it in VS Code:
-
-1. Open the VS Code **Settings** (`Ctrl + ,`).
-2. Search for `Python Formatting Provider` and set it to `Black`.
-3. You can also configure VS Code to format your code on save by enabling the "Format on Save" option in settings.
-
-**Video Tutorial**: [How to Use Black in VS Code](https://www.youtube.com/watch?v=esZLCuWs_2Y)
-
-### GitHub Copilot Chat
-
-GitHub Copilot can assist you by suggesting code snippets, entire functions, and even refactoring your code. With **GitHub Copilot Chat**, you can interact with Copilot via a chat interface to get suggestions and resolve issues.
-
-#### Steps:
-
-1. Install **GitHub Copilot** and **GitHub Copilot Chat** extensions.
-2. After installation, sign in to your GitHub account in VS Code.
-3. Open the Copilot Chat interface and ask for help with coding, debugging, or writing functions.
-
-**Video Tutorial**: [GitHub Copilot Chat](https://www.youtube.com/watch?v=a2DDYMEPwbE&pp=ygUTR2l0SHViIENvcGlsb3QgQ2hhdA%3D%3D)
-
-### Additional Resources
-
-- [VS Code Documentation](https://code.visualstudio.com/docs)
-- [Conda Environments Guide](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html)
-- [Setting up VS Code for Python](https://code.visualstudio.com/docs/python/python-tutorial)
-- [Black Formatter Documentation](https://black.readthedocs.io/en/stable/)
-- [GitHub Copilot Documentation](https://docs.github.com/en/copilot)
-
-## π Quiz
-
-::::{tab-set}
-:sync-group: category
-
-:::{tab-item} Sp/Su 2024
-:sync: sp2024
-
-[URL]
-:::
-
-::::
-
-## π Assignment
-
-1. **Set up VS Code**:
- - Download and install VS Code, and create a Python virtual environment using Miniconda.
-
-2. **Install Extensions**:
- - Install the recommended extensions and configure Black as the default formatter.
-
-3. **SSH Configuration**:
- - Set up SSH access to a remote machine and use VS Code to write and run Python code remotely.
-
-::::{tab-set}
-:sync-group: category
-
-:::{tab-item} Sp/Su 2024
-:sync: sp2024
-
-[URL]
-:::
-
-::::
diff --git a/docs/courses/software-dev/4.2-vscode-debugging.md b/docs/courses/software-dev/4.2-vscode-debugging.md
deleted file mode 100644
index 3cdc3e3..0000000
--- a/docs/courses/software-dev/4.2-vscode-debugging.md
+++ /dev/null
@@ -1,220 +0,0 @@
-
-(4.2-debugging-vscode)=
-# 𧩠4.2 Debugging in VS Code
-
-```{contents}
-:depth: 3
-```
-
-## π° Tutorial
-
-In this module, you will learn how to debug Python code using VS Code's built-in debugging tools. By the end of this module, you'll be able to:
-
-1. Use print statements to debug code
-2. Set breakpoints to pause code execution at specific lines
-3. Inspect variables to check their values during execution
-4. Step through code line by line
-5. Use the debug console for live interaction with your running code
-6. Configure custom debug settings in VS Code
-
-### Debugging with Print Statements
-
-The simplest form of debugging is using print statements to display the values of variables at different stages of execution. This method is great for tracking the flow of the program and spotting where things might be going wrong.
-
-#### Steps:
-1. Add `print()` statements throughout your code to output the values of key variables.
-2. Run your Python file and check the terminal output for these printed messages.
-
-#### Example:
-```python
-def calculate_area(radius):
- area = 3.14 * radius**2
- print(f"Calculated area: {area}") # Debugging with a print statement
- return area
-
-
-radius = 5
-print(f"Radius: {radius}") # Print the value of radius
-area = calculate_area(radius)
-print(f"Final area: {area}") # Print the final calculated area
-```
-
-**Video Tutorial**: [Debugging Python with Print Statements](https://www.youtube.com/watch?v=GbyXP3_7SBg)
-
-### Setting Breakpoints
-
-Breakpoints allow you to pause the execution of your code at specific lines so that you can inspect the state of the program and variables at that moment. Unlike print statements, breakpoints provide more flexibility and control during debugging.
-
-#### Steps:
-1. Open your Python script in VS Code.
-2. Click in the margin next to the line number where you want to set a breakpoint. A red dot will appear to indicate the breakpoint.
-3. Run the debugger by pressing `F5`, and the code will pause when it hits the breakpoint.
-
-#### Example:
-```python
-def calculate_area(radius):
- area = 3.14 * radius**2
- return area
-
-
-radius = 5
-area = calculate_area(radius) # Set a breakpoint on this line
-print(f"Area: {area}")
-```
-
-**Video Tutorial**: [VS Code Breakpoints Tutorial](https://www.youtube.com/watch?v=cZhMgXgKQdI)
-
-### Inspecting Variables
-
-Once a breakpoint is hit, you can inspect the values of variables at that specific point in time. This helps in understanding the current state of the program and diagnosing any issues.
-
-#### Steps:
-1. After the code pauses at a breakpoint, hover over any variable in the editor to see its current value.
-2. Alternatively, use the **Variables** section in the Debug Sidebar to see the values of all local and global variables.
-
-#### Example:
-```python
-def calculate_area(radius):
- area = 3.14 * radius**2
- return area
-
-
-radius = 10 # Inspect the value of radius here
-area = calculate_area(radius)
-```
-
-**Video Tutorial**: [Inspecting Variables in VS Code](https://www.youtube.com/watch?v=qw--VYLpxG4)
-
-### Stepping Through Code
-
-Stepping allows you to move through your code line by line, giving you control over the pace of execution. You can "step into" functions, "step over" them, or "step out" of them.
-
-#### Steps:
-1. Once the code hits a breakpoint, use the toolbar buttons to:
- - **Step Over** (`F10`): Skip over a function call without entering it.
- - **Step Into** (`F11`): Enter into a function to debug it.
- - **Step Out** (`Shift + F11`): Exit the current function and return to the caller.
-
-#### Example:
-```python
-def multiply(a, b):
- return a * b
-
-
-def main():
- x = 5
- y = 10
- result = multiply(x, y) # Step into this function
- print(f"Result: {result}")
-
-
-main()
-```
-
-**Video Tutorial**: [Stepping Through Code in VS Code](https://www.youtube.com/watch?v=E8dGNupbI4U)
-
-### Using the Debug Console
-
-The debug console allows you to interact with your code while itβs paused. You can execute commands, print variable values, or run functions in real-time.
-
-#### Steps:
-1. While the code is paused at a breakpoint, open the **Debug Console** from the bottom panel.
-2. In the console, type in variable names to check their values or run Python expressions to see the output.
-
-#### Example:
-```python
-def divide(a, b):
- return a / b
-
-
-x = 50
-y = 0 # Potential division by zero error
-result = divide(
- x, y
-) # Set a breakpoint here and use the debug console to check variable values
-```
-
-**Video Tutorial**: [Using the Debug Console in VS Code](https://www.youtube.com/watch?v=-QRyPL5qupU)
-
-### Debug Configurations
-
-You can create custom debug configurations in VS Code to define how your program should be debugged. These configurations are defined in a `launch.json` file.
-
-#### Steps:
-1. Open the Command Palette (`Ctrl + Shift + P`) and search for **"Debug: Open launch.json"**.
-2. Select the Python environment.
-3. Customize the configuration based on your project needs.
-
-#### Example Configuration (`launch.json`):
-
-```json
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Python: Current File",
- "type": "python",
- "request": "launch",
- "program": "${file}",
- "console": "integratedTerminal",
- "args": ["--verbose"],
- "env": {"DEBUG": "true"},
- }
- ],
-}
-```
-
-
-
-
-**Video Tutorial**: [Setting Up Debug Configurations in VS Code](https://www.youtube.com/watch?v=gLNIRwX3oM4)
-
-### Additional Resources
-
-- [VS Code Debugging Documentation](https://code.visualstudio.com/docs/editor/debugging)
-- [Python Debugging in VS Code](https://code.visualstudio.com/docs/python/debugging)
-- [Advanced Debugging in VS Code](https://www.youtube.com/watch?v=2oFKNL7vYV8)
-
-## π Quiz
-
-::::{tab-set}
-:sync-group: category
-
-:::{tab-item} Sp/Su 2024
-:sync: sp2024
-
-[URL]
-:::
-
-::::
-
-## π Assignment
-
-1. **Use Print Statements**:
- - Modify an existing Python script and add `print()` statements to debug it. Track key variables and their values at different points in the script.
-
-2. **Set Breakpoints**:
- - In VS Code, set breakpoints in your code and run the debugger to pause execution at key lines.
-
-3. **Inspect Variables**:
- - Use the hover feature or Debug Sidebar to inspect variables when the code hits a breakpoint.
-
-4. **Step Through Code**:
- - Use the stepping controls (`F10`, `F11`, `Shift + F11`) to move through your code line by line.
-
-5. **Debug Console**:
- - Use the Debug Console to print variable values and run functions while the debugger is paused.
-
-6. **Debug Configurations**:
- - Create a custom debug configuration in VS Code by editing the `launch.json` file.
-
-::::{tab-set}
-:sync-group: category
-
-:::{tab-item} Sp/Su 2024
-:sync: sp2024
-
-[URL]
-:::
-
-::::
diff --git a/docs/courses/software-dev/4.2-vscode-setup.md b/docs/courses/software-dev/4.2-vscode-setup.md
index 8973ada..e84d06a 100644
--- a/docs/courses/software-dev/4.2-vscode-setup.md
+++ b/docs/courses/software-dev/4.2-vscode-setup.md
@@ -31,32 +31,30 @@ First, you will download and install Visual Studio Code (VS Code), a lightweight
Miniconda is a minimal installer for Conda, which is an open-source package management system and environment management system.
-1. Visit the [Miniconda download page](https://docs.conda.io/en/latest/miniconda.html).
-2. Download the appropriate installer for your operating system.
-3. Run the installer and follow the prompts.
-4. Verify the installation by opening a new terminal window and running:
+1. Download Miniconda from the [official site](https://docs.conda.io/en/latest/miniconda.html).
+2. Install Miniconda by following the instructions for your operating system.
+3. Verify the installation by opening a new terminal window and running:
```
conda --version
```
-
-**Video Tutorial**: [How to Install Miniconda](https://www.youtube.com/watch?v=oHHbsMfyNR4&pp=ygUYSG93IHRvIEluc3RhbGwgTWluaWNvbmRh)
-
-#### Steps:
-
-1. Download Miniconda from the [official site](https://docs.conda.io/en/latest/miniconda.html).
-2. Install Miniconda by following the instructions for your operating system.
-3. After installation, create a new Python environment:
+4. After installation, create a new Python environment:
```bash
- conda create -n myenv python=3.9
+ conda create -n myenv python=3.11
conda activate myenv
```
-4. Ensure that VS Code is set up to use this environment for Python development.
+5. Ensure that VS Code is set up to use this environment for Python development.
For detailed instructions on using Conda environments with VS Code, refer to the [official VS Code documentation on Python environments](https://code.visualstudio.com/docs/python/environments).
**Video Tutorial**: [How to Install Miniconda](https://www.youtube.com/watch?v=oHHbsMfyNR4&pp=ygUYSG93IHRvIEluc3RhbGwgTWluaWNvbmRh)
+```{note}
+
+Consider using [Mamba](https://github.com/mamba-org/mamba), a widely used, fast (written in C++), drop-in replacement for conda.
+
+```
+
### Installing Essential VS Code Extensions
Extensions can enhance the functionality of VS Code, especially for Python development. Below are some essential extensions to install:
@@ -66,6 +64,7 @@ Extensions can enhance the functionality of VS Code, especially for Python devel
- [Black Formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter): Automatically formats your Python code.
- [autoDocstring](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring): Generates docstrings for your Python functions and methods.
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot): An AI-powered coding assistant.
+- [GitHub Copilot Chat](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat): AI chat features powered by Copilot.
- [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh): For remote development using SSH.
To install these extensions:
diff --git a/docs/courses/software-dev/4.3-unit-testing.md b/docs/courses/software-dev/4.3-unit-testing.md
deleted file mode 100644
index 5d72c44..0000000
--- a/docs/courses/software-dev/4.3-unit-testing.md
+++ /dev/null
@@ -1,210 +0,0 @@
-
-(4.3-unit-testing)=
-# 𧩠4.3 Unit Testing
-
-```{contents}
-:depth: 3
-```
-
-## π° Tutorial
-
-In this module, you will learn the fundamentals of unit testing in Python using the **pytest** framework. You will also explore test-driven development (TDD) and how it can be applied to real-world projects.
-
-1. Explain the purpose of unit tests
-2. Write unit tests for the light-mixing demo
-3. Run and interpret unit tests to fix code
-4. Explain test-driven development (TDD)
-
-### Purpose of Unit Tests
-
-Unit tests are small, isolated tests that validate the functionality of a specific section (unit) of your code, such as a function or a class. They help ensure that individual components of your program behave as expected, making debugging easier and reducing the chances of introducing bugs when making changes.
-
-#### Key Benefits:
-- Validate the correctness of your code.
-- Catch issues early in the development cycle.
-- Provide a safety net for refactoring.
-- Improve code quality and maintainability.
-
-**Example:**
-```python
-def add(a, b):
- return a + b
-```
-
-A unit test for this function would check whether it correctly adds two numbers:
-```python
-def test_add():
- assert add(2, 3) == 5
-```
-
-**Video Tutorial**: [What is Unit Testing?](https://www.youtube.com/watch?v=1Lfv5tUGsn8)
-
-### Writing Unit Tests with pytest
-
-**pytest** is a popular Python testing framework that simplifies the process of writing and running tests. It automatically discovers test files and functions, and provides a clean, easy-to-use syntax.
-
-#### Steps:
-1. Install **pytest** using pip:
- ```bash
- pip install pytest
- ```
-2. Create a test file (e.g., `test_light_mixing.py`) and define your unit tests inside it.
-3. Use the `assert` statement to check whether the function outputs match the expected results.
-
-#### Example Unit Test for the Light-Mixing Demo:
-```python
-# light_mixing.py
-def mix_colors(color1, color2):
- if color1 == "red" and color2 == "blue":
- return "purple"
- elif color1 == "blue" and color2 == "yellow":
- return "green"
- elif color1 == "red" and color2 == "yellow":
- return "orange"
- else:
- return "unknown"
-
-
-# test_light_mixing.py
-def test_mix_colors():
- assert mix_colors("red", "blue") == "purple"
- assert mix_colors("blue", "yellow") == "green"
- assert mix_colors("red", "yellow") == "orange"
-```
-
-#### Running Tests:
-1. Navigate to the folder containing your test file.
-2. Run pytest from the command line:
- ```bash
- pytest
- ```
-
-pytest will automatically discover all files starting with `test_` and execute the tests.
-
-**Video Tutorial**: [Introduction to pytest](https://www.youtube.com/watch?v=Kt6QqGoAlvI&ab_channel=teclado)
-
-### Interpreting Test Results
-
-When you run pytest, it will display the results of your tests in the terminal. Here's how to interpret the output:
-
-- **Green (PASSED)**: The test passed successfully.
-- **Red (FAILED)**: The test failed. pytest will show you the expected result and the actual result so you can identify the issue.
-- **Yellow (SKIPPED)**: The test was skipped (typically because of a specific condition, such as platform dependency).
-
-#### Example Output:
-```bash
-============================= test session starts ==============================
-collected 3 items
-
-test_light_mixing.py ... [100%]
-
-============================== 3 passed in 0.03s ===============================
-```
-
-If a test fails, pytest will provide a detailed report:
-```bash
-def test_mix_colors():
-> assert mix_colors("blue", "yellow") == "purple"
-E AssertionError: assert 'green' == 'purple'
-
-test_light_mixing.py:5: AssertionError
-```
-
-In this case, you can see that the test expected "purple" but received "green," indicating an issue with the `mix_colors()` function.
-
-**Video Tutorial**: [Understanding pytest Output](https://www.youtube.com/watch?v=dN-pVt7i4Us&ab_channel=anthonywritescode)
-
-### Debugging with pytest
-
-When a test fails, you can use pytest's built-in debugging capabilities to help identify the issue. The `--pdb` flag can be used to drop into the Python debugger when a test fails, allowing you to inspect variables and step through the code.
-
-#### Steps:
-1. Run pytest with the `--pdb` flag:
- ```bash
- pytest --pdb
- ```
-2. When a test fails, pytest will drop into an interactive debugging session where you can inspect variables and explore the state of your program.
-
-#### Example:
-```bash
-(Pdb) print(color1)
-'blue'
-(Pdb) print(color2)
-'yellow'
-```
-
-**Video Tutorial**: [Debugging with pytest](https://www.youtube.com/watch?v=by9ZU7h1cgk&ab_channel=SuperEngineer)
-
-### Test-Driven Development (TDD)
-
-**Test-driven development (TDD)** is a software development approach where you write tests before writing the actual code. This ensures that the code you write is directly influenced by the tests, leading to a more robust and bug-free implementation.
-
-#### TDD Workflow:
-1. **Write a Test**: Begin by writing a test for the new functionality you want to implement.
-2. **Run the Test**: Since the functionality doesn't exist yet, the test will fail.
-3. **Write Code**: Write just enough code to make the test pass.
-4. **Run the Tests Again**: Ensure all tests pass. If any tests fail, fix the code until they pass.
-5. **Refactor**: Clean up the code while ensuring that the tests continue to pass.
-
-#### Example of TDD for Light Mixing:
-1. **Write the Test**:
- ```python
- def test_mix_colors():
- assert mix_colors("red", "blue") == "purple"
- ```
-2. **Run the Test**: It will fail because the `mix_colors()` function doesnβt exist yet.
-3. **Write the Function**:
- ```python
- def mix_colors(color1, color2):
- if color1 == "red" and color2 == "blue":
- return "purple"
- return "unknown"
- ```
-4. **Run the Test Again**: The test should now pass.
-5. **Refactor the Code**: Improve the `mix_colors()` function while ensuring the test still passes.
-
-**Video Tutorial**: [Test-Driven Development with pytest](https://www.youtube.com/watch?v=uEFrE6cgVNY)
-
-### Additional Resources
-
-- [pytest Documentation](https://docs.pytest.org/en/6.2.x/)
-- [Unit Testing in Python](https://realpython.com/python-testing/)
-- [Test-Driven Development Explained](https://martinfowler.com/bliki/TestDrivenDevelopment.html)
-
-## π Quiz
-
-::::{tab-set}
-:sync-group: category
-
-:::{tab-item} Sp/Su 2024
-:sync: sp2024
-
-[URL]
-:::
-
-::::
-
-## π Assignment
-
-1. **Write Unit Tests**:
- - Write unit tests for the light-mixing demo and ensure that the color combinations return the correct results.
-
-2. **Run Tests**:
- - Use pytest to run the tests and verify the output. Interpret any errors and fix the code accordingly.
-
-3. **Debugging**:
- - Use the pytest `--pdb` flag to debug any failing tests and inspect variables during the debugging session.
-
-4. **Test-Driven Development**:
- - Implement a new feature using the TDD approach. Write the tests first, then write the code to make the tests pass.
-
-::::{tab-set}
-:sync-group: category
-
-:::{tab-item} Sp/Su 2024
-:sync: sp2024
-
-[URL]
-:::
-
-::::
diff --git a/docs/courses/software-dev/4.7-cloud-servers.md b/docs/courses/software-dev/4.7-cloud-servers.md
index 31934f8..a17f1e7 100644
--- a/docs/courses/software-dev/4.7-cloud-servers.md
+++ b/docs/courses/software-dev/4.7-cloud-servers.md
@@ -191,4 +191,10 @@ In this example, we will deploy a simplified **materials discovery campaign** wh
::::{tab-set}
:sync-group: category
-:::{tab
+:::{tab-item} Sp/Su 2024
+:sync: sp2024
+
+[URL]
+:::
+
+::::
diff --git a/docs/courses/software-dev/index.md b/docs/courses/software-dev/index.md
index 06686fa..ee61df0 100644
--- a/docs/courses/software-dev/index.md
+++ b/docs/courses/software-dev/index.md
@@ -55,15 +55,15 @@ Waitlist {octicon}`link-external;1em`
π Waitlist
𧩠4.0 Orientation <4.0-orientation.md>
-𧩠Deep dive into Git and GitHub <4.1-github-deep-dive.md>
-𧩠Setting up VS Code <4.2-vscode-setup.md>
-𧩠Debugging in VS Code <4.3-vscode-debugging.md>
-𧩠Unit testing <4.4-unit-testing.md>
-𧩠Automated documentation <4.5-automated-docs.md>
-𧩠Continuous integration (CI) <4.6-continuous-integration.md>
-𧩠Project templates <4.7-project-templates.md>
-𧩠Launching a free cloud server <4.8-cloud-server.md>
-𧩠On-demand cloud simulations <4.9-cloud-simulations.md>
+𧩠4.1 Deep dive into Git and GitHub <4.1-github-deep-dive.md>
+𧩠4.2 Setting up VS Code <4.2-vscode-setup.md>
+𧩠4.3 Debugging in VS Code <4.3-vscode-debugging.md>
+𧩠4.4 Unit testing <4.4-unit-testing.md>
+𧩠4.5 Automated docs <4.5-automated-docs.md>
+𧩠4.6 Continuous integration <4.6-continuous-integration.md>
+𧩠4.7 Project templates <4.7-project-templates.md>
+𧩠4.8 Launching a free cloud server <4.8-cloud-server.md>
+𧩠4.9 On-demand cloud simulations <4.9-cloud-simulations.md>
```
diff --git a/docs/courses/software-dev/overview.md b/docs/courses/software-dev/overview.md
index 18f22ef..acddc1a 100644
--- a/docs/courses/software-dev/overview.md
+++ b/docs/courses/software-dev/overview.md
@@ -83,7 +83,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Run a unit test and fix a simple Python function
* Define continuous integration
-* - Deep dive into Git and GitHub
+* - 4.1 Deep dive into Git and GitHub
- * GitHub issues
* Pull requests
* Collaborative coding
@@ -94,7 +94,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Merge a GitHub pull request
* Resolve a merge conflict
-* - Setting up VS Code
+* - 4.2 Setting up VS Code
- * IDEs
* Miniconda
* VS Code extensions
@@ -108,7 +108,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Install Miniconda
* Install VS Code extensions
-* - Debugging in VS Code
+* - 4.3 Debugging in VS Code
- * Print statements
* Setting breakpoints
* Inspecting variables
@@ -122,7 +122,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Use the debug console
* Set up debug configurations
-* - Unit testing
+* - 4.4 Unit testing
- * pytest
* Test result interpretation
* Debugging
@@ -132,7 +132,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Run and interpret unit tests to fix code
* Explain test-driven development
-* - Automated documentation
+* - 4.5 Automated docs
- * Markdown
* Documentation as code
* Docstrings
@@ -143,7 +143,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Write a docstring for a Python function
* Set up a readthedocs account and publish a readthedocs page
-* - Continuous integration (CI)
+* - 4.6 Continuous integration
- * Continuous integration
* GitHub actions
* Unit tests
@@ -152,7 +152,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Set up a GitHub actions workflow
* Run unit tests and documentation builds on GitHub actions
-* - Project templates
+* - 4.7 Project templates
- * PyScaffold
* Cookiecutter
* Project initialization
@@ -165,7 +165,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Publish a Python package to PyPI
* Outline the key benefits of dependency management during software development
-* - Launching a free cloud server
+* - 4.8 Launching a free cloud server
- * Serverless computing
* PythonAnywhere
* Hugging Face
@@ -175,7 +175,7 @@ Each module is intended to take approximately 3-4 hours, assuming that the recom
* Create a container
* Deploy a materials discovery campaign on a cloud server
-* - On-demand cloud simulations
+* - 4.9 On-demand cloud simulations
- * Cloud computing
* Setting up an AWS account
* AWS Lambda