diff options
| author | Christian Kolset <christian.kolset@gmail.com> | 2025-04-24 23:28:53 -0600 |
|---|---|---|
| committer | Christian Kolset <christian.kolset@gmail.com> | 2025-04-24 23:28:53 -0600 |
| commit | 0fc68d39cf23955f443c75fa536922b45cf2e1dc (patch) | |
| tree | 3411ce1ba48b1cc39f67ed132a1059ac435aa40f | |
| parent | 1cdf11068535106b87c4b696e9aba025f23fabde (diff) | |
Updated .tex files
| -rw-r--r-- | book/module0/intro_to_anaconda.tex | 12 | ||||
| -rw-r--r-- | book/module0/module0.tex | 4 | ||||
| -rw-r--r-- | book/module1/1_excel_to_python.tex | 119 | ||||
| -rw-r--r-- | book/module1/array.tex | 3 | ||||
| -rw-r--r-- | book/module1/intro_to_anaconda.tex | 16 | ||||
| -rw-r--r-- | book/module1/module1.tex | 22 | ||||
| -rw-r--r-- | book/module1/spyder_getting_started.tex | 8 | ||||
| -rw-r--r-- | book/module2/ai_assisted_programming.tex | 52 | ||||
| -rw-r--r-- | book/module2/module2.tex | 5 | ||||
| -rw-r--r-- | book/module2/problem_solving_strategies.tex | 127 | ||||
| -rw-r--r-- | book/module2/version_control.tex | 42 | ||||
| -rw-r--r-- | book/module3/module3.tex | 2 | ||||
| -rw-r--r-- | book/module4/module4.tex | 2 | ||||
| -rw-r--r-- | book/module5/module5.tex | 2 |
14 files changed, 336 insertions, 80 deletions
diff --git a/book/module0/intro_to_anaconda.tex b/book/module0/intro_to_anaconda.tex index e4ac639..e35138a 100644 --- a/book/module0/intro_to_anaconda.tex +++ b/book/module0/intro_to_anaconda.tex @@ -21,8 +21,6 @@ indicated, Navigator is a tool in the Anaconda toolbox that allows the user to select and configure python environments and libraries. Let's see how we can do this. -\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} - \subsection{Getting Started}\label{getting-started} Note to windows 10 users: Some installation instances do not allow users @@ -32,7 +30,7 @@ the folder and click on \emph{Anaconda Navigator} to launch the program. \begin{figure} \centering -\includegraphics{../tutorials/figures/installingAnaconda_windows_launched.png} +\includegraphics{figures/installingAnaconda_windows_launched.png} \caption{Anaconda Navigator screen} \end{figure} @@ -67,7 +65,7 @@ environment for us to use Spyder with. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-env-labeled.png} +\includegraphics{figures/anaconda_environment_page.png} \caption{Environment Page} \end{figure} @@ -81,7 +79,7 @@ environment for us to use Spyder with. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-getting-started-create.png} +\includegraphics{figures/anaconda_create_new_environment.png} \caption{Create new environment} \end{figure} @@ -121,7 +119,7 @@ library we will be using for this class. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-pkg-list.png} +\includegraphics{figures/anaconda_select_package_to_manage.png} \caption{Select environment to manage} \end{figure} @@ -181,7 +179,7 @@ other applications. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-tabs.png} +\includegraphics{figures/anaconda_homepage.png} \caption{Anaconda Home Page} \end{figure} diff --git a/book/module0/module0.tex b/book/module0/module0.tex index 7fe4a51..9b3c8dc 100644 --- a/book/module0/module0.tex +++ b/book/module0/module0.tex @@ -1,3 +1,3 @@ -\chapter{Module 0} -\input{module0/intro_to_anaconda} +\chapter{Getting Started} \input{module0/intro_to_programming} +\input{module0/intro_to_anaconda} diff --git a/book/module1/1_excel_to_python.tex b/book/module1/1_excel_to_python.tex new file mode 100644 index 0000000..300c951 --- /dev/null +++ b/book/module1/1_excel_to_python.tex @@ -0,0 +1,119 @@ +\section{Excel to Python}\label{excel-to-python} + +\begin{itemize} +\tightlist +\item + Importing +\item + Plotting +\item + Statistical analysis +\end{itemize} + +\subsection{\texorpdfstring{\textbf{How Excel Translates to +Python}}{How Excel Translates to Python}}\label{how-excel-translates-to-python} + +Here's how common Excel functionalities map to Python: + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.2911}} + >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.7089}}@{}} +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +\textbf{Excel Feature} +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +\textbf{Python Equivalent} +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +Formulas (SUM, AVERAGE) & \texttt{numpy}, \texttt{pandas} +(\texttt{df.sum()}, \texttt{df.mean()}) \\ +Sorting \& Filtering & \texttt{pandas.sort\_values()}, +\texttt{df{[}df{[}\textquotesingle{}col\textquotesingle{}{]}\ \textgreater{}\ value{]}} \\ +Conditional Formatting & \texttt{matplotlib} for highlighting \\ +Pivot Tables & \texttt{pandas.pivot\_table()} \\ +Charts \& Graphs & \texttt{matplotlib}, \texttt{seaborn}, +\texttt{plotly} \\ +Regression Analysis & \texttt{scipy.stats.linregress}, +\texttt{sklearn.linear\_model} \\ +Solver/Optimization & \texttt{scipy.optimize} \\ +VBA Macros & Python scripting with \texttt{openpyxl}, \texttt{pandas}, +or \texttt{xlwings} \\ +\end{longtable} + +\subsection{Statistical functions}\label{statistical-functions} + +\paragraph{SUM}\label{sum} + +Built-in: + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{my\_array }\OperatorTok{=}\NormalTok{ [}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{, }\DecValTok{4}\NormalTok{, }\DecValTok{5}\NormalTok{]} +\NormalTok{total }\OperatorTok{=} \BuiltInTok{sum}\NormalTok{(my\_array)} +\BuiltInTok{print}\NormalTok{(total) }\CommentTok{\# Output: 15} +\end{Highlighting} +\end{Shaded} + +Numpy: + +\begin{Shaded} +\begin{Highlighting}[] +\ImportTok{import}\NormalTok{ numpy }\ImportTok{as}\NormalTok{ np} + +\NormalTok{my\_array }\OperatorTok{=}\NormalTok{ np.array([}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{, }\DecValTok{4}\NormalTok{, }\DecValTok{5}\NormalTok{])} +\NormalTok{total }\OperatorTok{=}\NormalTok{ np.}\BuiltInTok{sum}\NormalTok{(my\_array)} +\BuiltInTok{print}\NormalTok{(total) }\CommentTok{\# Output: 15} +\end{Highlighting} +\end{Shaded} + +\subsubsection{Average}\label{average} + +Built-in: + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{my\_array }\OperatorTok{=}\NormalTok{ [}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{, }\DecValTok{4}\NormalTok{, }\DecValTok{5}\NormalTok{]} +\NormalTok{average }\OperatorTok{=} \BuiltInTok{sum}\NormalTok{(my\_array) }\OperatorTok{/} \BuiltInTok{len}\NormalTok{(my\_array)} +\BuiltInTok{print}\NormalTok{(average) }\CommentTok{\# Output: 3.0} +\end{Highlighting} +\end{Shaded} + +Numpy: + +\begin{Shaded} +\begin{Highlighting}[] +\ImportTok{import}\NormalTok{ numpy }\ImportTok{as}\NormalTok{ np} + +\NormalTok{my\_array }\OperatorTok{=}\NormalTok{ np.array([}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{, }\DecValTok{4}\NormalTok{, }\DecValTok{5}\NormalTok{])} +\NormalTok{average }\OperatorTok{=}\NormalTok{ np.mean(my\_array)} +\BuiltInTok{print}\NormalTok{(average) }\CommentTok{\# Output: 3.0} +\end{Highlighting} +\end{Shaded} + +\subsection{Plotting}\label{plotting} + +We can use the package \emph{matplotlib} to plot our graphs in python. +Matplotlib provides data visualization tools for the Scientific Python +Ecosystem. You can make very professional looking figures with this +tool. + +Here is a section from the matplotlib documentation page that you can +run in python. + +\begin{Shaded} +\begin{Highlighting}[] +\ImportTok{import}\NormalTok{ matplotlib.pyplot }\ImportTok{as}\NormalTok{ plt} + +\NormalTok{fig, ax }\OperatorTok{=}\NormalTok{ plt.subplots() }\CommentTok{\# Create a figure containing a single Axes.} +\NormalTok{ax.plot([}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{, }\DecValTok{4}\NormalTok{], [}\DecValTok{1}\NormalTok{, }\DecValTok{4}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{]) }\CommentTok{\# Plot some data on the Axes.} +\NormalTok{plt.show() }\CommentTok{\# Show the figure.} +\end{Highlighting} +\end{Shaded} + +Check out the documentation pages for a +\href{https://matplotlib.org/stable/users/explain/quick_start.html\#a-simple-example}{simple +example} or more information on the types of plots you came create +\href{https://matplotlib.org/stable/plot_types/index.html}{here}. diff --git a/book/module1/array.tex b/book/module1/array.tex index db176e7..c9fc302 100644 --- a/book/module1/array.tex +++ b/book/module1/array.tex @@ -40,8 +40,7 @@ would be stress. \item From \href{https://numpy.org/doc/2.2/user/absolute_beginners.html}{Numpy - documentation} - \includegraphics{https://www.mathworks.com/help/examples/matlab/win64/nddemo_02.gif} + documentation} \includegraphics{figures/multi-dimensional-array.gif} \end{itemize} If the load on this block changes over time, then we may want to add a diff --git a/book/module1/intro_to_anaconda.tex b/book/module1/intro_to_anaconda.tex index bc548c9..935b3f5 100644 --- a/book/module1/intro_to_anaconda.tex +++ b/book/module1/intro_to_anaconda.tex @@ -7,10 +7,10 @@ write our python code. The Anaconda website nicely describes \emph{Navigator} as: -a graphical user interface (GUI) that enables you to work with packages -and environments without needing to type conda commands in a terminal -window.Find the packages you want, install them in an environment, run -the packages, and update them -- all inside Navigator. +\emph{a graphical user interface (GUI) that enables you to work with +packages and environments without needing to type conda commands in a +terminal window.Find the packages you want, install them in an +environment, run the packages, and update them -- all inside Navigator.} To better understand how Navigator works and interacts with the anaconda ecosystem see the figure below. @@ -63,7 +63,7 @@ environment for us to use Spyder with. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-env-labeled.png} +\includegraphics{figures/anaconda_environment_page.png} \caption{Environment Page} \end{figure} @@ -77,7 +77,7 @@ environment for us to use Spyder with. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-getting-started-create.png} +\includegraphics{figures/anaconda_create_new_environment.png} \caption{Create new environment} \end{figure} @@ -117,7 +117,7 @@ library we will be using for this class. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-pkg-list.png} +\includegraphics{figures/anaconda_select_package_to_manage.png} \caption{Select environment to manage} \end{figure} @@ -177,7 +177,7 @@ other applications. \begin{figure} \centering -\includegraphics{https://mintlify.s3.us-west-1.amazonaws.com/anaconda-29683c67/images/nav-tabs.png} +\includegraphics{figures/anaconda_homepage.png} \caption{Anaconda Home Page} \end{figure} diff --git a/book/module1/module1.tex b/book/module1/module1.tex index 58db30b..6ed476b 100644 --- a/book/module1/module1.tex +++ b/book/module1/module1.tex @@ -1,16 +1,16 @@ -\chapter{Module 1} -\input{module1/array} -\input{module1/arrays} +\chapter{Module 1: Introductory Programming Concepts} +\input{module1/intro_to_programming} +\input{module1/installing_anaconda} +\input{module1/intro_to_anaconda} +\input{module1/jupyter_lab_notebook} +\input{module1/spyder_getting_started} \input{module1/basics_of_python} -\input{module1/classes_and_objects} -\input{module1/computational_expense} -\input{module1/computing_fundamentals} +\input{module1/array} \input{module1/control_structures} \input{module1/functions} +\input{module1/classes_and_objects} \input{module1/fundamentals_of_programming} -\input{module1/installing_anaconda} -\input{module1/intro_to_anaconda} -\input{module1/intro_to_programming} -\input{module1/jupyter_lab_notebook} +\input{module1/computing_fundamentals} \input{module1/open_source_software} -\input{module1/spyder_getting_started} +\input{module1/1_excel_to_python} +\input{module1/computational_expense} diff --git a/book/module1/spyder_getting_started.tex b/book/module1/spyder_getting_started.tex index d1e20fe..70a3d41 100644 --- a/book/module1/spyder_getting_started.tex +++ b/book/module1/spyder_getting_started.tex @@ -14,7 +14,7 @@ Using Anaconda we will select the environment we created earlier \begin{figure} \centering -\includegraphics{https://docs.spyder-ide.org/current/_images/mainwindow_default_1610.png} +\includegraphics{figures/spyder_interface.png} \caption{Spyder Interface} \end{figure} @@ -29,7 +29,7 @@ This pane is used to write your scripts. The \begin{figure} \centering -\includegraphics{https://docs.spyder-ide.org/5/_images/editor-components.png} +\includegraphics{figures/editor_key_components.png} \caption{Editor key components} \end{figure} @@ -65,7 +65,7 @@ computations, assign and modify variables. \begin{figure} \centering -\includegraphics{https://docs.spyder-ide.org/5/_images/console-standard.png} +\includegraphics{figures/spyder_ipython_console.png} \caption{IPython Console} \end{figure} @@ -100,6 +100,6 @@ you to inspect the data in a spreadsheet like view. \begin{figure} \centering -\includegraphics{https://docs.spyder-ide.org/5/_images/variable-explorer-standard.png} +\includegraphics{figures/spyder_variable_explorer.png} \caption{Variable Explorer} \end{figure} diff --git a/book/module2/ai_assisted_programming.tex b/book/module2/ai_assisted_programming.tex index 2fee22b..4d6dcde 100644 --- a/book/module2/ai_assisted_programming.tex +++ b/book/module2/ai_assisted_programming.tex @@ -11,17 +11,23 @@ suggestions and allows you to focus on solving the problem at hand rather. AI is a technology that is constantly improving. As engineers we need to \emph{understand} how we can use AI as a tool to achieve our goals more efficiently. This section cover good practices of how we can -implement AI and lists some AI assistant tools that we can use. \#\# -Good vs.~Bad uses of AI Don't try to get AI to do work \emph{for you} -but \emph{with you}. You need to understand what you're doing. If you -don't understand what the AI is doing, then you're not in control of the -work. You're not going to go far until something unexpected happens. +implement AI and lists some AI assistant tools that we can use. + +\subsection{Good vs.~Bad uses of AI}\label{good-vs.-bad-uses-of-ai} + +Don't try to get AI to do work \emph{for you} but \emph{with you}. You +need to understand what you're doing. If you don't understand what the +AI is doing, then you're not in control of the work. You're not going to +go far until something unexpected happens. AI is a great learning tool, research as show that students can benefit from using AI as personal tutor \href{https://hbsp.harvard.edu/inspiring-minds/ai-as-personal-tutor}{more}. -\#\# Available tools Below is a comprehensive list of tools that are -available at not cost to you. + +\subsection{Available tools}\label{available-tools} + +Below is a comprehensive list of tools that are available at not cost to +you. \begin{longtable}[]{@{}ll@{}} \toprule\noalign{} @@ -44,12 +50,16 @@ aiXcoder & Free \\ Many of the tools above come with similar, if not, the same features. Some of the tools come as chatbots on the web and others are extensions -that can be implemented in your favorite IDE. \#\# VSCode and GitHub -Copilot Integration We will not cover how to use VSCode in this course, -however it is a very versatile IDE that comes with many other extension, -for example git, github and github copilot integration. There are also -other extensions for other IDE's however we will only cover some basic -features that the GithHub Copilot extension in VSCode can do. +that can be implemented in your favorite IDE. + +\subsection{VSCode and GitHub Copilot +Integration}\label{vscode-and-github-copilot-integration} + +We will not cover how to use VSCode in this course, however it is a very +versatile IDE that comes with many other extension, for example git, +github and github copilot integration. There are also other extensions +for other IDE's however we will only cover some basic features that the +GithHub Copilot extension in VSCode can do. Copilot Comes with the following features: - Get code suggestions as you type - Ask questions about the code - Inline chat to generate code. - @@ -57,9 +67,13 @@ Fix and debug code using the chat window - Generate code documentation \href{https://code.visualstudio.com/}{VSCode} \href{https://code.visualstudio.com/docs/copilot/setup-simplified}{Copilot -extension} \#\# A note on integrity If you have a -non-disclosure-agreement (NDA) with your employer, it may not always be -possible to use AI for security and integrity reasons as you may risk -exposing confidential information with third party vendors. It is highly -recommended to be able to be able to write program independently of an -AI assistant. Always think before you share data. +extension} + +\subsection{A note on intellectual +property}\label{a-note-on-intellectual-property} + +If you have a non-disclosure-agreement (NDA) with your employer, it may +not always be possible to use AI for security and integrity reasons as +you may risk exposing confidential information with third party vendors. +It is highly recommended to be able to be able to write program +independently of an AI assistant. Always think before you share data. diff --git a/book/module2/module2.tex b/book/module2/module2.tex index f16e7e2..2781a0e 100644 --- a/book/module2/module2.tex +++ b/book/module2/module2.tex @@ -1,5 +1,6 @@ -\chapter{Module 2} +\chapter{Module 2: Algorithm Development} +\input{module2/problem_solving_strategies} +\input{module2/intro_to_numerical_methods} \input{module2/ai_assisted_programming} \input{module2/debugging_code} -\input{module2/intro_to_numerical_methods} \input{module2/version_control} diff --git a/book/module2/problem_solving_strategies.tex b/book/module2/problem_solving_strategies.tex new file mode 100644 index 0000000..4b908f8 --- /dev/null +++ b/book/module2/problem_solving_strategies.tex @@ -0,0 +1,127 @@ +\section{Algorithmic thinking}\label{algorithmic-thinking} + +\subsection{Learning Objectives}\label{learning-objectives} + +By the end of this lesson, students will be able to: + +\begin{itemize} +\tightlist +\item + Apply algorithmic thinking to solve engineering problems using + computational tools. +\item + Translate engineering problems into structured programming logic. +\item + Use software tools to implement, test, and refine engineering + solutions. +\end{itemize} + +\subsection{Define the Problem}\label{define-the-problem} + +Like many other classes we need to frame the problem before working it. +So before jumping straight into coding or building models, clearly +define the engineering problem. + +\begin{itemize} +\tightlist +\item + \textbf{List knowns and unknowns.} What inputs are given? What outputs + are required? +\item + \textbf{Establish system constraints and assumptions.} Identify + physical laws, design requirements, and performance limits. +\item + \textbf{Clarify computational objectives.} What are you trying to + calculate, simulate, or optimize? +\end{itemize} + +\subsection{Think Algorithmically}\label{think-algorithmically} + +Since we are going to use computers to calculate our solution we first +need to break the problem into logical steps that a computer can follow. + +\begin{itemize} +\tightlist +\item + \textbf{Define the inputs and outputs.} What variables will the + program take in, and what results will it produce? +\item + \textbf{Break the problem into sub-tasks.} Identify steps such as data + input, logic processing and output. +\item + \textbf{Outline the algorithm.} Write pseudocode or flowcharts that + describe the computational steps. +\item + \textbf{Identify patterns or formulas.} Can loops, conditionals, or + equations be used to automate parts of the solution? +\end{itemize} + +\textbf{Example:} For processing stress-strain data: 1. Import data from +a file. 2. Convert force and displacement to stress and strain. 3. Plot +the stress-strain curve. 4. Identify the yield point or modulus. + +\subsection{Write \& Execute the Code}\label{write-execute-the-code} + +\begin{itemize} +\tightlist +\item + \textbf{Choose the right tools.} Are there libraries I can use to get + to my objective more effectively? +\item + \textbf{Write modular code.} Use functions to separate different tasks + (e.g., reading data, computing values, plotting). +\item + \textbf{Check for syntax and logic errors.} Debug line-by-line using + print statements or a debugger. +\end{itemize} + +\textbf{Example:} Write a Python script that uses NumPy and Matplotlib +to load a CSV file, compute stress and strain, and generate plots. + +\subsection{Test and Validate}\label{test-and-validate} + +\begin{itemize} +\tightlist +\item + \textbf{Assess the feasibility of your results.} Do the values align + with expected physical behavior? +\item + \textbf{Compare against established benchmarks.} Validate solutions + using experimental data, literature values, or known theoretical + limits. +\item + \textbf{Check units and scaling.} Ensure computations are consistent + with physical meaning. +\end{itemize} + +\textbf{Example:} If your plot shows stress values in the thousands when +you expect hundreds, check unit conversions in your formula. + +\subsection{Case Study: Simulating a Spring-Mass +System}\label{case-study-simulating-a-spring-mass-system} + +\textbf{Scenario:} Model the motion of a mass-spring-damper system using +a numerical solver. + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + \textbf{Define the Problem:} Set up the differential equation from + Newton's Second Law. +\item + \textbf{Develop a Strategy:} Discretize time, apply numerical + integration (e.g., Euler or Runge-Kutta). +\item + \textbf{Execute the Code:} Write a Python function that computes + motion over time. +\item + \textbf{Test the Model:} Compare results with analytical solutions for + undamped or lightly damped systems. +\item + \textbf{Refine the Model:} Add adjustable damping and stiffness + parameters. +\item + \textbf{Troubleshoot Issues:} If the model becomes unstable, reduce + the time step or use a more accurate integrator. +\end{enumerate} diff --git a/book/module2/version_control.tex b/book/module2/version_control.tex index 3c5ac6a..1c327c6 100644 --- a/book/module2/version_control.tex +++ b/book/module2/version_control.tex @@ -17,8 +17,6 @@ In this section is divided up into two major sections. The first section project. The second section will cover how to use git with GitHub to \emph{collaborate} on projects. -\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} - \subsection{Git}\label{git} Git is a version control program that tracks changes to files and @@ -51,25 +49,25 @@ committed: This leads us to the three main sections of a Git project: the working tree, the staging area, and the Git directory. -\includegraphics{https://git-scm.com/book/en/v2/images/areas.png} \#\#\# -Branching In git, branches allow for parallel workflow on a project. It -give contributors the ability to work different features at the same -time. Each branch represents an independent line of development, and -once a feature or fix is complete, it can be merged back into the main -branch. Here is a common branching structure used in many Git projects: -- Main Branch - The main branch (a.k.a. master branch) is the default -branch in a Git repository and contains the stable version of the code. -- Development Branch - is created to develop a new feature or fix a bug -without affecting the main branch. It isn't necessarily always stable, -but whenever it gets to a stable state, it can be merged into master. - +\includegraphics{figures/git_areas.png} \#\#\# Branching In git, +branches allow for parallel workflow on a project. It give contributors +the ability to work different features at the same time. Each branch +represents an independent line of development, and once a feature or fix +is complete, it can be merged back into the main branch. Here is a +common branching structure used in many Git projects: - Main Branch - +The main branch (a.k.a. master branch) is the default branch in a Git +repository and contains the stable version of the code. - Development +Branch - is created to develop a new feature or fix a bug without +affecting the main branch. It isn't necessarily always stable, but +whenever it gets to a stable state, it can be merged into master. - Topic Branch - A topic branch is a short-lived branch that you create and use for a single particular feature or related work. -\includegraphics{https://git-scm.com/book/en/v2/images/lr-branches-2.png} -\#\#\# Best Practices - Use descriptive commit messages. - Commit early -and often. - Keep commits focused on a single change. - Use feature -branches for new features or bug fixes. - Review and test changes before -merging. - Resolve conflicts promptly. - Keep the commit history clean -and organized. +\includegraphics{figures/git_silo_branching.png} \#\#\# Best Practices - +Use descriptive commit messages. - Commit early and often. - Keep +commits focused on a single change. - Use feature branches for new +features or bug fixes. - Review and test changes before merging. - +Resolve conflicts promptly. - Keep the commit history clean and +organized. \subsubsection{Basic Commands}\label{basic-commands} @@ -114,19 +112,19 @@ be using for this course. \textbf{Centralized}: The project has only one central hub or \emph{repository}, can accept code and everybody synchronizes their work with it. This model is suitable for small and closed-sourced projects. -\includegraphics{https://git-scm.com/book/en/v2/images/centralized_workflow.png} +\includegraphics{figures/git_workflow_centralized.png} \textbf{Integration-Manager:} There are multiple public variants of the code original code known as \emph{forks}. The integration manager can decide what features to pull from the forks. This is the model that is similar to the one used on GitHub -\includegraphics{https://git-scm.com/book/en/v2/images/integration-manager.png} +\includegraphics{figures/git_workflow_int_manager.png} \textbf{Dictator and Lieutenants Workflow:} This is similar to the integration-manager model, however due to the size of the project. A rank of integration managers is formed. one example of this is the development of the Linux kernel. -\includegraphics{https://git-scm.com/book/en/v2/images/benevolent-dictator.png} +\includegraphics{figures/git_workflow_dictator.png} GitHub is designed around a particular collaboration workflow, centered on Pull Requests. This flow works whether you're collaborating with a diff --git a/book/module3/module3.tex b/book/module3/module3.tex index 30dfa79..3e93796 100644 --- a/book/module3/module3.tex +++ b/book/module3/module3.tex @@ -1,4 +1,4 @@ -\chapter{Module 3} +\chapter{Module 3: Applications of Computational Mathematics} \input{module3/non_linear_eqn_solver} \input{module3/supersonic} \input{module3/system_of_equations} diff --git a/book/module4/module4.tex b/book/module4/module4.tex index a8e0676..48e3475 100644 --- a/book/module4/module4.tex +++ b/book/module4/module4.tex @@ -1,3 +1,3 @@ -\chapter{Module 4} +\chapter{Module 4: Data Analysis and Visualization} \input{module4/linear_regression} \input{module4/plotting} diff --git a/book/module5/module5.tex b/book/module5/module5.tex index a644df8..c274e38 100644 --- a/book/module5/module5.tex +++ b/book/module5/module5.tex @@ -1 +1 @@ -\chapter{Module 5} +\chapter{Module 5: Introduction to AI for Engineering Problems} |
