From bb450e5566d16b642236f8c337e74a7f94124599 Mon Sep 17 00:00:00 2001
From: Christian Kolset <christian.kolset@gmail.com>
Date: Thu, 24 Apr 2025 14:24:18 -0600
Subject: Added module directory to /book

---
 book/module1/basics_of_python.tex | 289 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 289 insertions(+)
 create mode 100644 book/module1/basics_of_python.tex

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

diff --git a/book/module1/basics_of_python.tex b/book/module1/basics_of_python.tex
new file mode 100644
index 0000000..64883e7
--- /dev/null
+++ b/book/module1/basics_of_python.tex
@@ -0,0 +1,289 @@
+    \maketitle
+
+
+
+
+    \hypertarget{basics-of-python}{
+\section{Basics of Python}\label{basics-of-python}}
+
+This page contains important fundamental concepts used in Python such as
+syntax, operators, order or precedence and more.
+
+    \hypertarget{syntax}{%
+\subsection{Syntax}\label{syntax}}
+
+\hypertarget{indentations-and-blocks}{%
+\subsubsection{Indentations and blocks}\label{indentations-and-blocks}}
+
+In python \emph{indentations} or the space at the start of each line,
+signifies a block of code. This becomes important when we start working
+with function and loops. We will talk more about this in the controls
+structures tutorial.
+
+\hypertarget{comments}{%
+\subsubsection{Comments}\label{comments}}
+
+Comments can be added to your code using the hash operator (\#). Any
+text behind the comment operator till the end of the line will be
+rendered as a comment. If you have an entire block of text or code that
+needs to be commented out, the triple quotation marks (""") can be used.
+Once used all the code after it will be considered a comment until the
+comment is ended with the triple quotation marks.
+
+    \hypertarget{operators}{%
+\subsection{Operators}\label{operators}}
+
+In python, operators are special symbols or keywords that perform
+operations on values or variables. This section covers some of the most
+common operator that you will see in this course.
+
+\hypertarget{arithmetic-operators}{%
+\subsubsection{Arithmetic operators}\label{arithmetic-operators}}
+
+\begin{longtable}[]{@{}ll@{}}
+\toprule
+Operator & Name \\
+\midrule
+\endhead
++ & Addition \\
+- & Subtraction \\
+* & Multiplication \\
+/ & Division \\
+\% & Modulus \\
+** & Exponentiation \\
+// & Floor division \\
+\bottomrule
+\end{longtable}
+
+\hypertarget{comparison-operators}{%
+\subsubsection{Comparison operators}\label{comparison-operators}}
+
+Used in conditional statements such as \texttt{if} statements or
+\texttt{while} loops. Note that in the computer world a double equal
+sign (\texttt{==}) means \emph{is equal to}, where as the single equal
+sign assigns the variable or defines the variable to be something.
+
+\begin{longtable}[]{@{}ll@{}}
+\toprule
+Operator & Name \\
+\midrule
+\endhead
+== & Equal \\
+!= & Not equal \\
+\textgreater{} & Greater than \\
+\textless{} & Less than \\
+\textgreater= & Greater than or equal to \\
+\textless= & Less than or equal to \\
+\bottomrule
+\end{longtable}
+
+\hypertarget{logical-operators}{%
+\subsubsection{Logical operators}\label{logical-operators}}
+
+\begin{longtable}[]{@{}ll@{}}
+\toprule
+Operator & Descrription \\
+\midrule
+\endhead
+\texttt{and} & Returns True if both statemetns are true \\
+\texttt{or} & Returns True if one of the statements is true \\
+\texttt{not} & Reerse the result, returns False if the result is true \\
+\bottomrule
+\end{longtable}
+
+\hypertarget{identity-operators}{%
+\subsubsection{Identity operators}\label{identity-operators}}
+
+\begin{longtable}[]{@{}ll@{}}
+\toprule
+Operator & Description \\
+\midrule
+\endhead
+is & Returns True if both variables are the same object \\
+is not & Returns True if both variables are not the same object \\
+\bottomrule
+\end{longtable}
+
+    \hypertarget{order-of-operation}{%
+\subsection{Order of Operation}\label{order-of-operation}}
+
+Similarly to the order or precedence in mathematics, different computer
+languages have their own set of rules. Here is a comprehensive table of
+the order of operation that python follows.
+
+\begin{longtable}[]{@{}
+  >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.51}}
+  >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.49}}@{}}
+\toprule
+Operator & Description \\
+\midrule
+\endhead
+\texttt{()} & Parentheses \\
+\texttt{**} & Exponentiation \\
+\texttt{+x} \texttt{-x} \texttt{\textasciitilde{}x} & Unary plus, unary
+minus, and bitwise NOT \\
+\texttt{*} \texttt{/} \texttt{//} \texttt{\%} & Multiplication,
+Division, floor division, and modulus \\
+\texttt{+} \texttt{-} & Addition and subtraction \\
+\texttt{\textless{}\textless{}} \texttt{\textgreater{}\textgreater{}} &
+Bitwise left and right shifts \\
+\& & Bitwise AND \\
+\^{} & Bitwise XOR \\
+\textbar{} & Bitwise OR \\
+\texttt{==} \texttt{!=} \texttt{\textgreater{}} \texttt{\textgreater{}=}
+\texttt{\textless{}} \texttt{\textless{}=} \texttt{is} \texttt{is\ not}
+\texttt{in} \texttt{not\ in} & Comparision, identity and membership
+operators \\
+\texttt{not} & logical NOT \\
+\texttt{and} & AND \\
+\texttt{or} & OR \\
+\bottomrule
+\end{longtable}
+
+    \hypertarget{data-types}{%
+\subsection{Data types}\label{data-types}}
+
+Data types are different ways a computer stores data. Other data types
+use fewer bits than others allowing you to better utilize your computer
+memory. This is important for engineers because The most common data
+types that an engineer encounters in python are numeric types. -
+\texttt{int} - integer - \texttt{float} - a decimal number -
+\texttt{complex} - imaginary number
+
+The comprehensive table below show all built-in data types available in
+python.
+
+\begin{longtable}[]{@{}ll@{}}
+\toprule
+Category & Data Type \\
+\midrule
+\endhead
+Text & int, float, complex \\
+Sequance & list, tuple, range \\
+Mapping & dict \\
+Set & set, frozenset \\
+Boolean & bytes, bytearray, memoryview \\
+Binary & bytes, bytearray, memoryview \\
+None & NoneType \\
+\bottomrule
+\end{longtable}
+
+    \hypertarget{variables}{%
+\subsection{Variables}\label{variables}}
+
+A \textbf{variable} in Python is a name that stores a value, allowing
+you to use and manipulate data efficiently.
+
+\hypertarget{declaring-and-assigning-variables}{%
+\paragraph{Declaring and Assigning
+Variables}\label{declaring-and-assigning-variables}}
+
+It is common in low-level computer languages to declare the datatype if
+the variable. In python, the datatype is set whilst you assign it. We
+assign values to variables using a single \texttt{=}.
+
+```python
+
+    \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
+\prompt{In}{incolor}{1}{\boxspacing}
+\begin{Verbatim}[commandchars=\\\{\}]
+\PY{n}{x} \PY{o}{=} \PY{l+m+mi}{33}          \PY{c+c1}{\PYZsh{} Integer}
+\PY{n}{y} \PY{o}{=} \PY{l+m+mf}{3.14}        \PY{c+c1}{\PYZsh{} Float}
+\PY{n}{name} \PY{o}{=} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Joe}\PY{l+s+s2}{\PYZdq{}}    \PY{c+c1}{\PYZsh{} String}
+\PY{n}{is\PYZus{}valid} \PY{o}{=} \PY{k+kc}{True} \PY{c+c1}{\PYZsh{} Boolean}
+
+\PY{n+nb}{print}\PY{p}{(}\PY{n}{x}\PY{o}{*}\PY{o}{*}\PY{l+m+mi}{2}\PY{o}{+}\PY{l+m+mi}{3}\PY{o}{*}\PY{n}{y}\PY{p}{)}
+\end{Verbatim}
+\end{tcolorbox}
+
+    \begin{Verbatim}[commandchars=\\\{\}]
+1098.42
+    \end{Verbatim}
+
+    Change the x and y values above, re-run the cell to see what happens.
+
+You can assign multiple variables at once:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{a, b, c }\OperatorTok{=} \DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}
+\end{Highlighting}
+\end{Shaded}
+
+Similarly we can assign the same value to multiple variables:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{x }\OperatorTok{=}\NormalTok{ y }\OperatorTok{=}\NormalTok{ z }\OperatorTok{=} \DecValTok{100}
+\end{Highlighting}
+\end{Shaded}
+
+    \hypertarget{rules}{%
+\subparagraph{Rules}\label{rules}}
+
+\begin{itemize}
+\tightlist
+\item
+  Must start with a letter or \texttt{\_}
+\item
+  Cannot start with a number
+\item
+  Can only contain letters, numbers, and \texttt{\_}
+\item
+  Case-sensitive (\texttt{Name} and \texttt{name} are different)
+\end{itemize}
+
+\hypertarget{updating-variables}{%
+\paragraph{Updating Variables}\label{updating-variables}}
+
+You can change a variable's value at any time.
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{x }\OperatorTok{=} \DecValTok{5}
+\NormalTok{x }\OperatorTok{=}\NormalTok{ x }\OperatorTok{+} \DecValTok{10}  \CommentTok{\# Now x is 15}
+\end{Highlighting}
+\end{Shaded}
+
+Or shorthand:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{x }\OperatorTok{+=} \DecValTok{10}  \CommentTok{\# Same as x = x + 10}
+\end{Highlighting}
+\end{Shaded}
+
+\hypertarget{variable-types-type-checking}{%
+\paragraph{Variable Types \& Type
+Checking}\label{variable-types-type-checking}}
+
+Use \texttt{type()} to check a variable's type.
+
+    \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
+\prompt{In}{incolor}{2}{\boxspacing}
+\begin{Verbatim}[commandchars=\\\{\}]
+\PY{n}{x} \PY{o}{=} \PY{l+m+mi}{10}
+\PY{n+nb}{print}\PY{p}{(}\PY{l+s+sa}{f}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{ Variable x is type: }\PY{l+s+si}{\PYZob{}}\PY{n+nb}{type}\PY{p}{(}\PY{n}{x}\PY{p}{)}\PY{l+s+si}{\PYZcb{}}\PY{l+s+s1}{\PYZsq{}}\PY{p}{)}
+
+\PY{n}{y} \PY{o}{=} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Hello}\PY{l+s+s2}{\PYZdq{}}
+\PY{n+nb}{print}\PY{p}{(}\PY{l+s+sa}{f}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{ Variable y is type: }\PY{l+s+si}{\PYZob{}}\PY{n+nb}{type}\PY{p}{(}\PY{n}{y}\PY{p}{)}\PY{l+s+si}{\PYZcb{}}\PY{l+s+s1}{\PYZsq{}}\PY{p}{)}
+\end{Verbatim}
+\end{tcolorbox}
+
+    \begin{Verbatim}[commandchars=\\\{\}]
+ Variable x is type: <class 'int'>
+ Variable y is type: <class 'str'>
+    \end{Verbatim}
+
+    \hypertarget{exercise}{%
+\section{Exercise}\label{exercise}}
+
+    \begin{tcolorbox}[breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder]
+\prompt{In}{incolor}{ }{\boxspacing}
+\begin{Verbatim}[commandchars=\\\{\}]
+
+\end{Verbatim}
+\end{tcolorbox}
+
+
+    % Add a bibliography block to the postdoc
-- 
cgit v1.2.3

