\subsection{Introduction}\label{introduction}

Jupyter Notebooks are often used for data science and scientific
computing such as machine learning as the interactive design allow you
to experiment easily with your code. For our purpose, we will use
Notebooks as it's a useful tool to learn how to code as well as writing
reports.

\emph{Note on the difference between Notebook and Lab: Jupyter Notebook
offers a simplified, lightweight notebook authoring experience, where
as, JupyterLab offers a feature-rich, tabbed multi-notebook editing
environment with additional tools like a customizable interface layout
and system console}

\subsection{Setup and Installation}\label{setup-and-installation}

Installing with Conda using CLI: - \texttt{conda\ install\ jupyter}
Jupyter can also be installed using a Anaconda Navigator

\begin{verbatim}
- Launching:
    - From terminal: `jupyter notebook` or `jupyter lab`
    - From Anaconda Navigator or VSCode
- Navigating the interface:
    - Tabs and file browser
    - Kernel and terminals
\end{verbatim}

\subsection{Notebook Basics}\label{notebook-basics}

\begin{itemize}
\tightlist
\item
  Creating a new notebook (\texttt{.ipynb})
\item
  Types of cells:

  \begin{itemize}
  \tightlist
  \item
    Code
  \item
    Markdown
  \item
    Raw
  \end{itemize}
\item
  Running a cell: \texttt{Shift\ +\ Enter}
\item
  Adding/removing cells
\item
  Restarting the kernel
\item
  Saving and auto-checkpoints
\end{itemize}

\subsection{Writing and Running Code}\label{writing-and-running-code}

\begin{itemize}
\tightlist
\item
  Python syntax: - \texttt{print("Hello,\ world!")} - Variables and
  functions - Loops and conditionals
\item
  Importing libraries: - \texttt{import\ numpy\ as\ np} -
  \texttt{import\ pandas\ as\ pd} -
  \texttt{import\ matplotlib.pyplot\ as\ plt}
\end{itemize}

\subsection{Using Markdown}\label{using-markdown}

\begin{itemize}
\tightlist
\item
  Headers: \texttt{\#}, \texttt{\#\#}, \texttt{\#\#\#}
\item
  Bullet lists: \texttt{-\ item}
\item
  Numbered lists: \texttt{1.\ item}
\item
  Emphasis: \emph{italic}, \textbf{bold}, \texttt{monospace}
\item
  LaTeX equations:

  \begin{itemize}
  \tightlist
  \item
    Inline: \texttt{\$E\ =\ mc\^{}2\$}
  \item
    Block:
    \texttt{\$\$\textbackslash{}int\_0\^{}\textbackslash{}infty\ e\^{}\{-x\^{}2\}\ dx\ =\ \textbackslash{}frac\{\textbackslash{}sqrt\{\textbackslash{}pi\}\}\{2\}\$\$}
  \end{itemize}
\item
  Embedding links and images
\end{itemize}

\subsection{Interactive Widgets
(optional)}\label{interactive-widgets-optional}

Install \texttt{ipywidgets} from your package manager

\begin{Shaded}
\begin{Highlighting}[]
\ImportTok{import}\NormalTok{ ipywidgets }\ImportTok{as}\NormalTok{ widgets}
\NormalTok{widgets.IntSlider()}
\end{Highlighting}
\end{Shaded}

Example using interact:

\begin{Shaded}
\begin{Highlighting}[]
\ImportTok{from}\NormalTok{ ipywidgets }\ImportTok{import}\NormalTok{ interact}
\NormalTok{interact(}\KeywordTok{lambda}\NormalTok{ x: x}\OperatorTok{**}\DecValTok{2}\NormalTok{, x}\OperatorTok{=}\DecValTok{5}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\subsection{Productivity Tips}\label{productivity-tips}

Here are some keyboard shortcuts to improve your productivity when
writing in notebooks.

\begin{longtable}[]{@{}ll@{}}
\toprule\noalign{}
Key & Action \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
A & insert cell above \\
B & insert cell below \\
M & switch to Markdown \\
Y & switch to code \\
\end{longtable}

Magic commands: - \texttt{\%timeit}, \texttt{\%matplotlib\ inline},
\texttt{\%\%bash} Splitting and merging cells Auto-save behavior

\subsection{Exporting and Sharing}\label{exporting-and-sharing}

\begin{itemize}
\tightlist
\item
  File \textgreater{} Download As:

  \begin{itemize}
  \tightlist
  \item
    Notebook (\texttt{.ipynb})
  \item
    HTML
  \item
    PDF (requires LaTeX)
  \item
    Markdown
  \end{itemize}
\item
  Notebooks can be saved and shared via the following services: - GitHub
  - nbviewer.org - mybinder.org - JupyterHub
\end{itemize}
