summaryrefslogtreecommitdiff
path: root/tutorials/module_2/problem_solving_strategies.md
diff options
context:
space:
mode:
authorChristian Kolset <christian.kolset@gmail.com>2025-04-24 15:22:41 -0600
committerChristian Kolset <christian.kolset@gmail.com>2025-04-24 15:22:41 -0600
commit7e0b4501030aa268da323c1eaa69c8a2b29ee6a3 (patch)
tree91561278b0b74bfc5cd986f043d63b0c2fd1e534 /tutorials/module_2/problem_solving_strategies.md
parentbb450e5566d16b642236f8c337e74a7f94124599 (diff)
Added scripts to generate tex files from markdown
Diffstat (limited to 'tutorials/module_2/problem_solving_strategies.md')
-rw-r--r--tutorials/module_2/problem_solving_strategies.md64
1 files changed, 64 insertions, 0 deletions
diff --git a/tutorials/module_2/problem_solving_strategies.md b/tutorials/module_2/problem_solving_strategies.md
new file mode 100644
index 0000000..1a50aec
--- /dev/null
+++ b/tutorials/module_2/problem_solving_strategies.md
@@ -0,0 +1,64 @@
+# Algorithmic thinking
+
+## Learning Objectives
+
+By the end of this lesson, students will be able to:
+
+- Apply algorithmic thinking to solve engineering problems using computational tools.
+- Translate engineering problems into structured programming logic.
+- Use software tools to implement, test, and refine engineering solutions.
+
+---
+## 1. 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.
+
+- **List knowns and unknowns.** What inputs are given? What outputs are required?
+- **Establish system constraints and assumptions.** Identify physical laws, design requirements, and performance limits.
+- **Clarify computational objectives.** What are you trying to calculate, simulate, or optimize?
+
+---
+## 2. 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.
+
+- **Define the inputs and outputs.** What variables will the program take in, and what results will it produce?
+- **Break the problem into sub-tasks.** Identify steps such as data input, logic processing and output.
+- **Outline the algorithm.** Write pseudocode or flowcharts that describe the computational steps.
+- **Identify patterns or formulas.** Can loops, conditionals, or equations be used to automate parts of the solution?
+
+**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.
+
+---
+## 3. Write & Execute the Code
+
+- **Choose the right tools.** Are there libraries I can use to get to my objective more effectively?
+- **Write modular code.** Use functions to separate different tasks (e.g., reading data, computing values, plotting).
+- **Check for syntax and logic errors.** Debug line-by-line using print statements or a debugger.
+
+**Example:** Write a Python script that uses NumPy and Matplotlib to load a CSV file, compute stress and strain, and generate plots.
+
+---
+## 4. Test and Validate
+
+- **Assess the feasibility of your results.** Do the values align with expected physical behavior?
+- **Compare against established benchmarks.** Validate solutions using experimental data, literature values, or known theoretical limits.
+- **Check units and scaling.** Ensure computations are consistent with physical meaning.
+
+**Example:** If your plot shows stress values in the thousands when you expect hundreds, check unit conversions in your formula.
+
+---
+## Case Study: Simulating a Spring-Mass System
+
+**Scenario:** Model the motion of a mass-spring-damper system using a numerical solver.
+
+1. **Define the Problem:** Set up the differential equation from Newton’s Second Law.
+2. **Develop a Strategy:** Discretize time, apply numerical integration (e.g., Euler or Runge-Kutta).
+3. **Execute the Code:** Write a Python function that computes motion over time.
+4. **Test the Model:** Compare results with analytical solutions for undamped or lightly damped systems.
+5. **Refine the Model:** Add adjustable damping and stiffness parameters.
+6. **Troubleshoot Issues:** If the model becomes unstable, reduce the time step or use a more accurate integrator. \ No newline at end of file