Table of Contents
Introduction
Executing Python code requires software that is not installed on your computer by default. The Python interpreter is essential, and it is also useful to have a good interactive development environment – an “IDE” – which provides you with a more convenient place to code. There are many solutions to this problem, but ever since I started teaching Python in 2018, I have advised my students to install the Anaconda Distribution (which contains the Python interpreter, an assortment of popular IDEs, and other related software).
Although this has been a good solution for private individuals, it has not been ideal for corporate clients. Because of cybersecurity concerns, large financial institutions restrict employees’ ability to install new software on their machines. When I have taught at such institutions in the past, installing the Anaconda Distribution required special assistance from IT, and even with that assistance, many of my students still encountered problems.
I assumed that this inconvenience was unavoidable and never looked for a solution – at least, not until a few weeks ago. One of our partners gave me a new teaching engagement with a big Japanese bank, and I told her about the software requirement. In response, she asked, “Can we get around this by using a web-based platform?”
Good idea!
Prompted by this question, I set out to find a web-based alternative to the Anaconda Distribution, something that would allow me to teach Python at large financial institutions without requiring employees to install any software on their computers. As I searched, I discovered that a new species of coding software has emerged to meet this need. People refer to this kind of software with different names (e.g. web-based interactive development environments), but the category name that appears to be sticking is “cloud development environment” (or “CDE”).
After surveying many options, I narrowed my list of candidates down to CDEs offered by three companies: Anaconda, Google, and Microsoft. Below, I will explain why I was attracted to each option and how I made my decision.
Anaconda
In June of 2022, Anaconda acquired PythonAnywhere, the maker of a CDE with the same name. After five months of integration, Anaconda introduced the Anaconda Notebooks CDE.
Anaconda Notebooks is a hosted JupyterLab service, which means that it allows users to code in a JupyterLab notebook environment while storing files on Anaconda’s servers and running computations with Anaconda’s processors. As with the Anaconda Distribution, common Python packages are installed by default. In short, Anaconda Notebooks does provide a convenient coding environment with no installations; however, two major problems prevented me from choosing this CDE for my classes.
First, Anaconda imposes a daily limit on users’ use of their processors. After 16 minutes and 40 seconds of fast computation, Anaconda Notebooks slow down dramatically. This daily computational allowance is plenty for basic Python classes, but I was concerned that my students might approach the limit during machine learning classes that require processing large datasets.
Second, although Anaconda makes it easy for users to share their notebooks, I did not see any way to transfer data files from one user to another through Anaconda’s cloud storage system. That means that I would have to email class data files to my students and have them upload those files to Anaconda’s system – and uploading files from a work computer to Anaconda’s servers might raise cybersecurity flags.
So, despite my bias toward Anaconda because of my familiarity with the Anaconda Distribution, I continued my search.
Google Colaboratory (or “Colab”) is a hosted Jupyter Notebook service like Anaconda Notebooks with one major distinction: native integration with Google AI.
My primary response to the recent developments in artificial intelligence has been caution. However, large language models like ChatGPT and Google Gemini are changing the way that people code, and as a programming teacher, I have to address these changes in my instruction. Colab, I thought, might give me everything that I need for my existing classes (including file sharing through Google Drive) while also making it easy to integrate AI in the future.
However, like Anaconda Notebooks, Colab’s computation constraints were concerning. Instead of promising a consistent daily allowance, Google does not publish usage limits and reserves the flexibility to adjust restrictions without notice. That means that my students’ computation speed could plummet in the middle of class for no predictable reason.
This was a deal breaker, so I moved on.
Microsoft
In 2015, Microsoft released a now-popular IDE called VS Code. In 2018, Microsoft acquired GitHub, a collaboration platform for software developers that, among other things, facilitates file sharing. Then, in 2021, GitHub released Codespaces, a new CDE based on VS Code. Essentially, Codespaces is VS Code made accessible through a web browser and integrated with GitHub.
Unlike Anaconda Notebooks and Colab, because Codespaces is based on the VS Code development environment, users are not limited to working in Jupyter Notebooks. However, Codespaces does offer a Jupyter integration, so users have access to the same functionality with more flexibility.
Codespaces provides seven times as much free computation as Anaconda Notebooks, and the limit is calculated by month, not by the day. Whether I am teaching one day of basic Python or three days of machine learning, my students would have 60 hours of processor time at their disposal. Further, thanks to the native integration of GitHub’s file sharing system, my students would be able to access class data files on Codespaces with no downloads or uploads, thus eliminating any possibility of activating corporate cybersecurity alarms.
Similar to Colab, Codespaces offers a native integration with GitHub Copilot, an AI coding assistant based on OpenAI Codex. Unlike Google’s coding assistant, which is available for free, Copilot requires a monthly subscription; however, GitHub is currently providing free access to teachers and students. I remain uneasy about using this technology, but it is nice to have the option to integrate it into my instruction once I determine the right way to do so.
Conclusion
Out of all of the cloud development environments that I surveyed, Codespaces is clearly the best choice for my purposes. In addition to replacing all of the features that I needed from the Anaconda Distribution, Codespaces meets my two biggest needs by providing the most generous allowance of free cloud computation and the best mechanism for sharing data files with my students.