diff --git a/tutorials/Bonus_BonusContent/Bonus_Intro.ipynb b/tutorials/Bonus_BonusContent/Bonus_Intro.ipynb index 2f583532..16eb39dc 100644 --- a/tutorials/Bonus_BonusContent/Bonus_Intro.ipynb +++ b/tutorials/Bonus_BonusContent/Bonus_Intro.ipynb @@ -210,7 +210,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/Bonus_Outro.ipynb b/tutorials/Bonus_BonusContent/Bonus_Outro.ipynb index 41a1c8e3..8133ca99 100644 --- a/tutorials/Bonus_BonusContent/Bonus_Outro.ipynb +++ b/tutorials/Bonus_BonusContent/Bonus_Outro.ipynb @@ -196,7 +196,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/Bonus_Tutorial1.ipynb b/tutorials/Bonus_BonusContent/Bonus_Tutorial1.ipynb index 83b60022..ef85377e 100644 --- a/tutorials/Bonus_BonusContent/Bonus_Tutorial1.ipynb +++ b/tutorials/Bonus_BonusContent/Bonus_Tutorial1.ipynb @@ -2307,7 +2307,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/Bonus_Tutorial2.ipynb b/tutorials/Bonus_BonusContent/Bonus_Tutorial2.ipynb index 8d85902d..a690ca88 100644 --- a/tutorials/Bonus_BonusContent/Bonus_Tutorial2.ipynb +++ b/tutorials/Bonus_BonusContent/Bonus_Tutorial2.ipynb @@ -1730,7 +1730,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/Bonus_Tutorial3.ipynb b/tutorials/Bonus_BonusContent/Bonus_Tutorial3.ipynb index 2e8d7ce7..ab37ea48 100644 --- a/tutorials/Bonus_BonusContent/Bonus_Tutorial3.ipynb +++ b/tutorials/Bonus_BonusContent/Bonus_Tutorial3.ipynb @@ -2260,7 +2260,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/instructor/Bonus_Intro.ipynb b/tutorials/Bonus_BonusContent/instructor/Bonus_Intro.ipynb index 0de8fd8d..16eb39dc 100644 --- a/tutorials/Bonus_BonusContent/instructor/Bonus_Intro.ipynb +++ b/tutorials/Bonus_BonusContent/instructor/Bonus_Intro.ipynb @@ -34,7 +34,7 @@ "source": [ "## Overview\n", "\n", - "This is a bonus day on Autoencoders. Autoencoders are a form of deep neural network that performs nonlinear dimensionality reduction." + "This is an example bonus day on \"topic\". Short topic desctription goes here. Below is example content from our comp neuro course. Please free to use it as a template for your Bonus Tutorials." ] }, { @@ -210,7 +210,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/instructor/Bonus_Outro.ipynb b/tutorials/Bonus_BonusContent/instructor/Bonus_Outro.ipynb index 41a1c8e3..8133ca99 100644 --- a/tutorials/Bonus_BonusContent/instructor/Bonus_Outro.ipynb +++ b/tutorials/Bonus_BonusContent/instructor/Bonus_Outro.ipynb @@ -196,7 +196,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial1.ipynb b/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial1.ipynb index 02ff356a..1518032f 100644 --- a/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial1.ipynb +++ b/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial1.ipynb @@ -2313,7 +2313,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial2.ipynb b/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial2.ipynb index b572d0b6..b84cf982 100644 --- a/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial2.ipynb +++ b/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial2.ipynb @@ -1734,7 +1734,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial3.ipynb b/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial3.ipynb index 6ea2287d..5261ae01 100644 --- a/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial3.ipynb +++ b/tutorials/Bonus_BonusContent/instructor/Bonus_Tutorial3.ipynb @@ -2262,7 +2262,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_9d6c1017_11.png b/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_9d6c1017_11.png index ba5213fb..52f63be0 100644 Binary files a/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_9d6c1017_11.png and b/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_9d6c1017_11.png differ diff --git a/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_c05ddd88_0.png b/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_c05ddd88_0.png index ba5213fb..48e09de4 100644 Binary files a/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_c05ddd88_0.png and b/tutorials/Bonus_BonusContent/static/Bonus_Tutorial1_Solution_c05ddd88_0.png differ diff --git a/tutorials/Bonus_BonusContent/student/Bonus_Intro.ipynb b/tutorials/Bonus_BonusContent/student/Bonus_Intro.ipynb index 0de8fd8d..16eb39dc 100644 --- a/tutorials/Bonus_BonusContent/student/Bonus_Intro.ipynb +++ b/tutorials/Bonus_BonusContent/student/Bonus_Intro.ipynb @@ -34,7 +34,7 @@ "source": [ "## Overview\n", "\n", - "This is a bonus day on Autoencoders. Autoencoders are a form of deep neural network that performs nonlinear dimensionality reduction." + "This is an example bonus day on \"topic\". Short topic desctription goes here. Below is example content from our comp neuro course. Please free to use it as a template for your Bonus Tutorials." ] }, { @@ -210,7 +210,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/student/Bonus_Outro.ipynb b/tutorials/Bonus_BonusContent/student/Bonus_Outro.ipynb index 41a1c8e3..8133ca99 100644 --- a/tutorials/Bonus_BonusContent/student/Bonus_Outro.ipynb +++ b/tutorials/Bonus_BonusContent/student/Bonus_Outro.ipynb @@ -196,7 +196,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/student/Bonus_Tutorial1.ipynb b/tutorials/Bonus_BonusContent/student/Bonus_Tutorial1.ipynb index 41832955..39f1f2bf 100644 --- a/tutorials/Bonus_BonusContent/student/Bonus_Tutorial1.ipynb +++ b/tutorials/Bonus_BonusContent/student/Bonus_Tutorial1.ipynb @@ -1169,11 +1169,11 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/NeuromatchAcademy/course-content/tree/main/tutorials/Bonus_Autoencoders/solutions/Bonus_Tutorial1_Solution_c05ddd88.py)\n", + "[*Click for solution*](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Bonus_BonusContent/solutions/Bonus_Tutorial1_Solution_c05ddd88.py)\n", "\n", "*Example output:*\n", "\n", - "\n", + "\n", "\n" ] }, @@ -1366,7 +1366,7 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/NeuromatchAcademy/course-content/tree/main/tutorials/Bonus_Autoencoders/solutions/Bonus_Tutorial1_Solution_e7182519.py)\n", + "[*Click for solution*](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Bonus_BonusContent/solutions/Bonus_Tutorial1_Solution_e7182519.py)\n", "\n" ] }, @@ -2014,11 +2014,11 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/NeuromatchAcademy/course-content/tree/main/tutorials/Bonus_Autoencoders/solutions/Bonus_Tutorial1_Solution_9d6c1017.py)\n", + "[*Click for solution*](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Bonus_BonusContent/solutions/Bonus_Tutorial1_Solution_9d6c1017.py)\n", "\n", "*Example output:*\n", "\n", - "\n", + "\n", "\n" ] }, @@ -2254,7 +2254,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/student/Bonus_Tutorial2.ipynb b/tutorials/Bonus_BonusContent/student/Bonus_Tutorial2.ipynb index ee99b81f..9817bed6 100644 --- a/tutorials/Bonus_BonusContent/student/Bonus_Tutorial2.ipynb +++ b/tutorials/Bonus_BonusContent/student/Bonus_Tutorial2.ipynb @@ -1035,7 +1035,7 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/NeuromatchAcademy/course-content/tree/main/tutorials/Bonus_Autoencoders/solutions/Bonus_Tutorial2_Solution_0d50004f.py)\n", + "[*Click for solution*](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Bonus_BonusContent/solutions/Bonus_Tutorial2_Solution_0d50004f.py)\n", "\n" ] }, @@ -1356,7 +1356,7 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/NeuromatchAcademy/course-content/tree/main/tutorials/Bonus_Autoencoders/solutions/Bonus_Tutorial2_Solution_f82e3b9c.py)\n", + "[*Click for solution*](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Bonus_BonusContent/solutions/Bonus_Tutorial2_Solution_f82e3b9c.py)\n", "\n" ] }, @@ -1661,7 +1661,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/Bonus_BonusContent/student/Bonus_Tutorial3.ipynb b/tutorials/Bonus_BonusContent/student/Bonus_Tutorial3.ipynb index 24cf175a..a72bd782 100644 --- a/tutorials/Bonus_BonusContent/student/Bonus_Tutorial3.ipynb +++ b/tutorials/Bonus_BonusContent/student/Bonus_Tutorial3.ipynb @@ -1916,7 +1916,7 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/NeuromatchAcademy/course-content/tree/main/tutorials/Bonus_Autoencoders/solutions/Bonus_Tutorial3_Solution_22e2c431.py)\n", + "[*Click for solution*](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Bonus_BonusContent/solutions/Bonus_Tutorial3_Solution_22e2c431.py)\n", "\n" ] }, @@ -2247,7 +2247,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.9.18" } }, "nbformat": 4, diff --git a/tutorials/README.md b/tutorials/README.md index 92234547..68bbf599 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -8,10 +8,6 @@ ## W1D1 - Instructions -[YouTube Playlist](https://www.youtube.com/playlist?list=PLkBQOLLbi18ObAiSOZ42YBwOQIKNvspeI) - -Slides: [Intro](https://mfr.ca-1.osf.io/render?url=https://osf.io/rbx2a/?direct%26mode=render%26action=download%26mode=render) | [Tutorials](https://mfr.ca-1.osf.io/render?url=https://osf.io/6dxwe/?direct%26mode=render%26action=download%26mode=render) | [DaySummary](https://mfr.ca-1.osf.io/render?url=https://osf.io/jdumz/?direct%26mode=render%26action=download%26mode=render) | [Outro](https://mfr.ca-1.osf.io/render?url=https://osf.io/9hkg2/?direct%26mode=render%26action=download%26mode=render) | [Reading](https://mfr.ca-1.osf.io/render?url=https://osf.io/2esh5/?direct%26mode=render%26action=download%26mode=render) | [TA](https://mfr.ca-1.osf.io/render?url=https://osf.io/5vj73/?direct%26mode=render%26action=download%26mode=render) - | | Run | Run | View | | - | --- | --- | ---- | | Intro | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/neuromatch/course-content-template/blob/main/tutorials/W1D1_Instructions/W1D1_Intro.ipynb) | [![Open In kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://raw.githubusercontent.com/neuromatch/course-content-template/main/tutorials/W1D1_Instructions/W1D1_Intro.ipynb) | [![View the notebook](https://img.shields.io/badge/render-nbviewer-orange.svg)](https://nbviewer.jupyter.org/github/neuromatch/course-content-template/blob/main/tutorials/W1D1_Instructions/W1D1_Intro.ipynb?flush_cache=true) | @@ -29,10 +25,6 @@ Slides: [Intro](https://mfr.ca-1.osf.io/render?url=https://osf.io/rbx2a/?direct% ## W1D2 - Template -[YouTube Playlist](https://www.youtube.com/playlist?list=PLkBQOLLbi18ObAiSOZ42YBwOQIKNvspeI) - -Slides: [Intro](https://mfr.ca-1.osf.io/render?url=https://osf.io/rbx2a/?direct%26mode=render%26action=download%26mode=render) | [Tutorials](https://mfr.ca-1.osf.io/render?url=https://osf.io/6dxwe/?direct%26mode=render%26action=download%26mode=render) | [DaySummary](https://mfr.ca-1.osf.io/render?url=https://osf.io/jdumz/?direct%26mode=render%26action=download%26mode=render) | [Outro](https://mfr.ca-1.osf.io/render?url=https://osf.io/9hkg2/?direct%26mode=render%26action=download%26mode=render) | [Reading](https://mfr.ca-1.osf.io/render?url=https://osf.io/2esh5/?direct%26mode=render%26action=download%26mode=render) | [TA](https://mfr.ca-1.osf.io/render?url=https://osf.io/5vj73/?direct%26mode=render%26action=download%26mode=render) - | | Run | Run | View | | - | --- | --- | ---- | | Intro | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/neuromatch/course-content-template/blob/main/tutorials/W1D2_Template/W1D2_Intro.ipynb) | [![Open In kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://raw.githubusercontent.com/neuromatch/course-content-template/main/tutorials/W1D2_Template/W1D2_Intro.ipynb) | [![View the notebook](https://img.shields.io/badge/render-nbviewer-orange.svg)](https://nbviewer.jupyter.org/github/neuromatch/course-content-template/blob/main/tutorials/W1D2_Template/W1D2_Intro.ipynb?flush_cache=true) | diff --git a/tutorials/W1D1_Instructions/W1D1_Tutorial4.ipynb b/tutorials/W1D1_Instructions/W1D1_Tutorial4.ipynb index 40719ef9..0bac29a5 100644 --- a/tutorials/W1D1_Instructions/W1D1_Tutorial4.ipynb +++ b/tutorials/W1D1_Instructions/W1D1_Tutorial4.ipynb @@ -103,7 +103,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "execution": {} + }, "source": [ "Steps:\n", "- Decide on the format for your wrap up\n", diff --git a/tutorials/W1D1_Instructions/instructor/W1D1_Tutorial4.ipynb b/tutorials/W1D1_Instructions/instructor/W1D1_Tutorial4.ipynb index c9a08af3..4f813a13 100644 --- a/tutorials/W1D1_Instructions/instructor/W1D1_Tutorial4.ipynb +++ b/tutorials/W1D1_Instructions/instructor/W1D1_Tutorial4.ipynb @@ -66,34 +66,10 @@ }, "source": [ "---\n", - "## Setup (maybe remove?)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "In this section, we have:\n", "\n", - "1. **Github Actions**: Enable github actions to allow for triggered workflows.\n", - "2. **Branches and PRs**: Create local branches, push to github, and create a pull request.\n", - "3. **Folder Structure and Naming Convention**: Guidelines to follow so that the processing and build steps work correctly.\n", - "4. **Materials.yml**: Add days and tutorials to the materials.yml file.\n", - "5. **Workflows**: Trigger the workflows." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "---\n", + "## Section 1: Adding artwork to the day landing page\n", "\n", - "## Section 1: How to enable github action\n", + "In this section, we will describe the naming conventions that you need to follow, in order to add images to the day landing page\n", " " ] }, @@ -103,21 +79,13 @@ "execution": {} }, "source": [ - "Steps:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "- click on the settings tab in your newly created repo\n", - "- click on the actions dropdown -> general\n", - "- click on *allow all action and reusable workflows*\n", - "- click save\n", + "Steps:\n", + "- Choose the image you want to use. This can come from the Art contests during the course, or from somewhere on the web.\n", + "- Add the image to the directory tutorials/Art/\n", + "- Name the image with the follow format: W#D#_DayName-Artist_Name.(jpg or png)\n", "\n", - "
\n" + "You **must** follow the above format exactly! This includes the underscores and dashes. Here is an example: W2D4_DynamicNetworks-Ekaterina_Morozova.jpg\n", + "The beginning of the file name (ie. W2D4_) is used to place the image on the landing page for the right day, and the end (ie. -Ekaterina_Morozova) is used to credit the artist. You can find examples [here](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Art)." ] }, { @@ -128,72 +96,9 @@ "source": [ "---\n", "\n", - "# Section 2: How to create a PR\n", - "\n", - "When creating content you want to add to the course book, you will need to have python and git installed. Afterwards, you will need to create a local python environment with all requirements for your code installed; including jyputer. Before starting to add content, you will need to create a new branch. Instructions [here](https://www.w3schools.com/git/git_branch.asp). \n", - "\n", - "Once you have created your working branch, you can then start to work on your notebook. Before saving your notebook and committing the changes to your branch, restart the kernel and clear all cells. Then you can save it, [add](https://www.w3schools.com/git/git_staging_environment.asp?remote=github) the changes, [commit](https://www.w3schools.com/git/git_commit.asp?remote=github) them, and [push](https://www.w3schools.com/git/git_push_to_remote.asp?remote=github) to github.\n", - "\n", - "**NOTE**: It is vital that you restart the kernel and clear all outputs. The processing scripts will throw an error if you do not, and the workflow will **not** complete successfully.\n", - "\n", - "**Be Careful**: Remeber to pull the lastest changes from github before you commit your work! This is important, a successful workflow execution will create new commits, and if you do not pull the those changes before your commit your local ones, there will be a commit history conflict; i.e you will not be able to push your changes.\n", - "\n", - "\n", - "How to restart kernel and clear all outputs:\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "## Section 2.1: Creating a PR\n", - "\n", - "Once you have pushed the work on your new branch, you can create a PR onto the main branch. **NOTE**: This will trigger the processing workflow for the course content.\n", - "\n", - "Create a pull request:\n", - "\n", - "\n", - "\n", - "\n", - "Process Notebook workflow:\n", - "\n", - "\n", - "\n", - "The process notebook workflow will automatically get triggered once a pull request is made to the main branch. It will create the student, instructor and solutions directories, verify the exercises, and prepare the content for the publish workflow. You do **not** need to create or touch the aforementioned folders. All your work should be done on the jupyter notebooks. Remember to restart the kernel and clear your output, if you do not, the process notebooks workflow will throw an error." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "# Section 3: Folder Structure and Naming Conventions\n", - "\n", - "In order for the workflows and scripts to work correctly, and for your book to properly build, you will need to **strictly** follow our folder heirarchy and naming conventions. This is what the scripts are expecting, and you will not be able to successfully build your course book if you deviate from the conventions. \n", - "\n", - "- book/ (do not touch, this get automatically created/population in the publish workflow)\n", - "- projects/ (TODO: explain this in more depth)\n", - "- tutorials/\n", - " - W#D#\\_DayName/ -> (ie. W1D1\\_InstructionsTemplate; This is strict! You must have the W#D#\\_ prefix followed by the name of the content for that day. The name **cannot** include special characters (i.e \\-, \\_) and must follow the format shown.\n", - " - static/\n", - " - README.md -> (This needs to match exactly!)\n", - " - W#D#\\_DaySummary.ipynb -> (The name needs to match exactly!)\n", - " - W#D#\\_Intro.ipynb -> (The name needs to match exactly!)\n", - " - W#D#\\_Outro.ipynb -> (The name needs to match exactly!)\n", - " - W#D#\\_Tutorial#.ipynb -> (The name needs to match exactly! You can have multiple tutorials for a day as long as you number them sequentially and add the number to the materials.yml file.)\n", - " - further_reading.md -> (The name needs to match exactly!)\n", - " - static/\n", - " - materials.yml\n", - "\n", - "See a working example below:\n", - "\n", + "## Section 2: Adding Module (category) WrapUps\n", "\n", - "To reiterate, you do not need to worry about the student, instructor, or solutions directories. Those are automatically taken care of." + "Module WrapUps are a good way to connect the dots between concepts that were discussed over several days. You can think of new and fun ways to acheive this. In the past we have embedded podcasts about a given topic to help solidify what was taught.\n" ] }, { @@ -202,37 +107,13 @@ "execution": {} }, "source": [ - "## Section 3.1: Cell Tags (markings at the top of the cell)\n", - "\n", - "The workflows and processing scripts actively make use of predefined tags to determine how to process the cell. There are tags for video embeddeing, slide embedding, titles, exercises and solutions, etc. It is very important these instructions are followed **exactly**! Any deviations will break the pipeline. More details about the tags and how to use them can be found in W1D2_Tutorial1.ipynb of the template notebook.\n", - "\n", - "**NOTE**: Please read the details found in the template very carefully. Specifically the section on exercises and solutions. You need to be precise. We have a script to verify exercises that will fail if you deviate from the instructions. For example, the comments in the cells for the exercises and solutions grouping need to be **EXACT**. See below:\n", - "\n", - "Exercise:\n", + "Steps:\n", + "- Decide on the format for your wrap up\n", + "- Add the notebook file to the directory tutorials/Module_WrapUps\n", + "- Give the file the same name as the module (category) with the file extension .ipynb\n", + "Here is an example of the naming convention: CourseContentTemplateInstructions.ipynb\n", "\n", - "def func(ex):\n", - "\n", - " # comments describing the exercises\n", - "\n", - " x = ...\n", - " \n", - " return x\n", - "\n", - "\n", - "Solution:\n", - "\n", - "def func(ex):\n", - "\n", - " # comment describing the exercises\n", - "\n", - " x = ...\n", - " \n", - " return x\n", - "\n", - "\n", - "This will fail because \"comments\" is singular in the comments of the solution cell. These checks are in place to ensure the exercise and corresponding solution cells are appropriately matched and coupled. This comment rule applies to **all** comments in the exercise/solution cells.\n", - "\n", - "The above is not an exhaustive list of the cell tags, it is simply a highlight of something that can go wrong that is easy to miss. Please find the details of all tags [here](https://neuromatch.github.io/course-content-template/tutorials/W1D2_Template/student/W1D2_Tutorial1.html). " + "**Note**: the category name defined in the materials.yml file may have spaces, but the file name for the wrap up must *not*. Simply remove the spaces and concatenate all the word in the category title together, exactly how they are written in the materials file.\n" ] }, { @@ -241,25 +122,10 @@ "execution": {} }, "source": [ - "## Section 3.2: Add Images\n", - "\n", - "Your images should live in the static directories. They can be grouped into the a static directory per day, or can be inside the general static directory for all tutorials. The important thing here is that you correctly link to the proper URL. You can directly add the following html into your markdown cells in order to add images.\n", - "\n", - "\n", - "\\\\\\
\n", - "\n", - "\n", - "Ex:\n", - "\n", - "\\\\\\
\n", - "\n", - "We recommend using .png or .gif file extensions.\n", - "\n", - "**NOTE**: This will not show up in your local development environment until the images are added to the main branch on github. As you can see from the above URL, it is pointing to the main branch of a github repository. If you would like to test it locally, you can use this:\n", - "\n", - "\\\\\\
\n", + "___\n", "\n", - "Remember to change the source back to the github url before pushing your changes!" + "## Section 3: Bonus Tutorials\n", + "\n" ] }, { @@ -270,59 +136,7 @@ "source": [ "---\n", "\n", - "# Section 4: Add Content to the materials.yml File\n", - "\n", - "The materials.yml file is used in our scripts to help verify links, populate the books, and create our table of contents. Be sure to **precisely** follow the structure outlined in the file. If you look at the materials.yml file for this template notebook, you will see the structure laid out in order for this book to properly build. There are comments in the file to further explain all the fields you will need to use. Here is an overview of the structure:\n", - "\n", - "- day: W1D1\n", - " - category: Course Content Template Instructions \n", - " - intro: https://www.youtube.com/watch?v=KxldhMR5PxA\n", - " - intro_bilibili: https://www.bilibili.com/video/BV1HT4y1E7U4/\n", - " - name: Instructions \n", - " - outro: https://www.youtube.com/watch?v=KZQXfQL1SH4\n", - " - outro_bilibili: https://www.bilibili.com/video/BV1vv411i7SG/\n", - " - playlist: https://www.youtube.com/playlist?list=PLkBQOLLbi18ObAiSOZ42YBwOQIKNvspeI\n", - "\n", - " - qa: #insert as many as Q&A video links as needed\n", - " - Insert Q&A video link 1 here \n", - "\n", - " - slides: #insert as many as slides links and titles as needed\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/rbx2a/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Intro\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/6dxwe/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Tutorials\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/jdumz/?direct%26mode=render%26action=download%26mode=render\n", - " - title: DaySummary\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/9hkg2/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Outro\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/2esh5/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Reading\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/5vj73/?direct%26mode=render%26action=download%26mode=render\n", - " - title: TA\n", - " - tutorials: 1\n", - " \n", - "Remember to create one grouping of the above content per day and be sure to set the number of tutorials." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "# Section 5: Workflows\n", - "TODO: look into other workflows, ask spiros and ella\n", - "\n", - "There are two main workflows used to build the notebooks:\n", - "- notebook-pr (automatically triggered when a PR is made onto the main repo)\n", - "- publish-book (this needs to be manually triggered by navigating to the github actions tab. See Below)\n", - "Each workflow involves building python environments and running python scripts on github's servers, and then automatically creating the appropriate commits and pushes on github. The scripts handle notbeook processing, verification and html generation. After the publish-book workflow is complete, it pushes the generated html files into the gh-pages branch (it creates one if it does not exist). This branch is not to be touched and is automatically taken care of for us. All we need to do is change our pages settings under github settings to use the gh-pages branch instead of main. See Below.\n", - "\n", - "Trigger publish-book:\n", - "\n", - "\n", - "Point github pages to the gh-pages branch:\n", - "\n" + "## Section 4: Course Schedule\n" ] }, { diff --git a/tutorials/W1D1_Instructions/student/W1D1_Tutorial4.ipynb b/tutorials/W1D1_Instructions/student/W1D1_Tutorial4.ipynb index f8e334b8..74923463 100644 --- a/tutorials/W1D1_Instructions/student/W1D1_Tutorial4.ipynb +++ b/tutorials/W1D1_Instructions/student/W1D1_Tutorial4.ipynb @@ -66,34 +66,10 @@ }, "source": [ "---\n", - "## Setup (maybe remove?)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "In this section, we have:\n", "\n", - "1. **Github Actions**: Enable github actions to allow for triggered workflows.\n", - "2. **Branches and PRs**: Create local branches, push to github, and create a pull request.\n", - "3. **Folder Structure and Naming Convention**: Guidelines to follow so that the processing and build steps work correctly.\n", - "4. **Materials.yml**: Add days and tutorials to the materials.yml file.\n", - "5. **Workflows**: Trigger the workflows." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "---\n", + "## Section 1: Adding artwork to the day landing page\n", "\n", - "## Section 1: How to enable github action\n", + "In this section, we will describe the naming conventions that you need to follow, in order to add images to the day landing page\n", " " ] }, @@ -103,21 +79,13 @@ "execution": {} }, "source": [ - "Steps:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "- click on the settings tab in your newly created repo\n", - "- click on the actions dropdown -> general\n", - "- click on *allow all action and reusable workflows*\n", - "- click save\n", + "Steps:\n", + "- Choose the image you want to use. This can come from the Art contests during the course, or from somewhere on the web.\n", + "- Add the image to the directory tutorials/Art/\n", + "- Name the image with the follow format: W#D#_DayName-Artist_Name.(jpg or png)\n", "\n", - "\n" + "You **must** follow the above format exactly! This includes the underscores and dashes. Here is an example: W2D4_DynamicNetworks-Ekaterina_Morozova.jpg\n", + "The beginning of the file name (ie. W2D4_) is used to place the image on the landing page for the right day, and the end (ie. -Ekaterina_Morozova) is used to credit the artist. You can find examples [here](https://github.com/neuromatch/course-content-template/tree/main/tutorials/Art)." ] }, { @@ -128,72 +96,9 @@ "source": [ "---\n", "\n", - "# Section 2: How to create a PR\n", - "\n", - "When creating content you want to add to the course book, you will need to have python and git installed. Afterwards, you will need to create a local python environment with all requirements for your code installed; including jyputer. Before starting to add content, you will need to create a new branch. Instructions [here](https://www.w3schools.com/git/git_branch.asp). \n", - "\n", - "Once you have created your working branch, you can then start to work on your notebook. Before saving your notebook and committing the changes to your branch, restart the kernel and clear all cells. Then you can save it, [add](https://www.w3schools.com/git/git_staging_environment.asp?remote=github) the changes, [commit](https://www.w3schools.com/git/git_commit.asp?remote=github) them, and [push](https://www.w3schools.com/git/git_push_to_remote.asp?remote=github) to github.\n", - "\n", - "**NOTE**: It is vital that you restart the kernel and clear all outputs. The processing scripts will throw an error if you do not, and the workflow will **not** complete successfully.\n", - "\n", - "**Be Careful**: Remeber to pull the lastest changes from github before you commit your work! This is important, a successful workflow execution will create new commits, and if you do not pull the those changes before your commit your local ones, there will be a commit history conflict; i.e you will not be able to push your changes.\n", - "\n", - "\n", - "How to restart kernel and clear all outputs:\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "## Section 2.1: Creating a PR\n", - "\n", - "Once you have pushed the work on your new branch, you can create a PR onto the main branch. **NOTE**: This will trigger the processing workflow for the course content.\n", - "\n", - "Create a pull request:\n", - "\n", - "\n", - "\n", - "\n", - "Process Notebook workflow:\n", - "\n", - "\n", - "\n", - "The process notebook workflow will automatically get triggered once a pull request is made to the main branch. It will create the student, instructor and solutions directories, verify the exercises, and prepare the content for the publish workflow. You do **not** need to create or touch the aforementioned folders. All your work should be done on the jupyter notebooks. Remember to restart the kernel and clear your output, if you do not, the process notebooks workflow will throw an error." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "# Section 3: Folder Structure and Naming Conventions\n", - "\n", - "In order for the workflows and scripts to work correctly, and for your book to properly build, you will need to **strictly** follow our folder heirarchy and naming conventions. This is what the scripts are expecting, and you will not be able to successfully build your course book if you deviate from the conventions. \n", - "\n", - "- book/ (do not touch, this get automatically created/population in the publish workflow)\n", - "- projects/ (TODO: explain this in more depth)\n", - "- tutorials/\n", - " - W#D#\\_DayName/ -> (ie. W1D1\\_InstructionsTemplate; This is strict! You must have the W#D#\\_ prefix followed by the name of the content for that day. The name **cannot** include special characters (i.e \\-, \\_) and must follow the format shown.\n", - " - static/\n", - " - README.md -> (This needs to match exactly!)\n", - " - W#D#\\_DaySummary.ipynb -> (The name needs to match exactly!)\n", - " - W#D#\\_Intro.ipynb -> (The name needs to match exactly!)\n", - " - W#D#\\_Outro.ipynb -> (The name needs to match exactly!)\n", - " - W#D#\\_Tutorial#.ipynb -> (The name needs to match exactly! You can have multiple tutorials for a day as long as you number them sequentially and add the number to the materials.yml file.)\n", - " - further_reading.md -> (The name needs to match exactly!)\n", - " - static/\n", - " - materials.yml\n", - "\n", - "See a working example below:\n", - "\n", + "## Section 2: Adding Module (category) WrapUps\n", "\n", - "To reiterate, you do not need to worry about the student, instructor, or solutions directories. Those are automatically taken care of." + "Module WrapUps are a good way to connect the dots between concepts that were discussed over several days. You can think of new and fun ways to acheive this. In the past we have embedded podcasts about a given topic to help solidify what was taught.\n" ] }, { @@ -202,37 +107,13 @@ "execution": {} }, "source": [ - "## Section 3.1: Cell Tags (markings at the top of the cell)\n", - "\n", - "The workflows and processing scripts actively make use of predefined tags to determine how to process the cell. There are tags for video embeddeing, slide embedding, titles, exercises and solutions, etc. It is very important these instructions are followed **exactly**! Any deviations will break the pipeline. More details about the tags and how to use them can be found in W1D2_Tutorial1.ipynb of the template notebook.\n", - "\n", - "**NOTE**: Please read the details found in the template very carefully. Specifically the section on exercises and solutions. You need to be precise. We have a script to verify exercises that will fail if you deviate from the instructions. For example, the comments in the cells for the exercises and solutions grouping need to be **EXACT**. See below:\n", - "\n", - "Exercise:\n", + "Steps:\n", + "- Decide on the format for your wrap up\n", + "- Add the notebook file to the directory tutorials/Module_WrapUps\n", + "- Give the file the same name as the module (category) with the file extension .ipynb\n", + "Here is an example of the naming convention: CourseContentTemplateInstructions.ipynb\n", "\n", - "def func(ex):\n", - "\n", - " # comments describing the exercises\n", - "\n", - " x = ...\n", - " \n", - " return x\n", - "\n", - "\n", - "Solution:\n", - "\n", - "def func(ex):\n", - "\n", - " # comment describing the exercises\n", - "\n", - " x = ...\n", - " \n", - " return x\n", - "\n", - "\n", - "This will fail because \"comments\" is singular in the comments of the solution cell. These checks are in place to ensure the exercise and corresponding solution cells are appropriately matched and coupled. This comment rule applies to **all** comments in the exercise/solution cells.\n", - "\n", - "The above is not an exhaustive list of the cell tags, it is simply a highlight of something that can go wrong that is easy to miss. Please find the details of all tags [here](https://neuromatch.github.io/course-content-template/tutorials/W1D2_Template/student/W1D2_Tutorial1.html). " + "**Note**: the category name defined in the materials.yml file may have spaces, but the file name for the wrap up must *not*. Simply remove the spaces and concatenate all the word in the category title together, exactly how they are written in the materials file.\n" ] }, { @@ -241,25 +122,10 @@ "execution": {} }, "source": [ - "## Section 3.2: Add Images\n", - "\n", - "Your images should live in the static directories. They can be grouped into the a static directory per day, or can be inside the general static directory for all tutorials. The important thing here is that you correctly link to the proper URL. You can directly add the following html into your markdown cells in order to add images.\n", - "\n", - "\n", - "\\\\\\
\n", - "\n", - "\n", - "Ex:\n", - "\n", - "\\\\\\
\n", - "\n", - "We recommend using .png or .gif file extensions.\n", - "\n", - "**NOTE**: This will not show up in your local development environment until the images are added to the main branch on github. As you can see from the above URL, it is pointing to the main branch of a github repository. If you would like to test it locally, you can use this:\n", - "\n", - "\\\\\\
\n", + "___\n", "\n", - "Remember to change the source back to the github url before pushing your changes!" + "## Section 3: Bonus Tutorials\n", + "\n" ] }, { @@ -270,59 +136,7 @@ "source": [ "---\n", "\n", - "# Section 4: Add Content to the materials.yml File\n", - "\n", - "The materials.yml file is used in our scripts to help verify links, populate the books, and create our table of contents. Be sure to **precisely** follow the structure outlined in the file. If you look at the materials.yml file for this template notebook, you will see the structure laid out in order for this book to properly build. There are comments in the file to further explain all the fields you will need to use. Here is an overview of the structure:\n", - "\n", - "- day: W1D1\n", - " - category: Course Content Template Instructions \n", - " - intro: https://www.youtube.com/watch?v=KxldhMR5PxA\n", - " - intro_bilibili: https://www.bilibili.com/video/BV1HT4y1E7U4/\n", - " - name: Instructions \n", - " - outro: https://www.youtube.com/watch?v=KZQXfQL1SH4\n", - " - outro_bilibili: https://www.bilibili.com/video/BV1vv411i7SG/\n", - " - playlist: https://www.youtube.com/playlist?list=PLkBQOLLbi18ObAiSOZ42YBwOQIKNvspeI\n", - "\n", - " - qa: #insert as many as Q&A video links as needed\n", - " - Insert Q&A video link 1 here \n", - "\n", - " - slides: #insert as many as slides links and titles as needed\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/rbx2a/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Intro\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/6dxwe/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Tutorials\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/jdumz/?direct%26mode=render%26action=download%26mode=render\n", - " - title: DaySummary\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/9hkg2/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Outro\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/2esh5/?direct%26mode=render%26action=download%26mode=render\n", - " - title: Reading\n", - " - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/5vj73/?direct%26mode=render%26action=download%26mode=render\n", - " - title: TA\n", - " - tutorials: 1\n", - " \n", - "Remember to create one grouping of the above content per day and be sure to set the number of tutorials." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "execution": {} - }, - "source": [ - "# Section 5: Workflows\n", - "TODO: look into other workflows, ask spiros and ella\n", - "\n", - "There are two main workflows used to build the notebooks:\n", - "- notebook-pr (automatically triggered when a PR is made onto the main repo)\n", - "- publish-book (this needs to be manually triggered by navigating to the github actions tab. See Below)\n", - "Each workflow involves building python environments and running python scripts on github's servers, and then automatically creating the appropriate commits and pushes on github. The scripts handle notbeook processing, verification and html generation. After the publish-book workflow is complete, it pushes the generated html files into the gh-pages branch (it creates one if it does not exist). This branch is not to be touched and is automatically taken care of for us. All we need to do is change our pages settings under github settings to use the gh-pages branch instead of main. See Below.\n", - "\n", - "Trigger publish-book:\n", - "\n", - "\n", - "Point github pages to the gh-pages branch:\n", - "\n" + "## Section 4: Course Schedule\n" ] }, {