This page provides instructions on setting up the compute environment for the course. We provide instructions for the Student Linux Environment and for the Mac. The Student Linux Environment is the canonical environment and the one that we will be using to grade the assignments. Please make sure that all your assignments work there.

Although the software used in the course can scale to large clusters, we will be running the entire stack on a single machine. The assignments are designed so that processing time is not intended to take more than a couple of minutes (if that). If you encounter any divergence from this and are witnessing (much) longer processing times, it is likely that you're not doing something right...

Instructions are provided for the Mac purely for convenience, if you wish to have the entire software stack operating on your laptop or personal machine. Unfortunately, no comparable instructions are available for Windows because we do not have ready access to Windows machines. However, it is likely that the Mac instructions can be adapted to Windows.

We will strive to be helpful, but it is our expectation that you will be able to install and configure all software necessary for this course on your own (with the help of your agent). We provide basic installation instructions here, but the course staff cannot provide detailed technical support and individual hand-holding for everyone due to the number of students and the idiosyncrasies of individual systems.

While the main portions of each assignment are encapsulated in Jupyter notebooks, it is not necessarily the case that they are the most convenient development environment. Different software capabilities can be accessed via JupyterLab, from a shell (terminal), from VS Code, etc. There is also the option of accessing a remote server from a local machine, for example, using VS Code's Remote SSH extension. Add to that the different ways in which coding agents can be accessed — through an app, the CLI, or in a VS Code extension, etc. — there are myriad possible workflows.

Workflows are highly personal, and what works for us might not work for you. We will try to show you the possibilities, but will not prescribe a specific approach. It's up to you to figure out what works for you. Experiment! Feel free to use Piazza to discuss and share tips. Remember, though, to follow the submission instructions for each assignment. No matter your personal workflow, the assignments need to be delivered according to the specifications laid out in each assignment text.