summaryrefslogtreecommitdiff
path: root/tutorials/module_2/2_problem_solving_strategies.md
diff options
context:
space:
mode:
Diffstat (limited to 'tutorials/module_2/2_problem_solving_strategies.md')
-rw-r--r--tutorials/module_2/2_problem_solving_strategies.md64
1 files changed, 0 insertions, 64 deletions
diff --git a/tutorials/module_2/2_problem_solving_strategies.md b/tutorials/module_2/2_problem_solving_strategies.md
deleted file mode 100644
index 1a50aec..0000000
--- a/tutorials/module_2/2_problem_solving_strategies.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# 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