A lot of introductory courses on programming quickly teach you how to write lines of code to produce a quick effect. In this course, you will learn to write code through the simultaneous application of theory and practice, thus allowing you to understand what the code you write is doing. Hopefully this will be useful to those new to programming, as well as to those with an intermediate understanding of programming theory.

Throughout this course, we will be learning the theoretical components for each section, and then learning to implement these in practice using the Python programming language. The reason for the choice of Python is multi-fold. Firstly, the Python programming language is freely available and is cross-platform (it will run on Windows, Mac, and Linux). Secondly, it has a clear syntax, making it easy to read, write, and comprehend. Thirdly, there is a large programming community around the Python language, with many open source projects written in Python, allowing students to investigate production Python code easily. Lastly, Python has a live interpreter, removing the complication of compilation, deployment, or installation of other frameworks.

Note: This course is focused on teaching programming theory, and not the intricacies of the Python programming language. Thus, certain Python-specific terminology has been replaced by more generic terminology to allow the knowledge imparted in this course to be more easily transferable to other programming languages.

Course Structure

  1. Overview of Computer Architecture
  2. Variables
  3. Binary Data
  4. Data Types
  5. Working with Arrays
  6. Functions: A Mathematical Perspective
  7. Functions: A Computer Science Perspective
  8. Introducing Binary Arithmetic
  9. Expressions
  10. Statements: Declarations and Assignments
  11. Statements: Conditionals
  12. Statements: Loops
  13. Error Handling
  14. Writing a Program
  15. Challenges
  16. Recommended Reading

Course Badges

Programming Theory Level 1

Course Badge

The Programming Theory Level 1 badge can be earned by completing all the exercises contained in this course. For more information, read the instructions for the badge.

Open Source Coder

Open Source Coder Badge

Once you have completed the course material, you can gain recognition for your learning via the course badge. To find out more about this Open Badge, take a look at the Open Source Coder section.


At the end of each section of this course there will be a set of exercises for you to test your understanding of the content. It is recommended that you answer the exercises in the comments section at the bottom of each page, so as to get feedback from one of the course organizers, as well as from other peer learners.

To get us started with this course, let's start with our first exercise:

Add a comment to the "Discussion" tab to introduce yourself. Include the following information:

  1. A sentence about who you are.
  2. Why are you taking this course? What are you hoping on getting out of this course?