summaryrefslogtreecommitdiff
path: root/book/module2/problem_solving_strategies.tex
diff options
context:
space:
mode:
authorChristian Kolset <christian.kolset@gmail.com>2025-04-24 23:28:53 -0600
committerChristian Kolset <christian.kolset@gmail.com>2025-04-24 23:28:53 -0600
commit0fc68d39cf23955f443c75fa536922b45cf2e1dc (patch)
tree3411ce1ba48b1cc39f67ed132a1059ac435aa40f /book/module2/problem_solving_strategies.tex
parent1cdf11068535106b87c4b696e9aba025f23fabde (diff)
Updated .tex files
Diffstat (limited to 'book/module2/problem_solving_strategies.tex')
-rw-r--r--book/module2/problem_solving_strategies.tex127
1 files changed, 127 insertions, 0 deletions
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}