diff options
Diffstat (limited to 'tutorials/module_2/2_problem_solving_strategies.md')
| -rw-r--r-- | tutorials/module_2/2_problem_solving_strategies.md | 64 |
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 |
