Hopefully, this will be the longest page you have to read on this topic. The objective here is to discuss why I'm doing this, what you are to expect, etc, etc.

Firstly, the disclaimer. I have no college degree. I've been cowboy coding (doing my own thing) since 2004, or, perhaps, earlier. This is January 23, 2018. As of writing this, I have yet to get paid for any code that I have written. That said, I can't offer you any certification or anything to that effect. On the flip side, I do know what I'm talking about, and I'm sure that the information covered will be close enough to timeless to be relevant until long after I'm dead, and this website is shut down. I started with C++, and I brag that I learned it in about 8 hours (gave myself a crash course). The truth is, I followed a tutorial and understood about 80% of what was covered in that tutorial, but I wasn't exactly competent enough at that time to even use 20% of the 80% that I learned. You're probably going to find yourself in the same boat, which is OK, because you ultimately want to start figuring out how to do small projects and get practical experience using the tools.

So, the reason I'm doing this is because people always ask me to teach them, but then discover that learning requires time and effort, and they find that they really want to know, not to learn. In other words, people are lazy. I'm not going to lie, at first programming will be boring, but it gets more interesting as you get into projects that are actually useful in your daily life, whether it's an encryption program to hide your christmas shopping list from your kids, or you're trying to convert all the locks into your house to use voice commands over your cell phones. But, I digress. The reason for my boring approach is to avoid the mistakes of the teachers I've studied programming under: they avoid topics that are "difficult," which students stumble upon by accident, not realizing what is going on, and end up wondering why they cannot find their mistake. It's one thing if you made a miscalculation that takes you 5 minutes to find, it's another thing to have used & instead of && simply because you didn't realize you made that typo, and you aren't even aware that & exists and is different from && (one day, I was helping out one of my teachers [laid back class, and the teacher already knew that I knew my stuff, and he couldn't keep up with all the students asking for help], and I had a student where this very thing happened, and the teacher's response was "Oh well, glad you found out, but, no, I really don't think covering that topic is necessary").

As of writing this, a new version of C++ is coming out, and things are changing so much that writing a complete tutorial on it would end up missing newer features added in the future, as well as teach features that may end up removed. My goal is to get you, the reader, to the point where you can understand everything from simple wires to coding in a real environment (in other words, get your foot in the door, talk about things teachers will gloss over, if not avoid altogether, and make you semi-competent). The problem is, because of things changing rapidly, it'll be bare bones. For each topic covered, the information I provide should be enough for you to find more information on your own that is recent, and actually be able to understand that recent information. It seems scary at first, but due to the concept of abstraction, you'll find that things "get bigger" fairly quickly. I thought about writing my own virtual machine to simulate a real one, but then you're learning something that isn't real. Moreover, it's alot of effort to completely write a programming language and make it work for a virtual machine. Instead, I'm going to teach you something outdated, that's hopefully still around when you're reading this. If not, I'll see what I can do to get it up to date with something contemporary.

The lessons are designed to be super short, basically as short as necessary to cover a major topic, which at times will be really, really short.

Lesson 01 starts with basic information you should have learned in middle-school, but probably don't remember.
Lesson 04 begins semi-conductors.
Lesson 06 begins logic gates.
Lesson 09 takes a break to teach hex-decimal, followed by binary in the next.
Lesson 11 teaches the basics of using circuitry to add 2 numbers together.
Lesson 13 goes into multiplexers and demultiplexers to have more than one calculation per machine.
Lesson 16 goes into the basics of volatile memory.
Lesson 17 gives an unfortunately complicated teaser to programming (it gets easier, trust me).
Lesson 23 takes a realistic CPU example and explains pipelines and such.
Lesson 28 is a "Hello World program" for arduino.
Lesson 29 explains the jist of how the compiler toolchain can be used.


Get your own web kitty here!
┬ęCopyright 2010, 2011, 2012, 2013, 2014, 2017, 2018. All rights reserved.