*We customize the course outline and content to your specific needs and relevant use cases.
Day 1 – Python for Engineering Applications
Development Environment
- Installing and configuring Python
- Working with PyCharm or Visual Studio Code
- Python interpreters and virtual environments
- Installing external libraries
- Basic project structure
Python Fundamentals
- Variables and data types
- Lists, tuples, dictionaries and sets
- Conditions and loops
- Functions
- Function parameters and return values
- List comprehensions
- Working with files
- Exceptions and error handling
- Type hints
From Engineering Formula to Program
- Translating formulas into Python
- Structuring calculation steps
- Separating input, calculation and output
- Avoiding duplicated code
- Writing readable engineering code
Practical Exercise
Development of a small engineering calculation program, for example:
- cross-section calculations,
- beam calculations,
- load combinations,
- material calculations,
- or another application relevant to the participants.
Day 2 – Numerical Computing and Technical Data
NumPy
- NumPy arrays
- Vectors and matrices
- Indexing and slicing
- Matrix operations
- Vectorisation
- Broadcasting
- Matrix-vector multiplication
- Efficient numerical calculations
Linear Algebra with Python
- Vectors and matrices
- Solving systems of linear equations
- The equation Ax = b
- Numerical accuracy
- Floating-point behaviour
- Tolerances and approximate comparisons
Introduction to SciPy
- Scientific computing with SciPy
- Numerical algorithms
- Linear algebra functions
- Introduction to sparse matrices
- Solving larger equation systems
Technical Data
- Reading CSV and text files
- Structured data formats
- Introduction to JSON
- Validating input data
- Separating input data from calculation logic
Visualisation
- Introduction to Matplotlib
- Creating engineering diagrams
- Plotting calculation results
- Visualising geometric and numerical data
Practical Exercise
Creation of a numerical engineering application that reads input data, performs calculations and visualises the results.
Day 3 – Software Development for Engineering Applications
From Script to Software
- Difference between a script and a maintainable application
- Structuring larger programs
- Modules and packages
- Separation of responsibilities
- Reusable calculation components
A typical architecture might be:
Input → Model → Calculation → Results → Visualisation
Object-Oriented Programming
- Classes and objects
- Attributes and methods
- Constructors
- Dataclasses
- Composition
- When object-oriented programming is useful in engineering software
Example engineering objects might include:
- Material
- CrossSection
- Node
- Load
- CalculationModel
- Result
Software Design
- Separation of data and calculation logic
- Designing clear interfaces between software components
- Avoiding monolithic programs
- Extensibility and maintainability
- Basic software design principles
Debugging
- Using the debugger
- Breakpoints
- Understanding stack traces
- Assertions
- Logging
- Handling incorrect input
Automated Testing
- Why testing is important for engineering software
- Introduction to pytest
- Testing mathematical functions
- Reference calculations
- Numerical tolerances
- Regression tests
Introduction to Version Control
- Fundamentals of Git
- Tracking changes
- Creating meaningful commits
- Working safely on larger software projects
Final Practical Project
Participants restructure and extend the engineering application developed during the course into a small, organised software project containing:
- input data,
- calculation modules,
- engineering models,
- result processing,
- visualisation,
- error handling,
- and automated tests.
Outlook
The course provides the foundation for developing more specialised engineering software, including:
- structural analysis applications,
- optimisation tools,
- data processing applications,
- finite element software,
- graphical engineering applications with PyQt,
- and interfaces to existing engineering software.