{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <p style=\"text-align: right;\"> &#9989; Put your name here</p>\n",
    "#### <p style=\"text-align: right;\"> &#9989; Put your group member names here</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Day 08 Pre-Class Assignment: Git Introduction\n",
    "\n",
    "<img src=\"https://git-scm.com/images/logos/downloads/Git-Logo-2Color.png\" width=400px>\n",
    "* This assignment is based off content created by Dr. Dirk Colbry"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Goals for today's pre-class assignment \n",
    "\n",
    "0. Setting up a GitHub account \n",
    "1. Learn the basics of Git for version control and repository management.\n",
    "2. Understand how to push and pull changes in a remote Git repository.\n",
    "3. Make sure that everyone has set up their GitHub \"turn in\" repository for future assignments.\n",
    "\n",
    "## Assignment instructions\n",
    "**This assignment is due before the start of the synchrounus section of class** and should be uploaded into the appropriate \"Pre-class assignments\" submission folder in the Desire2Learn website.\n",
    "\n",
    "---\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 0: Setting up a GitHub account\n",
    "\n",
    "You need to set up an account on [GitHub](https://github.com/). Go to [https://github.com/](https://github.com/) and sign up for an account **using your \"@msu.edu\" email address**. Please make your username matches your MSU NETID as much as possible. It is also important that you sign up using your \"@msu.edu\" account so that you can get the *Student Pack*, which gives you special access to software and unlimited private repositories. The student pack can be found [here](https://education.github.com/pack). **You are expected to request access to the Student Pack before you come to class.** Once you have a GitHub account, the instructors will be able to give you access to the course GitHub repository, which will serve as the mechanism for distributing assignments once you learn how to use Git.\n",
    "\n",
    "*Note: After creating this account and starting on the videos below, you may notice that you will need to log into your github account. There should be prompts that come up when first trying to use `git`. However, if they do not pop-up, you will need to add your account information manually. You can do this by the commands found below*\n",
    "> ```\n",
    "git config --global user.name \"Your name here\"\n",
    "git config --global user.email \"your_email@example.com\"\n",
    "  ```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 1: Getting to Know Git\n",
    "`Git` is a version control system that is used by programmers all over the world. If you want to use programming then you should learn how to use `git`. What we learn in class is the first steps in learning `git`. It is a complex tool with with a lot of functionality. We will present commands based only on what you need to do to use `git` in this course. The three basic categories of `git` are:\n",
    "\n",
    "1. Consumer of files (the class files)\n",
    "2. Producers of files (your files)\n",
    "3. Collaborators to files (code reviews) **--** *We will not reach this point in this course, but if you are intersted we can provide links to this content*\n",
    "\n",
    "**Video:** Watch the following video for a brief overview of git and this tutorial:  \n",
    "*Note: You do not need to watch all of this video. The video will end automatically.* "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "end=int(timedelta(hours=0, minutes=3, seconds=14).total_seconds())\n",
    "YouTubeVideo(\"HuQFjov9CQI\",width=640,height=360,end=end)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 2: Cloning a repository (Consumer)\n",
    "Most people's introduction to `git` is when the come across some software on github.com they want to download. Downloading a `git` repository is called cloning. The following video will go over the basics of `git` cloning. You do not have to follow along with the video, but pay attention to what is being done:   \n",
    "*Note: You do not need to watch all of this video. The video will end automatically.* "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "end=int(timedelta(hours=0, minutes=4, seconds=46).total_seconds())\n",
    "YouTubeVideo(\"sNcxGBk2W78\",width=640,height=360,end=end)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  \n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`  *(Note the \\` (tilda) at the beginning and end of each command, this is most likely located to the left of the `1` key on your keyboard)*\n",
    "* `git --version` == \n",
    "* `git clone [INSERT_URL_HERE]` == \n",
    "* `cd [NAME_OF_FOLDER_CREATED]` == \n",
    "* `ls` == \n",
    "* `jupyter notebook` == "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " **Try this**: Let's try to clone our own repsitory now. Follow this link (https://gitlab.msu.edu/CMSE/Jupyter-Examples.git) and try to clone this repository yourself. Make sure to put the repository in the `~/CMSE202/repos` directory. If for whatever reason you do not already have this directory create it.\n",
    " \n",
    "**Question:** Were you able to clone the repository successfuly?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " <font size=8 color=\"#009600\">&#9998;</font> Do This - Erase this first line of this cell and comment on whether you got this to work. (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Video:** One of the more powerful abilites of `git`. This is the ability to travel back in time in a repostiory to a previous version of the repository. You do not have to follow along with the video, but pay attention to what is being done:  \n",
    "*Note: You do not need to watch all of this video. The video will start automatically where it needs to.* "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "start=int(timedelta(hours=0, minutes=1, seconds=5).total_seconds())\n",
    "YouTubeVideo(\"ZZRRcFdyO_g\",width=640,height=360,start=start)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "***Note*** *: In the video it refers to `commit`s when running the command `git log`. In `git`, a `commit` is what is done to update the repository from its previous state to its current state (we will cover more of this later). So you can think of each `commit` is a snapshot of the repository at different moments in time.*\n",
    "\n",
    "\n",
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  \n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`\n",
    "* `git status` ==\n",
    "* `git log` == \n",
    "* `git checkout [HASH]` == \n",
    "* `git checkout master` =="
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "***Note*** *: When using `git log` this opens up the log in what is known as a \"pager\". In order to see more of the log you will need to press the `Enter` button. Also to get out of the `git log` pager you can press `q` and that will bring you back to the terminal.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " **Try this**: If you managed to clone the repository above. Try running `git log` and copy the last `commit-hash` (AKA the text in yellow in the video.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question:** Were you successful? If so, paste your `commit-hash` here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " <font size=8 color=\"#009600\">&#9998;</font> Do This - Erase this first line of this cell and comment on whether you were successful and if you were paste the commit-hash as well. (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 3: Cleaning/Updating a cloned repository (Consumer)\n",
    "It may be possible that the developer has made some changes to the repository and posted them on their git website. You can use the `git pull` command to pull in the changes to your repository. The following video will go over what and how to pull changes to your repository."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "YouTubeVideo(\"rRRNUUyxJ_I\",width=640,height=360)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  \n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`\n",
    "* `git pull` == \n",
    "* `git checkout [FILENAME]` == \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Summary**:\n",
    "\n",
    "Problems can occur if both you and the developer make changes to the same file. git is smart and can figure out how to automatically \"merge\" many changes but if there is a conflict you may have to figure out what to do. The easiest thing you can do is:  \n",
    "1. Delete your changes  \n",
    "2. Rename your files (effectively getting rid of your changes)  \n",
    "3. Add/commit your changes (This one is advanced and will be covered later)  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Video:** This next video covers more in-depth the ways to resolve the merge conflicts. You do not have to follow along with the video, but pay attention to what is being done as you will use this in-class.   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "YouTubeVideo(\"bLHxdHKv1_c\",width=640,height=360)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  \n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`\n",
    "* `pwd` ==\n",
    "* `git fetch origin` == \n",
    "* `git checkout [FILENAME]` == \n",
    "* `git status` == \n",
    "* `cp [FILENAME] [NEW_FILENAME]` == \n",
    "* `git diff [FILENAME]` == \n",
    "* (For clearing out outputs in a .ipynb ) *You do not have to copy this section*\n",
    "    * (Open file that is in question) \n",
    "    * (Go to KERNEL -> RESTART, then click \"Restart and Clear All Outputs\")\n",
    "    * (Save file and exit browser, and ctrl-c in terminal to stop server)\n",
    "* `clear` == \n",
    "* `rm [FILENAME]` == \n",
    "* `git pull` == "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Summary**:\n",
    "\n",
    "First, check to see what files are in conflict by running the `git status` command\n",
    " \n",
    "You can look at the changes you made by running the `git diff [FILENAME]` command. This should show you what you added (Lines with a + before them) and what you deleted (lines with a - before them)\n",
    "\n",
    "Once you have determined what you want to keep, make a copy of the file with a different name and then move on to the next step `cp [FILENAME] [NEW_FILENAME]`.\n",
    "\n",
    "You can also reset (overwrite) all of the changes to your local files by \"checking out\" the original file. The `git checkout [FILENAME]` command gets a copy of the file file before your changes were made and overrides your changes.\n",
    "\n",
    "Once all of the conflicts have been removed you can then go back and pull in the changes from the developer via `git pull`\n",
    "\n",
    "**Video:** This next video explains why using `git diff` on a ipython notebook that does not have its cells cleared produces a hard to read `git diff`. You do not have to follow along with the video, but pay attention to what is being done:  \n",
    "*Note: You do not need to watch all of this video. The video will start automatically start and stop where it needs to.* "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "start=int(timedelta(hours=0, minutes=3, seconds=19).total_seconds())\n",
    "end=int(timedelta(hours=0, minutes=8, seconds=8).total_seconds())\n",
    "YouTubeVideo(\"79hW_TzLos8\",width=640,height=360,start=start,end=end)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  \n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`\n",
    "* `git diff [FILENAME]` == \n",
    "* `cat [FILENEAME]` == \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Summary**:\n",
    "\n",
    "Jupyter notebooks can be tricky to merge since it is in a JSON file format that gets changed each time you run the file which causes `git` to think you changed the file.\n",
    "\n",
    " **Try this**: Navigate to a folder in your terminal where you have a `.ipynb` file (If you are still in the `Jupyter-Examples` folder this works well). Then try the command `cat [FILENAME.ipynb]`. Notice the format of this file.\n",
    " \n",
    " **Question**: Were you able to try the following above?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " <font size=8 color=\"#009600\">&#9998;</font> Do This - Erase this first line of this cell and comment on whether you were successful. (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 4: Making your own repository (Producer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that you have learned how to be a consumer of `git` material, we can begin to talk about how to become a producer. The following video will cover the basics of starting your own `git` repository. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "YouTubeVideo(\"IAAv4DjYYUA\",width=640,height=360)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  \n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`\n",
    "* `git init .` == \n",
    "* `git add [FILENAME]` == \n",
    "* `git commit -m \"[COMMIT_MESSAGE]\"` == \n",
    "* `git status` == "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Summary**: \n",
    "\n",
    "When it comes to creating your own repsitory, it is possible to use the commands above all on their own. However, to make matters easier, the most straight forward way to do this is by utilizing sites like github and gitlab. This course will utilize this method over the above.\n",
    "\n",
    "**Video:** The following will cover how to use github to create a repository and how to setup the repository on your local computer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "YouTubeVideo(\"dpeHlFm8SYU\",width=640,height=360)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  \n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`\n",
    "* `git clone [INSERT_URL]` == \n",
    "* `cd [NEW_CLONED_FOLDER]` == \n",
    "* `ls` == \n",
    "* `ls -lah` == \n",
    "* `cat [FILENAME]` == "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " **Try This:**   \n",
    "* Using [github](https://github.com/), create a new repository called `cmse202-f20-turnin` (Make sure to make it this name exactly). \n",
    "* Set the repository to `Private`  \n",
    "* Click on the checkbox to `Initialize this repository with a README`   \n",
    "* Set the `Add .gitignore` to `Python`\n",
    "* Leave the `Add a license` set to `None`  \n",
    "* Make sure you navigate back to your home directory (`cd ~`).\n",
    "* Navigate to inside the `CMSE202/repos` folder (`cd ~/CMSE202/repos`)\n",
    "* Using `git clone` clone the repository you just made on github onto your local computer\n",
    "* Navigate to inside that folder (`cd cmse202-f20-turnin`)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question:** Were you successful? If not, make sure to let your LA/TA/Instructor know in-class tomorrow and type below where you ran into trouble."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " <font size=8 color=\"#009600\">&#9998;</font> Do This - Erase this first line of this cell and comment on whether you were successful and if you were not, where you ran into troubles. (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 5: Updating your Repository (Producer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that you have created a repository you want to get good at adding files to this repository and committing changes. It is important that modifications are committed early and often so that git can do what it does well and track your files. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import YouTubeVideo\n",
    "from datetime import timedelta\n",
    "YouTubeVideo(\"GTM-h5xX2Lk\",width=640,height=360)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question**: For each bullet point below, retype the command on the same bullet point, right next to the command. These are all the commands used in this video"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - For each bullet point retype the command.  *Note: The comments* '--> *do not to be copied*\n",
    "\n",
    "* **Example** : `jupyter notebook` == `jupyter notebook`\n",
    "* `git add [FILENAME]` == \n",
    "* `git reset` == \n",
    "* `git commit -m \"[COMMIT_MESSAGE]\"` == \n",
    "* `git log` == \n",
    "* `cat > [FILENAME]` ==  \n",
    "    '--> (Shortcut way of creating new file and adding text to it)  \n",
    "* `python [FILENAME.py]` ==   \n",
    "    '-->  (Runs python script (`.py`) in terminal)  \n",
    "* `pytest [FILENAME.py]` ==   \n",
    "    '-->  (Runs pytest program that tests the python script and displays findings in terminal)  \n",
    "* `cd -` ==   \n",
    "    '-->  (Moves back to previous directory you just came from and prints that directories name)  \n",
    "* `vi [FILENAME]` ==   \n",
    "    '-->  (Opens file in `Vim` text editor)  \n",
    "* `[FILENAME].swp` ==   \n",
    "    '-->  (\"Swap\" file created by Vim because it was not properly saved before being quit)  \n",
    "* `git add [FOLDERNAME]/[FILENAME]` ==   \n",
    "    '-->  (You can add files that are inside of other folders)  \n",
    "* `git push` == \n",
    "* `git status` == "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Summary**:  \n",
    "\n",
    "Committing files is a two step process.\n",
    "1. First you want to use the `git add [FILENAME]` command to add new files or files you have changed to your \"cart\".\n",
    "2. Once all of the files have been added to your \"cart\" you can commit them by using the `git commit -m \"[COMMIT_MESSAGE]\"` command. In this case the `\"[COMMIT_MESSAGE]\"` is a note describing what you did. It is important that the note is a good description so you can find it later if you need it.\n",
    "\n",
    "Once you have committed your changes you may also want to issue a `git push` to push your changes up to the centralized repository (github or gitlab) as a safe backup and to share with your collaborators."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Try This:**   \n",
    "* Save this notebook and copy and move it to the folder you are now in in your terminal (this should be `~/CMSE202/repos/cmse202-f20-turnin`). You can use your file explorer to do this. (If you are having trouble with this, we highly recommend referring to the start-up guides optional sections if you need help using your file explorer and terminal together)\n",
    "* Using the commands you have learned add, commit, and push this file to your repository.\n",
    "* Check your Github repository on Github.com and see if you can see your recently added file.\n",
    "\n",
    "**Question:** Were you successful? If not, make sure to let your LA/TA/Instructor know in-class tomorrow and type below where you ran into trouble."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " <font size=8 color=\"#009600\">&#9998;</font> Do This - Erase this first line of this cell and comment on whether you were successful and if you were not, where you ran into troubles. (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----\n",
    "# Assignment wrap-up\n",
    "\n",
    "Please fill out the form that appears when you run the code below.  **You must completely fill this out in order to receive credit for the assignment!**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import HTML\n",
    "HTML(\n",
    "\"\"\"\n",
    "<iframe \n",
    "\tsrc=\"https://cmse.msu.edu/cmse202-pc-survey\" \n",
    "\twidth=\"800px\" \n",
    "\theight=\"600px\" \n",
    "\tframeborder=\"0\" \n",
    "\tmarginheight=\"0\" \n",
    "\tmarginwidth=\"0\">\n",
    "\tLoading...\n",
    "</iframe>\n",
    "\"\"\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---------\n",
    "### Congratulations, you're done with your pre-class assignment!\n",
    "\n",
    "Now, you just need to submit this assignment by uploading it to the course <a href=\"https://d2l.msu.edu/\">Desire2Learn</a> web page for today's submission folder (Don't forget to add your name in the first cell)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&#169; Copyright 2020,  Michigan State University Board of Trustees."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
