edit

PET - Python Exploration Toolkit

Yet another course? Really?

Everything has been said but not everyone has said it.

-- Not everyone yet

It's not a course. It's a toolkit for exploring Python. It's like a little lab with prepared experiments you can start to play with, after you learned the basics about the necessary software. If you explore this repository and the accompanying documentation you might learn programming in Python as a side effect.

If you already program ...

... you have an advantage in the way that you know a lot of the universal basics already. But you you have to unlearn some of the things you deem necessary coming from other languages. To get an idea what I mean, I would recommend reading Python is not Java.

If you are completely new to programming ...

... you need a lot more than this collection of materials can offer, but I try to link to more resources where it makes sense in the current context.

Python as a first language

When you want to learn programming, you have to start somewhere and that usually is by learning how to write programs in one specific programming language. Picking one is the first hard thing to do. According to the list of programming languages on Wikipedia there are almost 700 notable programming languages. If you want to narrow that down and google for "best language learn programming" and you find one article in the first 100 hits that does not mention Python, please send me the link - that would be a good find. Although Python was not my first language, I also believe that Python is a very good first language to learn, so let's just leave it at that and say you made a good choice (unless you want to write an operating system or similar low level code, but you don't want to do that as a beginner unless you are Linus Torvalds).

How long will it take?

Although you are learning a formal language it is still a real language. It has a vocabulary, grammar, semantics and whatever else fancy terminology the linguists came up with describing this stuff. And just like a natural language: a programming language does not exist in a vacuum. You could say it has its own virtual country, with a ruler (actually Python had the first Benevolent Dictator For Life), leaders - a whole culture (including humor). It is also not static, it is constantly changing (hence Python2 and Python3). It has a landscape. It has places where the participants in that culture hang out together. It has its own sets of beliefs, philosophies and even taboos. It has an established process how the language can be improved. In the case of Python it even has its own zen. If you like Spain, its landscape and its culture, you might want to learn spanish. Just like with natural languages, the reason why some people want to learn Python and some want to learn Ruby can also have to do with the whole culture around it.

If you know all that, you might not wonder if I tell you that it takes years to become really fluent in a programming language, because it is so much more than just learning the syntax, grammar and semantics.

But ... expect a lot from Python

[...] become more demanding of Python. Pretend that Python is a magic wand that will miraculously do whatever you want without you needing to lifting a finger. Ask, "how does Python already solve my problem?" and "What Python language feature most resembles my problem?" You will be absolutely astonished at how often it happens that thing you need is already there in some form.

-- PJ Eby - Python is not Java

Although it takes years to master a programming language and all of its idiosyncrasies, it is possible to become productive with Python very fast - even as an absolute beginner in programming. This has a lot to do with the design of the language. It is optimized for people instead of machines. It als comes with batteries included, which means, that there are a lot of problems solved for you already and you don't have to reinvent the wheel every time you are trying to build something. Due to the maturity and popularity of the language there is also a huge number of useful third party tools and libraries (and many of them are Free Software).

Wherever you start ...

... if you work your way through, I hope you will get some insight not only into the Python programming language but also into the open culture surrounding it, because this is what makes Python so special to me. It's about a lot more than writing code.