The intention is for the following course to provide you with a little taster and experience with real-world programming. We'll start out with an introduction to a programming language (Python), and we'll solve programming logic problems along the way in order to apply and use our skills.

<aside> ❗ If you're interested in game development or in software engineering, the first part of this course may seem boring and unnecessary. The fundamentals are key, and there are no shortcuts. However, I promise that if you stick with it, with learning all the content, you'll learn the skills necessary for creating awesome games and apps, even if it won't be a key focus of what's covered here. Of course, if you're here for help and/or questions, feel free to ask, I'll certainly try to help out or give pointers if I can!

</aside>

We'll be focusing more on the programming side of things and less on the "knowing stuff about computers" side. That is, we won't focus on computer hardware or the internals of how computers run code, only the code that we'll be writing to make it work. I'll try to slip stuff in about context whenever I can though.

A rough sketch for how I would like this course to progress goes as follows.


The course is designed to cover up to an intermediate level of difficulty, after which a student will have a good understanding of fundamentals leading up to OOP-style programming, as well as basic exposure to external libraries and more complex system interactions.

Advanced concepts (closures/lambdas, comprehensions, iterators and generators, decorators etc.) have been left out. All of the content adds up to 4-6 hours of course time, with the rest available for solving problems.

The grayed out content is all extension or historical knowledge which has been placed to explain certain language choices, as well as to understand more about the state of programming as a whole. The information contained in these is invaluable, but they're more complex ideas which may take a while to wrap one's head around.

The Interludes are placed as a buffer between the Python content in order to help a student understand a programmer's mindset, as well as to explain more abstract computer science concepts like abstraction. Also, they'll get some experience with useful real-world tools such as git, the Internet, and unit testing.