nomike's python challenges

This is a rudimentary shell and python course, to help absolute beginners to start programming.


Operating system

This courses teaches how to use a unix shell and how to code in python. It therefore requires you to have a unix shell at hand.

While there are many solutions available these days, the easiest are probably to either have Ubuntu Linux installed on your machine or to use Ubuntu in Windows Subsystem for Linux (WSL; available in Windows 10 and above). If you're device is a mac running macos you also have all the necessary ingredients installed as macos belongs to the same unix family of operating systems as Ubuntu does.

In Windows you can install WSL via the Microsoft Store.

A nice terminal emulator

At the beginning you will primarily work in a terminal (you will learn all about this in chapter 1). While on Linux the default terminals usually work quite well, on Windows I would recommend using the fairly new Microsoft Terminal, which gives you a much improved user experience compared to the default terminal. It too can be installed via the Microsoft Store.

Integrated development environment

In a later stage, you will be using an integrated development environment (IDE). While you are free to chose from a plethora of options, I'm personally using Visual Studio Code (vscode) which again is available in the Microsoft Store and the Ubuntu Software Center.

A note on me

I started working with computers at around 10-12 years of age (1993). My dad brought home the first personal computer, Windows 95 was just around the corner, I was still using DOS for some time, my NES was hooked up to the TV with Super Mario Bros. in the cartridge slot.

While my dad guided me through the first few steps on the PC (he just participated in a Microsoft Office training at work) I quickly became more proficient than him and began teaching him new tricks.

I learned, by trying things out and being curious. I read PC magazines and books (it was years before the Internet was widespread enough for us to get the first internet connection). What I'm trying to teach you here is that you shouldn't be afraid of trying out things and experimenting. For example if you don't know how to set the clock on your microwave, just try pressing and long-pressing a few buttons, you can't destroy it.

I was having lots of arguments with my dad when the computer wasn't working again (most likely I was trying to improve something, feels a bit like Tim the Toolman in retrospect ;-)). Thus I recommend you though to either use a scrap machine, which doesn't have important data on it, or to keep regular backups. I will try to point out throughout the course when things might get dangerous.

Since then I went to a technical school, where professionals where teaching me this stuff on a more professional level. I worked in various jobs as a programmer, a system administrator and have recently become a cloud architect.

The internet made things like this much much easier, as you can just lookup stuff online and as programming languages, operating systems and tools improved a lot and I still learn new things every day.

Reporting issues

If you find any bugs or mistakes in this course, you can either open an issue on this course's main github page or send an email to

Start the course

Are you ready to learn something new? Then head on to chapter 1.0 where I teach you about terminals and shells and explain a bit of computer history.