Python Programming for Engineers
Live demo and
hands-on lab
24 hours
over 8 sessions
scientific sector
ING-INF/05

Location:

University of Udine - Polytechnic Department of Engineering and Architecture

Level:

Advanced

General info:

The course is delivered in a blended e-learning format using Microsoft 365 through the University of Udine, with all teaching materials accessible online. Teaching methods include lectures, hands-on exercises, and laboratory activities. Lecture recordings, including web lectures and lecture captures, are available through Microsoft Teams.

Objectives:

The course aims to provide students with the knowledge and skills needed to effectively use Python programming for solving a wide range of engineering problems. Starting with foundational topics such as syntax, data structures, and core programming concepts, the course progresses to advanced applications in engineering-specific scenarios. Emphasis will be placed on both theoretical understanding and practical application, with numerous examples, hands-on exercises, and projects designed to simulate real-world engineering challenges. Upon completion, participants will confidently use Python to solve complex engineering problems, documenting methodologies and communicating results effectively.

Course content:

  • Introduction to Python and Jupyter Notebooks
    This introductory module presents the basics of Python programming, covering fundamental concepts such as syntax, variables, data types, and control structures. Participants will learn to use Jupyter Notebooks for interactive coding and documentation, integrating Markdown and LaTeX for professional presentation. Practical exercises will focus on crafting basic Python scripts, with clear, well-documented code.
  • Core data structures and algorithmic problem solving
    This module explores Python's core data structures—lists, tuples, dictionaries, and sets—as well as foundational algorithms for sorting and searching, along with the principles of functions and modular programming. Through hands-on exercises, participants will apply these structures and algorithms to solve engineering-related problems.
  • Data manipulation and visualisation techniques
    Focusing on data analysis, this module covers methods for cleaning, analysing, and visualising data using Pandas and Matplotlib libraries. Participants will learn to present engineering data effectively with informative plots and graphs, and integrate LaTeX in Jupyter Notebooks for a precise presentation of mathematical results in engineering documentation.
  • Numerical methods, modelling, and optimisation
    This module introduces essential numerical methods for engineering applications, including root-finding, interpolation, and numerical integration. Participants will use the NumPy and SimPy libraries to implement these methods, develop mathematical models, and optimise processes, with comprehensive documentation of simulation steps and outcomes in Jupyter Notebooks.
  • Image analysis and machine vision
    This module explores advanced advanced image analysis techniques using OpenCV, applying machine vision methods to engineering fields such as structural analysis, non-destructive testing, and robotics. Participants will cover key topics like feature detection for tracking specific elements, object recognition for automated identification, and image segmentation for detailed region analysis. Practical exercises will document the methodologies and results with a focus on practical engineering outcomes.
  • Signal processing and advanced frequency analysis
    This module explores advanced signal processing techniques using libraries like librosa and NumPy, supporting applications in fields such as vibration analysis, acoustics, and dynamic system monitoring. Key topics include Fourier transforms, wavelet analysis, and spectral analysis, highlighting their practical uses in areas like detecting faults in machinery and monitoring vibrations in aerospace structures. The session will prioritise hands-on case studies, ensuring that all analyses and findings are meticulously documented in Jupyter Notebooks for effective communication and clarity.
  • Advanced case studies in engineering applications
    This module focuses on applying Python programming to real-world engineering challenges through advanced case studies. Participants will address diverse problems, including energy systems optimisation, structural health monitoring, predictive maintenance for machinery, and dynamic modelling of mechanical systems. Utilising the libraries explored throughout the course, participants will define problems, develop computational models, implement algorithms, and document their findings in Jupyter Notebooks.
  • Capstone projects: advanced engineering challenges
    In this final module, participants will utilise the skills and knowledge gained throughout the course to tackle complex, multidisciplinary engineering challenges. The capstone project requires the integration of various Python libraries and methodologies, emphasising innovative problem-solving and practical application. Comprehensive documentation will be produced, including problem analysis, methodology, results, and critical reflections, which will showcase their ability to address advanced engineering problems using Python.

Books:

  1. H.P. Langtangen, "A primer on scientific programming with Python", Springer-Verlag Berlin Heidelberg, 2016
  2. E. Matthes,"Python crash course: A hands-on, project-based introduction to programming", No Starch Press, 2023.
  3. P. Deitel and H. Deitel, "Intro to Python for Computer Science and Data Science", Pearson education, 2022

Note:

Complementary resources, including Jupyter Notebooks, Python scripts, and a requirements file for installing all necessary packages, are accessible on the professor's GitHub page. These materials are designed to support and enhance the course by providing detailed documentation and example code for all participants.