Setup ===== Services -------- Google Classroom ~~~~~~~~~~~~~~~~ The course will be run at least partly through `Google Classroom `_. You should have received a welcome message sent to your go.olemiss.edu email address. Please accept the invitation to join the class (Phys 540 Spring 2026) by clicking on the enclosed link. You may find it convenient to download the Classroom app on your phone's app store. This is the best way for us all to communicate between class meetings. Feel free to post questions or to start discussions at any time. I encourage you to respond to other students comments, so we can all learn from each other and crowd-source our problems. We will meet in-person in Lewis 103A (every T/Th from 11:00--12:15), but I will also stream our classroom sessions live over Zoom. Recorded videos will be made available in a shared folder. Bitbucket ~~~~~~~~~ We may occassionally use Google Classroom's assignment submission/upload feature, but generally I will ask you to turn in code by creating a git repository on Bitbucket (a cloud-based git repository service) and granting me permission to view it. Be sure to sign up for a free account on `Bitbucket `_. And please do so using your university (@go.olemiss.edu) email address. Accounts ending in .edu are treated as special educational accounts. To work seamlessly, you should provide Bitbucket with a unique ssh key that you have generated. .. code-block:: bash # make sure you have ssh installed $ ssh -v # check that you have a hidden ssh directory $ ls -a ~/.ssh # if not, make one $ mkdir ~/.ssh # generate a new key $ ssh-keygen -C "A descriptive name of your machine" $ ls -a ~/.ssh ./ ../ id_rsa id_rsa.pub $ ssh-add ~/.ssh/id_rsa $ ssh-add -K #the -K is only necessary on macos # enter a passphrase when prompted # on macos, activate the Keychain, but otherwise skip this step $ pico ~/.ssh/config Host * UseKeychain yes # configure git $ git config --global user.name "FirstName LastName" $ git config --global user.email "EmailAddress" $ cat ~/.ssh/id_rsa.pub # on macos, use pbcopy to copy your key to the clipboard $ pbcopy < ~/.ssh/id_rsa.pub # otherwise, display the key and select and copy it manually $ cat ~/.ssh/id_rsa.pub Log into Bitbucket. Click on the *Settings* gear in the top right corner (one icon to the left of the *Your profile* button). From the menu, select the *Personal Bitbucket settings* item. From the bar on the left, under the **Security** heading, naviagte to *SSH Keys*. Click on the *Add key* button. Use ``command-v`` or ``ctrl-v`` to paste your key into the *SSH Public Key* text box. Click *Add key* in the bottom right of the window. System ------ Hardware ~~~~~~~~ You will need a computer with a reliable internet connection running Windows 10 or some flavour of Unix (GNU/Linux, FreeBSD, macOS, ...). If access to a computer is an issue, please talk to me soon. The department may be able to find a loaner laptop. GNU/Linux ~~~~~~~~~ GNU/Linux comes in many flavours, most of them descended from one of `Debian `_, `Arch `_, or `Fedora `_. I'll assume in these instructions that you use a Debian-based distribution (such as Ubuntu, Pop!_OS, Elementary OS, ...) and rely on the Advanced Package Tool (APT) to install software. If you're using something else, you'll have to modify the steps accordingly. Start by making sure that ``apt`` and its package lists are up-to-date. Add the basic developer tools and the `llvm `_ compiler toolchain. Add whatever other software or libraries you might need. .. code-block:: bash $ sudo apt update $ sudo apt install build-essential xz-utils curl git $ sudo apt install llvm clang $ sudo apt install gnuplot imagemagick python3 If any of those packages are already installed, replace ``install`` with ``upgrade``. macOS ~~~~~ macOS is based on BSD Unix, and it supports most of the standard command line tools. The system includes a good terminal emulator, ``Terminal.app``, but you may want to download `iTerm2 `_, which is better still. For many years, the default shell on macOS was BASH. As of 10.15 Catalina, Apple is pushing users to switch to Z Shell. There are other good options, especially `fish `_. The compiler and developer tools are no longer installed automatically as part of the OS. You have to do that manually. .. code-block:: bash $ xcode-select --install For most other software you'll want to install with `homebrew `_. Set up homebrew by running its ``install.sh`` script. .. code-block:: bash $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" Make sure everything is up-to-date: .. code-block:: bash $ brew update $ brew doctor $ brew upgrade Then start downloading the software you need. .. code-block:: bash $ brew install git $ brew install gnuplot $ brew install imagemagick $ brew install python3 Note that macOS already comes with ``git`` and ``python``, but the versions installed are only current from the release date of the OS, and they tend to get stale quickly. Homebrew will add new package in ``/usr/local/Cellar`` and symlink to them from ``/usr/local/bin``. Windows ~~~~~~~ It's possible to do all the course work under Windows 10, provided that you install the `Windows Subsystem for Linux (WSL) `_. These `instructions `_ explain how to install WSL2 and how to obtain a Linux image from the Microsoft Store. Windows also now supports installation of the WSL via a `single command in PowerShell `_. There is some useful additional information `here `_, including instructions on how to `Run Graphical Applications `_ Languages --------- Mathematica ~~~~~~~~~~~ The University of Mississippi has a site licence for `Wolfram Mathematica `_ (currently version 14.3), which is a symbolic computation engine and scientific computing environment. The licence permits students, staff, and faculty to install one copy of the software on any of their personal computers. Please follows these steps: #. Login to `my.olemiss.edu `_. #. Search for “Research Software” and click on “Mathematica.” #. Note the site licence number L3xxx-xxx at the top of the “Mathematica Download Page.” #. Open the instructions for your operating system (Mac, Windows, or Linux). #. Click on the `Wolfram Portal link `_ and create a user. Be sure to register with your university email (webid@go.olemiss.edu). #. Check your email account for an email from Wolfram with an email validation link. Look in your spam folder if you don’t see it. #. Then navigate to the Wolfram Activation Key Request Form. #. Fill out that form and wait on a reponse email. #. Follow the link in the email to download Mathematica. #. Run the Wolfram app and input the licence key. C++ ~~~ There should be a C/C++ compiler installed on your system. Check that it's there. .. code-block:: bash $ g++ --version Apple clang version 15.0.0 (clang-1500.3.9.4) Target: arm64-apple-darwin23.5.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin $ clang++ --version Apple clang version 15.0.0 (clang-1500.3.9.4) Target: arm64-apple-darwin23.5.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin Julia ~~~~~ The team behind `Julia `_ distributes their own binaries. Download them `here `_ and follow these `platform-specific instructions `_. Python ~~~~~~ It's best to install Python with your package manager: e.g., either .. code-block:: bash $ brew install python3 or .. code-block:: bash $ apt install python3 You may be interested in tinkering with `Jupyter `_ or `IPython `_. .. code-block:: bash $ brew install jupyterlab $ brew install ipython Rust ~~~~ `rustup `_ is the best way to get Rust onto your system. If you're on Windows, download the ``rusup-init.exe`` installer. Otherwise, following the instructions provided, just type the following at the terminal. .. code-block:: bash $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Editors and IDEs ---------------- For simplicity, generality, and portability, the coding I demonstrate in class will be done entirely within the terminal environment using common text-based tools—such as ``vi`` (``vim``, ``nvim``), ``emacs``, or ``pico`` (``nano``). In everyday life, though, most of you will prefer working with a more modern editor that plays nicely with your operating system's windowing environment. On macOS, I often use `TextMate `_, which is very light-weight and gets out of the way. But there are many good editors to choose from. Some favourites are `Sublime Text `_, `Zed `_, `Atom `_, and `Brackets `_, all of which are available for macOS, Windows, and Linux. Some coders prefer a more full-featured Integrated Development Environment (IDE); `Visual Studio Code `_ has the advantage of being well-supported and free.