1.1. Computing Resources¶
This document mainly contains tips to getting various software tools running on your own computer. This is a community-supported effort and we welcome your contributions. Note that the instructor, TA, and SOE IT team cannot provide technical support for your personal computer. However, the virtual lab (on-campus or VPN-based access) will always contain a supported development environment for those who are having difficulty configuring the necessary software tools or prefer not to configure them.
You’ll find it more convenient working on your own computers, and all tools are cross-platform. So we recommend at least trying to configure the tools yourself.
1.1.1. Git¶
If you have never used Git before, we recommend that you explore some of the Resources to learn Git provided by GitHub.
MacOS and most Linux distributions will have Git pre-installed. So it should just work without any extra effort. On Windows, you will need to install Git. Git for Windows is a good starting point because it is lightweight and native.
Once you’ve set up Git, set up a GitHub account and set up authentication. GitHub has a nice tutorial on this. You can use either HTTPS or SSH for authentication.
If you’re looking for a more thorough tutorial, we recommend Git Immersion. If you prefer a book, we recommend Pro Git by Scott Chacon and Ben Straub.
1.1.2. GitHub Forking and Fork Syncing¶
Once you have a GitHub account set up and access to the course notes, you’ll need to fork the repository to start making contributions. Navigate to the GitHub repository online at https://github.com/uoguelph-engg3130/engg3130 and click the “Fork” button in the upper right corner. After forking, clone your new fork to your local machine.
I recommend using SSH for cloning and repository operations for enhanced security, but HTTPS is also an option. Instructions for both methods are provided below:
1.1.2.1. Cloning with SSH (Recommended)¶
Ensure SSH keys are configured for your GitHub account. If not, set up SSH keys by following the guide at https://docs.github.com/en/authentication/connecting-to-github-with-ssh.
Go to your forked repository on GitHub, click “Code”, select “SSH”, and copy the provided SSH URL.
In your terminal, clone your fork using:
git clone <SSH_URL_of_Your_Fork>
Replace <SSH_URL_of_Your_Fork>
with the actual SSH URL.
1.1.2.2. Cloning with HTTPS¶
Go to your forked repository on GitHub, click “Code”, select “HTTPS”, and copy the provided HTTPS URL.
In your terminal, clone your fork using:
git clone <HTTPS_URL_of_Your_Fork>
Replace <HTTPS_URL_of_Your_Fork>
with the actual HTTPS URL.
1.1.2.3. Setting Upstream for Fork Syncing¶
After cloning, set up an upstream reference to the original repository to keep your fork updated:
Navigate to your local clone:
cd <my_local_fork_repo>
Replace <my_local_fork_repo>
with your local repository’s folder name.
Add an upstream reference using SSH:
git remote add upstream git@github.com:ORIGINAL_ORGANIZATION_NAME/ORIGINAL_REPO_NAME.git
For HTTPS, use:
git remote add upstream https://github.com/ORIGINAL_ORGANIZATION_NAME/ORIGINAL_REPO_NAME.git
Fetch and merge changes from the upstream’s master branch:
git fetch upstream git checkout master git merge upstream/master
This ensures your fork stays synchronized with the original repository.
1.1.3. Python¶
Python is established as a leading choice in scientific computing, and in particular, in modelling. Compared to its competitors (e.g. MATLAB), it’s open-source and free! Thanks to a stable numerical base called NumPy that can take advantage of low-level accelerated libraries like the Intel Math Kernel Library (Intel MKL), one can get C-like speeds but with far less programming overhead than compiled languages.
We’ll be using Python for examples in class, labs, and the final project.
1.1.3.1. Scientific Python¶
The so-called “scientific Python” suite consists of a number of tools, including but not limited to:
NumPy: fundamental package for scientific computing, array data structures and operations
SciPy: various indispensable tools for math, science, and engineering (depends on NumPy)
Matplotlib: easy plotting and visualization, MATLAB-style
IPython: MATLAB-like interactive shell
Jupyter: an open-source web application that allows you to create and share documents that contain live code, equations, visualizations, and narrative text.
Building these libraries on your own is often a hassle, so we recommend using an off-the-shelf distribution. Continuum Analytics’ Anaconda has everything we need (and more) for this class. It’s cross-platform and completely free for academic use. This will be our recommended way of installing Python and the required libraries for the course.
You’ll also need to choose an editor for your Python scripts. We recommend JupyterLab as it is what we will use in the lectures and lab. If you prefer a more traditional IDE, we recommend JetBrains’ PyCharm (you can obtain the “Pro” version free as a student). Microsoft Visual Studio Code is also a popular IDE with good Python support.
The recommended setup procedure is as follows:
Read about Managing environments
Download the YAML environment file which contains dependencies for the course (and examine it in a text editor so you see what’s going on)
Create a new environment based on the YAML file:
conda env create -f environment.yml
Activate your new Python environment:
conda activate engg3130
Start JupyterLab:
jupyter lab
JupyterLab will open automatically in your browser.