This document is a tutorial for learning to program. It covers many programming concepts and techniques over 27 chapters. It provides an introduction to programming, the basics of programming structures and syntax, working with data, conditionals, functions, file handling, classes and object oriented programming, GUI programming, and more advanced topics. The tutorial is available online and was also published as a book, which is now available through print-on-demand. Translations of the tutorial exist in several other languages as well. The author provides updates on changes and additions to the content.