How a Machine Learning course is taught at Cambridge University
Offering students a way to work on assignments easily
The SF3 Machine Learning course is a short and intensive laboratory course for 3rd year engineers, accounting for 50% of the students’ course load during that time. The students code up their own ML algorithms to achieve solutions of a set milestones, and submit a 15-20 page report. The challenge for us was setting up an environment where students can complete the technical parts.
Gabor tried a few setups for his class before, such as having students use their own development environment on their laptops, a hosted environment on Azure, or managing JupyterHub on departmental servers. None of these worked particularly well:
There were always students with obscure problems when trying to install development environments and helping them remotely was extremely time consuming.
Azure is a great cloud provider, but could provide no support for some more specific needs. The virtual machines crashed frequently.
The difficulty of setting up and maintaining a JupyterHub installation for a large number of students has proven to be unaffordable for the department.
machine learning, reinforcement learning, setting assignments, collaboration between students and the professor
Professor Gabor Csanyi
Gabor’s expertise is in atomistic simulation, particularly in multi scale modelling that couples quantum mechanics to larger length scales. He is currently engaged in applying machine learning techniques to modelling materials and molecules. 
Deepnote is a new kind of data science notebook, which is very easy to set up. When Gabor created an assignment, the students could duplicate it with a single click, and start working right away. The duplicated project did not only contain the Jupyter notebook and other code, but the entire execution environment with all requirements, ready to run. This ensured that no students had trouble setting up, and they could focus on the problem at hand.
Collaborative by default
Sometimes help is needed nonetheless. With tools aimed at individual productivity, the workflow to get help is usually an email with a screenshot, copy-paste or an attachment, and response with typed instructions with some back-and-forth in between. Modern tools have much better interfaces. A shared URL lets the teacher inside the project, open a terminal, and provide help efficiently. They can fix the problem completely, or just leave comments with advice.
Debugging made easy
As variables can be inspected and quick tests can be run by the teacher, he or she can much more effectively direct the student to learn to debug their own code. Even the debugging effort (because it is visible to the teacher in real time) can be debugged!
Deepnote provided me with a completely new teaching interface for when students are stuck.
When students shared a project with Gabor, they interacted with the same execution environment
... and saw what the others were doing in real time. This not only cut down on the time and effort required to help the students along, but allowed a more nuanced approach.
Supporting this class piloted the cooperation between Deepnote and Cambridge. We are excited to keep building this partnership and look forward to supporting more departments, professors and students.
Join the world's best data teams and get started with Deepnote
No credit card required. Run your first notebook in seconds.