This website allows to track the progress of students running jupyter
notebooks.
It can be useful during exercice sessions or tutorials using notebooks to
know if your audience is following, and if they are able to get to the
expected results.
How it works
Inside your notebooks, you send the data that you want to track using a
"send" function.
On the website, you can see the data that people are sending from their
notebooks as well as aggregated views of this data.
How to use
First, sign up
here.
Under the
sessions tab, create a new session.
Inside your notebooks, paste the following code at the beginning:
import requests
exec(requests.get("https://courdier.pythonanywhere.com/get-send-code").content)
npt_config = {
'session_name': 'your-session-name',
'session_owner': 'your-username',
'sender_name': input("Your name:"),
}
In this cell, you need to provide the name of the session previously
created in place of "your-session-name", as well as your username in place
of "your-username". The student will have to provide a "sender" name that
allows you to know who sent the records.
Then later in the code you can send variables of different types (int,
float, string, numpy array, plot, image, function, class, torch Module)
using the 'send' function that takes as first argument the element to send
and as second argument the question number.
text = "A string"
send(text, 1)
number = 42
send(number, 2)
alist = [42, "42"]
send(alist, 3)
adict = {"answer": 42, "info": ["21+21"]}
send(adict, 4)
import numpy as np
np_array = np.random.randint(0, 10, size=9).reshape(3,3)
send(np_array, 5)
import matplotlib.pyplot as plt
plt.plot(np.arange(10), np.random.rand(10))
plt.title("My plot")
send(plt, 6) # Note: has to be in the same cell as the plot
image = Image.open("path/to/image")
send(image, 7)
def func(a, b):
return a + b
send(func, 8)
class MyClass():
def __init__(self):
super().__init__()
self.L = torch.nn.Linear(2,3)
@classmethod
def test(self, x):
return self.L(x)
def forward(self, x):
return self.L(x)
send(MyClass, 9)
seq = torch.nn.Sequential(
torch.nn.Conv2d(3, 64, 3),
torch.nn.ReLU()
)
send(seq, 10)
All options of npt_config :
npt_config = {
'session_name': '', # The session name chosen on the website
'part_name': 'default', # The part name (Default to 'default')
'session_owner': '', # Your username on the website
'sender_name': '', # Name of the user of the notebook
'log': False, # Log of the sending state
}
Jupyter extension
To help creating your notebooks, a jupyter extension is available. It
allows you to :
- quickly renumber questions
-
define some parts of your notebook as todos and create a new notebook
with this code replaced by a "To Do" text
For more info about how to use it, follow this
link.
You can install it with:
git clone https://github.com/theevann/notebook-progress-tracker.git
cd notebook-progress-tracker
pip3 install jupyter_contrib_nbextensions
jupyter contrib nbextensions install --user
jupyter nbextension install npt-jpt --user
jupyter nbextension enable npt-jpt/main
More information
For more information about the project, please see this
pdf documentation.