This repository contains optional Jupyter resources for an entry-level (licence/bachelor) Object-Oriented Programming course using Java for examples and lab works, held at French engineering school INSA Rennes. Class being taught in French, I'm afraid foreign people stumbling upon this repository might not find the course content very useful – nethertheless, you may be interested in recycling code samples for your own Jupyter notebooks.
The rest of this readme is mainly intended for fellow teachers. If you're a student that somehow found its way here: 👋
Project Jupyter is a nonprofit organization providing libre software under BSD licensing. In particular, Jupyter Notebook and its successor JupyterLab are web-based environments allowing mixing of both regular content and code execution sandboxes in documents called "notebooks".
These code snippets are very powerful for education content: teachers can prepare code samples that students may execute on the fly, directly from the course handout, rather than the older alternative of copy/pasting samples into a separate IDE. Even better: students may edit code samples and re-execute to see the result immediately, which enables teachers to prepare ad-hoc fill-in-the-blank exercises.
Project Jupyter also maintains the Binder Project and notably mybinder.org, a web application allowing zero-configuration Jupyter Notebook and JupyterLab environment instantiation from a public Git repository (provided the repository itself is correctly configured).
With the help of binders, teachers just have to share a binder link with their students, and then students can work on their private copy of teacher-prepared Jupyter notebooks.
As an example, you may launch a binder instance for this repository by clicking on either of these badges (the link I'm sharing with my students is the JupyterLab one):
Jupyter applications use Jupyter kernels to execute code snippets. Project Jupyter maintains the IPython kernel, but many other kernels exist, one of them being IJava.
This repository uses a Dockerfile
as binder instantiation configuration in order to setup an IJava kernel for use by Jupyter applications.
All notebooks are stored in the notebooks
directory, which contents are the only files exposed to students from binder instances.
The easiest way is to fork this repo and submit pull requests. To work on and expand the Jupyter notebooks, I would suggest setting up a local Jupyter instance and editing notebooks from there.
The process roughly looks like this:
- Install JupyterLab.
- Install IJava (JDK 9+ required).
- Start JupyterLab inside the repository.
For example, in my case:
# Install JupyterLab
pip install jupyterlab
# Install IJava
curl -L https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip > ijava-kernel.zip
unzip ijava-kernel.zip -d ijava-kernel
cd ijava-kernel
python install.py --sys-prefix
# Start JupyterLab inside the repository
cd path/to/Java2STPI
jupyter lab