The Jupyter Project

Today, if you use more than one programming language for data science, you probably also use different programs to edit and interact with those programs. R users, for example, often use RStudio, Python users use Spyder, and Julia users use Juno.

But in recent years, an amazing effort has been underway to provide a single set of tools that work with nearly any underlying programming language: Jupyter (as in Ju (Julia) - py (Python) - teR (R)).

The idea of Jupyter is to seperate the interface you are working with from the underlying programming language doing your analysis. This makes it possible to create one interface (a text editor, a window where results are displayed, etc.) that can be used to run your analyses in any number of different programs. In the Jupyter ecosystem, the program being used to actually run your analysis (i.e. Python, R) is referred to as a kernel.

Jupyter was originally focused on unifying Julia, Python, and R, it actually now supports dozens and dozens of different kernels including javascript, Go, Haskell, Matlab, Stata, bash, Scala, and so much more.

(Note: Jupyter Notebooks used to be called IPython Notebooks before they expanded to support more languages, so if you see people talking about IPython Notebooks, just think of that as an early, Python specific version of Jupyter Notebooks).

Jupyter Notebooks

Jupyter notebooks are a tool for easily integrating text, code, and code output into a single document. This not only makes them incredibly useful for instructional materials (this entire site is actually built with Jupyter Notebooks), but also makes them useful as a method of sharing analyses. Using Jupyter Notebooks, you can not only share the conclusions of your analysis with colleagues, but also the code that generated those analyses, making it easy for others to see how you reached your conclusions and, crucially, play with that code to see what happens if the analysis is changed slightly. Indeed, Notebooks are so useful for sharing analyses that they’ve become the de facto standard for sharing information at many companies, including Netflix.

OK, I know, that all sounds really abstract. What makes Jupyter Notebooks special is their interactivity, so it’s hard to understand their value without seeing them in action.

Jupyter Notebook Tutorial

To learn the basics of Jupyter Notebooks, please watch watch this tutorial.

However, obviously this tutorial is being done in the native Jupyter notebooks environment. In this course, however, we’re going to try and focus our attention on a single editor so you have an opportunity to get really good at it: VS Code! Thankfully everything works roughly the same in VS Code as in the native environment, so feel free to follow along with the tutorial in VS Code.