---
# System prepended metadata

title: Week 1

---

# Week 1

This week we will focus on setting up the tools necessary to build our projects. I assume you are using Mac or Linux (eg Ubuntu).
# Setting things up
Download these apps:
* https://www.sublimetext.com


You might need additional help for the following steps. Google and StackOverflow are your best friends. Let me know any time you get stuck on something.

## Get comfortable with the terminal
You should learn the following commands at the very least:
```
* sudo
* cd
* pwd
* ls
* cp
* mv
* du
* nano
```
All these commands have various flags too (eg notice the difference between ```ls``` and ```ls -l```)
You can get help for any of these commands by typing ```man <command>``` (eg ```man cd```) in the terminal.
Again, look up on google and stackoverflow too. Knowing how to look up technical problems online is also an important skill.

## Install homebrew
https://brew.sh

Just run the following command in the terminal:
```/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"```

Homebrew is an easier way to install commandline apps and programming frameworks. Look at the webpage to see what homebrew does.

## Install Anaconda
Anaconda is a framework to handle python packages. We will be using it to install python, jupyter and machine learning libraries too. 

https://www.anaconda.com/distribution/

Install the python 3.7 version.


To check if everything is working correctly, open a terminal and run ```python```.
It should say something like 
```<Stuff stuff stuff> :: Anaconda, Inc. on darwin```

You can install libraries now. Install the following libraries:
* Jupyter-lab, a more powerful version of Jupyter: https://anaconda.org/conda-forge/jupyterlab
Run ```conda install -c conda-forge jupyterlab```
* Seaborn, a pretty graphing library: https://anaconda.org/anaconda/seaborn
Run ```conda install -c anaconda seaborn ```



## Set up Github
Github will be used to version control our projects and will also serve as a public portfolio for your code. This week you will set up a github account online, add your laptop to that account and add your first project (your Mathematica project if you are comfortable) to it.

* Make an account on https://github.com .
*  Set up an ssh key on your laptop: https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
*  Add your key to your github account: https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-account

* Make your first repo: https://help.github.com/en/articles/create-a-repo
* Go to your mathematica project directory and add it to your repo: https://help.github.com/en/articles/adding-an-existing-project-to-github-using-the-command-line

My profile as an example: https://github.com/karanprime

# Learning Python
Feel free to skip any parts that you are comfortable with.
## Jupyter notebooks
Try making some notebooks and writing simple code. 
https://www.dataquest.io/blog/jupyter-notebook-tutorial/
(skip the part about installing jupyter, it was already installed with anaconda.)
## Numpy
If you are not familiar with numpy, take a look at this tutorial. 
https://cs231n.github.io/python-numpy-tutorial/
You can also download it as a notebook here: https://github.com/kuleshov/cs228-material/blob/master/tutorials/python/cs228-python-tutorial.ipynb

I would suggest you use the notebook because you will have to use github, jupyter and numpy to get it working. 

## Start playing around with PyTorch
PyTorch (https://pytorch.org) is the most popular machine learning framework right now.
Install it by running: ```conda install pytorch torchvision -c pytorch```
Try watching this video: https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html

**Optional Challenge**: See if you can train a simple neural network on the MNIST data set using pytorch. I want you to look up how to do that. Don't spend a lot of time on it if you get stuck. We will work on it together later. Here's a super simplified mathematica version: https://www.wolfram.com/mathematica/new-in-10/highly-automated-machine-learning/create-a-handwritten-digit-recognizer.html. Try doing it in pytorch.


# Putting it all together
By the end of this time period (whatever we decide on messages), you should have the following deliverables:
* A github repo with your wolfram summer camp project
* A github repo with a notebook in which you import pytorch (only import) and make two numpy matrices A and B each of size 100x100 and consisting of random numbers. Then print C = dot product of A and B, and D = the matrix multiplication of A and B.
* If you try the optional challenge, put that code in the second repo too.

This might seem like a lot of moving parts that are not related to each other. Everything will start getting clearer as we make more progress on our projects.

All these steps will add up exponentially, and you will be a 
![](https://media.giphy.com/media/QbumCX9HFFDQA/giphy-downsized.gif)
in no time!