Python is one of the most popular programming languages. It is used for everything these days from web programming to app development, and increasingly for science and engineering computations (pycse). It can be bewildering to get started in learning to use Python as there are so many choices to make, and a continually growing number of libraries that have to be integrated together. I have used Python in research for 20 years, and have taught others to use it for the past 15 years. I started Point Breeze Publishing, LLC to help others find a path to pycse.
Learning to use Python (really any programming language) for science and engineering is extra challenging because you have to integrate programming and math with domain knowledge all at once. Before computers, you just had to learn math and domain knowledge. Today you have to add in programming. To be fair, the computer now does some of the math for you, but, you still have to know what math to do, and how to tell the computer what to do, and that is a new skill to be learned.
Historically we have understood that one does not just learn math by jumping into calculus; instead, you follow a trajectory through several levels of algebra, geometry, trigonometry, and then calculus, etc. I think of pycse the same way. There is a path that builds on a basic foundation of programming, then adds a layer of plotting and numerical methods for solving math problems (L1). I have found it necessary to integrate the lower tier of Python programming with the second tier in numerical methods in pycse. The numerical methods tier is not frequently taught in computer science courses or even at the same time as one needs the numerical methods. Like any skill, these are easy to forget, and seeing them together works well in my experience. L1 is the vast majority of what many scientists and engineers need in daily work. With mastery of this level, you have the best graphing calculator in history with Jupyter notebooks and Python. There are many paths through these levels, and we provide one below that has worked well in the classes I have taught.
Eventually, some people find that L1 becomes tedious for some tasks, especially those in data science, and in specialized areas like modeling, machine learning, statistical analyses and some domain specific applications. In the next level of pycse (L2) there are libraries that build on L1 by abstraction and encapsulation. That is, they combine methods and data into code that is easier to use, that hides a lot of complexity, resulting in fewer opportunities to make errors, but also increased difficulty knowing "what is done under the hood".
Finally, if you specialize even further, you find that L2 is too constraining, and it is necessary to develop your own solutions. At this stage, you enter L3, which is the most advanced. Not everyone needs to be at this level, but it is important to know that 1) it exists, 2) there are people there, and 3) you can be one of them if you want to!
I have now published 9 booklets that have a combined 400+ pages in them. The first five booklets focus on L1 pycse. These books are modular, and intentionally limited in scope to just enough material for a new person to get started and to be able to solve the problems they focus on.
Introduction to pycse This booklet assumes no prior experience, and covers the typical first year undergraduate science and engineering computation needs. It does not cover anything requiring calculus.
Intermediate pycse This booklet builds on the introduction, and adds calculus, differential equations, some statistics, and other topics. It should cover most of the second year undergraduate science and engineering computation needs.
pycse for labs This booklet focus on reading data files, data visualization and analysis, and data fitting with uncertainty analysis. It is geared towards the computational needs in a first laboratory course. This booklet dips briefly into L2 with the introduction of the Pandas library.
Differential equations This booklet goes much deeper in differential equations than the Intermediate booklet, even including an introduction to boundary value problems. This booklet may be important in advanced (third and fourth year) science and engineering courses.
Optimization This booklet introduces the capabilities of Python in solving many optimization problems. This booklet may be important in advanced (third and fourth year) science and engineering courses.
Eventually, you may find you need to strengthen your programming foundation. The booklets above have a "just enough" philosophy on this. We provide a more comprehensive focus in these supplements.
Data types and structures Data is represented in a lot of ways, as numbers, lists, arrays, etc. This booklet covers all of these, including how and when to use them.
Iterations in Python We often use code to repeat calculations, e.g. with a loop. This booklet shows you how to do that, and explains some advanced techniques in iteration.
Conditional statements in Python Sometimes you want code to execute conditionally, e.g. only when certain criteria are met. This booklet shows you how to achieve that.
Functions in Python We use functions all the time in pycse. Basic functions are easy to write, but you can write much more sophisticated functions that are helpful in some cases. Learn all about them here.
Overall, these 9 booklets should cover the vast majority of the computational needs in a typical science and engineering undergraduate program. Of course, there may be some other specialized libraries one might want to use, but with this foundation you should be well situated to learn how to use it yourself!
So, thanks to everyone who has purchased or downloaded a booklet, and especially to those who have provided feedback to improve them. If you found them helpful, please go to their pages and leave a rating or comment! Tell anyone you think might be interested in them about them.
Finally, where is this going? In the short term, I will be refining these booklets based on feedback from you (so please leave some!). In the mid term, I have plans for a few more booklets on fitting models to data, data-driven modeling, and automatic differentiation, perhaps some on advanced topics in visualization. Beyond that, it might depend on you! What would you find interesting?Follow us here to stay informed!