A Quick Guide to Jupyter Notebooks
Jupyter notebooks provide an interactive environment for writing code, viewing results, and experimenting with machine-learning algorithms. Before beginning practical exercises, it is helpful to understand how notebook cells, keyboard shortcuts, and the kernel work.
Understanding Notebook Cells
A notebook usually contains two main types of cells.
Markdown cells
Markdown cells contain formatted content such as:
- Instructions
- Headings
- Explanations
- Mathematical equations
These cells help organize the notebook and describe what each section is intended to do.
Code cells
The long, light-gray blocks are code cells. They contain Python code that can be executed directly.
Some exercises include markers such as:
# START CODE HERE# END CODE HERE
Write your solution between these markers:
# START CODE HEREprint("Hello, world!")# END CODE HERE
Unless the instructions say otherwise, avoid changing the surrounding code because it may contain necessary setup logic or automated checks.
Running a Code Cell
The standard keyboard shortcut for executing the selected cell is:
Shift + Enter
For example, running:
print("Hello, world!")
produces:
Hello, world!
You can also execute a cell through the notebook menu by selecting the cell and choosing Run Cell.
Keyboard shortcuts can vary by operating system or configuration, but Shift + Enter is commonly supported.
Restoring a Markdown Cell
If you double-click an instruction cell, you may see its raw Markdown source:
## ExerciseImplement the function below.
This does not mean anything is broken. Run the cell with Shift + Enter or use Run Cell from the menu. The notebook will render the Markdown as formatted text again.
How the Kernel Works
Notebook code runs inside a process called a kernel. The kernel maintains the current state of the session, including:
- Imported libraries
- Defined variables
- Created functions
- Previously computed results
For example, after executing:
x = 10
another cell can use the stored value:
print(x)
The second cell works because the kernel remembers x.
Restarting the Kernel
The kernel may occasionally stop responding because of:
- A calculation that requires excessive resources
- A long-running or infinite operation
- An inactive session
- A network or server problem
If you receive a message saying that the kernel has died or stopped working, open the Kernel menu and select Restart Kernel.
Restarting clears the current session. All imported libraries, variables, functions, and calculated results stored in memory will be lost.
After restarting:
- Run the import and setup cells again.
- Execute the remaining cells from top to bottom.
- Confirm that the code and test results work correctly.
Always Run the Setup Cells
A notebook may contain several code cells, and later cells often depend on earlier ones.
For example, an initial cell may import NumPy:
import numpy as np
It may also define variables or helper functions needed later. Even if a setup cell does not ask you to add code, you should still execute it.
Otherwise, later code could produce an error such as:
NameError: name 'np' is not defined
The safest approach is to run the notebook sequentially from top to bottom.
Cell Execution Order Matters
Notebook cells can be executed in any order, which can sometimes create confusing results.
Suppose you run:
learning_rate = 0.01
You then edit the cell:
learning_rate = 0.1
Until you execute the edited cell, the kernel continues using the old value of 0.01. Therefore, the code visible on the screen may not always match the values currently stored in memory.
If the results seem inconsistent, restart the kernel and run all cells sequentially.
A Reliable Notebook Workflow
A practical workflow is:
- Read the instructions in the Markdown cell.
- Execute all preceding setup cells.
- Write code inside the designated section.
- Run the cell with
Shift + Enter. - Inspect the output and any provided tests.
- Correct errors and run the cell again.
- Continue through the notebook in order.
- Restart the kernel and rerun everything before finishing.
This supports a fast experimental cycle:\[ \text{Write code} \rightarrow \text{Run it} \rightarrow \text{Inspect the result} \rightarrow \text{Improve the code} \]
Completing Your Work
After implementing the required solutions:
- Run every required cell.
- Check the outputs and automated tests.
- Make sure no unresolved errors remain.
- Preserve required function names and parameters.
- Avoid changing code outside the designated sections.
- Use the provided completion or submission control when finished.
For the most reliable result, restart the kernel and execute the entire notebook from the beginning. This ensures that the code does not depend on outdated or hidden session state.
Common Problems and Solutions
Raw Markdown appears instead of formatted text
Run the cell with Shift + Enter.
A library or variable is undefined
Execute the earlier import and setup cells.
The kernel stops responding
Restart it from the Kernel menu, then rerun the notebook from the top.
The output does not match the visible code
A cell may have been edited without being executed, or the cells may have been run out of order. Restart the kernel and execute them sequentially.
Code fails after restarting
The solution probably depends on hidden state from an earlier experiment. Ensure that every required import, variable, and function is created by the notebook’s cells.
Why Jupyter Notebooks Are Useful
The interactive nature of Jupyter notebooks makes them particularly effective for learning. You can implement a few lines of code, immediately inspect the result, and refine your understanding through experimentation.
This is especially helpful in machine learning because algorithms often become easier to understand once you implement them and observe their behavior directly.
Key Takeaway
Jupyter notebooks combine instructions, executable code, and results in one interactive environment. The most important habits are:
- Write code only in designated sections.
- Use
Shift + Enterto execute cells. - Run setup cells before dependent code.
- Execute cells from top to bottom.
- Restart the kernel if it stops working.
- Rerun the complete notebook from a clean state before finishing.
These practices help prevent state-related errors and make machine-learning exercises easier to implement, test, and debug.
