Missed the Kickstarter? You can still pre-order the course at:
See you there!
Less than 12 hours, and fully funded already! Thanks everyone.
When it comes to scientific and engineering computing, there is a clear choice for programmers: Python.
Many scientists prefer it to Matlab, and it is often taught as the first language in Universities.
But there is no single resource for people who want to use Python for engineering. You have to go hunting through blog posts everytime you want to draw a graph.
I'd like to create a single book that shows how Python can be used for a multitude of scientific purposes.
You no longer need to know Python, as I will cover that. All I ask is, you be good in at least one programming language.
Practice, Not Theory
The book will be heavily practical, with little or no theory. The goal is to get you using Python for real world engineering applications. For each topic, we will choose a real case scenario and build a quick solution in Python to solve our problem.
As a quick example, you must have seen Facebook draw a square around your faces when you upload a photo so that you can tag it. Did you ever wonder how Facebook knows where your face is?
I wrote some code for this:
(Image Taken from Wikipedia http://en.wikipedia.org/wiki/Abba)
After Python has detected faces:
How much time did you think I spent writing this code, and how long do you think it is?
Five minutes, and <25 lines, including space and comments. Have a look at the code here:
Warning: The code is very rough, as I said, I wrote it in 5 minutes. In the final book, we will go line by line, and I will explain each one.
Topics to be covered
1. Advanced Python: Useful advanced topics like list slicing, list comprehension, eval.
2. Introduction to Numpy
3. Plotting with Matplotlib - I will take some real life scientific data, and show how we can graph and analyse it (min/max, mean etc).
4. Some engineering application: Something like, take a noisy signal, and extract the noise frequencies from it. Or, find the frequency of a tone signal.
5. Image processing: Image recognition and processing with OpenCV. Counting objects in an image, sharpen/blur images etc.
6. Video processing: Again, with OpenCv. Face detection, object tracking in video.
**** Stretch Goals 2
£4000 - I will add parallel and distributed programming with Python.
£5000 - Raspberri Pi as an embedded controller with Python.
******* End of Stretch goals 2
**** Stretch Goals 1 - Achieved!
I have come up with the following stretch goals:
£1000 - I will cover the basics of the Python, specifically for the programmers wanting to use Python for engineering. This is not just another "Intro to Python" - this will be tailored to those who want to use Python for science and engineering, and have some previous experience programming.
£1400- I will cover pandas (http://pandas.pydata.org/), which is the main Python library for statistics / data analysis.
£1600 - I will add Machine Learning with Python, using SciKit http://scikit-learn.org/stable/. Example will be recognising hand written numbers / recognising flowers.
******* End of Stretch goals 1
Risks and challenges
The project might be delayed if life interferes.Learn about accountability on Kickstarter
A VM allows you to run another operating system within your own, like Linux on a Windows machine. The most popular is the open source Virtual box (https://www.virtualbox.org/)
The advantage is that you don't have to mess up your own system by installing dozens of libraries that may clash with each other. Also, if you are on a Windows machine (like I am), you will find that many of these libraries don't work so well on Windows (at least not the first time).
And then there is the 32/64 bit version nightmare. I recently spent several hours trying to figure out why OpenCv wasn't working for me, till I found that I had a 32 bit version of Python, but 64 bit version of a library. But the problem is that if I move to 64bit Python, that doesn't work with other libraries I have.
Which is why I'm going to do the development on a Linux VM. If you want, you can have a copy of this VM, with all the libraries installed. Trust me, it'll save you hours, and you can start coding immediately.
I recommend everyone go for the VM version, if you can afford it. Otherwise, the basic book is also a good option.
Is the Linux VM running on mac and win computers? Does the VM run nativety on mac / win or inside an emulation software?
So I'll be using Virtual Box (https://www.virtualbox.org/), which is available for Windows, Linux, and Mac. Yes, it'll run natively on every system.
Give it a try- Virtual Box is really easy to use. It just gives you a new virtual machine(VM), and you can install any operating system on it. It then becomes a PC within a PC. The advantage is, you can try new stuff here without worrying about corrupting your main system.
Inside the VM, I'll be running Linux Mint. I'll install all libraries in here. If you have chosen the option, you will get this VM. That means you just start Virtual Box, and you'll get a fully fledged Linux system that you can just start using. Even if you already using Linux, you can still use this VM if you want to save time by using a preconfigured option.
Yes, of course. All rewards include everything below them.
This is a highly practical course. I find that most blogs blast you with theory, but don't actually teach you anything. This course hopes to remedy that by teaching you how to build practical real world projects.
I will teach Python as a part of the course. For this, I expect a bare level of programming knowledge- so you should know about loops, conditionals, functions etc. So I will start straight with something like "This is how you iterate over an array in Python," expecting you to know what arrays are and what a for loop is, so that all you need to learn is how Python does it.
If I give you a file with 1000s of numbers and ask you to extract the 3 largest, and you can bang out a solution in less than 5 minutes (in any language), that's how comfortable you need to be with programming.
Support this project
- (30 days)