From 8216a16d78d7aff5bc5a1607694ec3ea24eef64f Mon Sep 17 00:00:00 2001
From: Christian Kolset <christian.kolset@gmail.com>
Date: Mon, 28 Apr 2025 11:39:06 -0600
Subject: Updated tex files and pdf

---
 book/module1/jupyter_lab_notebook.tex | 103 ++++++++++++++++++++++------------
 1 file changed, 68 insertions(+), 35 deletions(-)

(limited to 'book/module1/jupyter_lab_notebook.tex')

diff --git a/book/module1/jupyter_lab_notebook.tex b/book/module1/jupyter_lab_notebook.tex
index 9688bea..5c06f5d 100644
--- a/book/module1/jupyter_lab_notebook.tex
+++ b/book/module1/jupyter_lab_notebook.tex
@@ -14,17 +14,10 @@ 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}
+Jupyter Notebooks can be installed either from the Anaconda Navigator
+home page or directly from your Conda terminal.
+
+Terminal: \texttt{conda\ install\ conda-forge::jupyterlab}
 
 \subsection{Notebook Basics}\label{notebook-basics}
 
@@ -54,6 +47,68 @@ Jupyter can also be installed using a Anaconda Navigator
   Saving and auto-checkpoints
 \end{itemize}
 
+Jupyter Notebooks are files which allows you to combine \emph{Code} and
+\emph{Markdown} cells in one single document. The code cells, allow you
+to interactively run python code and print and plot data in your
+document. If you wish to update or change data your code you can re-run
+the cell to update the output. The markdown cells allows you to write
+text, titles and insert images in your documentation using the markup
+language \emph{Markdown}.
+
+To start a new notebook select
+\texttt{File\ \textgreater{}\ New\ \textgreater{}\ Notebook} or right
+click the file browser and select \texttt{New\ notebook}, this will
+prompt you to select a kernel (the Jupyter notebook ``engine''). For
+now, just select the default Kernel 3. This will start a new fresh
+kernel for us to use. Next, it's recommended to rename the file.
+
+Now that we have a blank notebook we can start to add cells. Add a cell
+and change the type to Markdown. Add a title with the hash symbol
+(\texttt{\#}). As shown below.
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\FunctionTok{\# Title here}
+\end{Highlighting}
+\end{Shaded}
+
+Press \texttt{Shift\ +\ Enter} to run the cell. You just entered created
+your first markdown cell. Now let's do the same but instead select code
+as the cell type, we're going to add some python code to the document.
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{x }\OperatorTok{=} \DecValTok{4}
+\NormalTok{y }\OperatorTok{=} \DecValTok{3}
+
+\NormalTok{x}\OperatorTok{**}\DecValTok{2}\OperatorTok{+}\DecValTok{2}\OperatorTok{*}\NormalTok{y}
+\end{Highlighting}
+\end{Shaded}
+
+Again, run the cell and see what happens. You should've gotten an output
+of \texttt{22}. You can now use the notebook as a calculator, but there
+is so much more we can do.
+
+The order of running code matters. Think of the code cells as code
+snippets. Every time you run a cell variable will be updated. This means
+that the current state of all variables, functions, and imports depends
+on the history of what cells have been executed and in what order. In
+other words, if you run a later cell before running an earlier one that
+defines a variable or function it needs, you will get an error. If you
+change a variable in one cell and rerun it, that new value immediately
+affects the results of any cells that use that variable afterward ---
+but not any previously run results unless you rerun them too. Variables
+and imports persist in memory between cells, but only based on the
+current session state --- if you restart the kernel, you lose all
+previous definitions unless you re-run the necessary cells.
+
+Because of this, it's best practice to; Run cells in order, restart the
+kernel and run all cells
+(\texttt{Kernel\ -\textgreater{}\ Restart\ \&\ Run\ All}) to make sure
+everything works cleanly and predictably and lastly, initialize
+important variables or imports in early cells, so they are always
+defined before they are needed.
+
 \subsection{Writing and Running Code}\label{writing-and-running-code}
 
 \begin{itemize}
@@ -115,29 +170,10 @@ Example using interact:
 \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}
 
+By default, jupyter auto-saves your notebooks as you work.
+
 \begin{itemize}
 \tightlist
 \item
@@ -154,7 +190,4 @@ Magic commands: - \texttt{\%timeit}, \texttt{\%matplotlib\ inline},
   \item
     Markdown
   \end{itemize}
-\item
-  Notebooks can be saved and shared via the following services: - GitHub
-  - nbviewer.org - mybinder.org - JupyterHub
 \end{itemize}
-- 
cgit v1.2.3

