Programming for engineers
An engineer in the 21st century should not be only well schooled in his/her subject (e.g. civil engineer, electrical engineer, industrial engineer, etc. ) but also have basic understanding of programming and computational resources. Developing computer algorithms for given projects teaches oneself in analytical thinking and thereby separate important tasks of a project from those which are less unimportant. Apart from that, we are living in a world in which previously executed analogue tasks are today being done by machines. One example before the 1960ties money deposited in a bank was payed out by a human – nowadays in urban live it is almost everywhere just a cash machine or ATM. Another example is controlling access to critical buildings via camera or card identification systems. Previously there was a guard checking each individual now it is a small machine. While in the former example an improvement to our life is that a cash machine can not be as easily robbed as a cashier’s desk. In the latter example, the falsification of who and when an individual enters a site is made more difficult. Thus adding security to the site. In any case, such machines needs to be programmed. But programming skills are not only needed to make machine operating, they are crucial in the analysis of observational data or their theoretical modeling.
I am teaching the programming language Python (https://www.python.org/), which is the current most popular programming language in the world. This title comes for various reasons
- It is easy to learn and relatively intuitive
- It has a powerful standard library
- It is used by a big community
- Is is backed by Google on many platforms
- There is a huge amount of libraries e.g. for programming electronics (the Raspberry PI), to web development, numerical applications, scientific calculus, astronomy, machine learning (scikit-learn, Keras, Tensorflow, Pytorch), data processing and visualization (Matplotlib, Pandas), image processing (OpenCV)
In my classes students are to develop programming project that are often chosen by themselves instead of suggested by me. Such projects include
- machine learning techniques like using artificial neural networks
- Reinforcement learning techniques for artificial intelligence
- Solutions of differential equations
- Data analysis and visualization
- Image processing