I'm currently working at Ta Mère SCRL a small development shop in Belgium.
We mainly do mobile apps (iOS, Android) for clients. We also have a strong interest in Pharo Smalltalk and Rust.
I don't remember where I heard about this course but I don't regret to have enrolled in Build a Modern Computer from First Principles: From Nand to Tetris.
It's a 6 week course on Coursera where you build a computer from the logical NAND gate to a fully working assembler. If you don't know what a NAND gate is, don't worry, the course explains in great lengths what they are and how they work.
The course does not go into the actual physical implementation of the computer, that would probably need another 6 week course, but goes in the other direction and shows how abstractions are built on top of each other.
Soon enough you end up with a full assembler that outputs binary instructions that can be executed by your CPU.
I was a little bit disappointed by the way the ALU was introduced. The teachers basically gave the inner working of the ALU without any hint on how it was designed. They convinced the students that it was a simple and beautiful design but never explained how they ended up with it. Once again, I guess it is simply because the course is quit short and they only want to give an overview of the different parts.
I hold a master degree in Software Engineering but this course was a joy to follow. I guess I'm biased because I knew the concepts before but it is the first time that I grasp the hardware concepts that well. Diving into hardware was a really good trip and makes me want to know more about modern computer architecture.
I also made me want to dive into lower level languages (Rust, Assembler or even VHDL/Verilog). I've always been attracted by the bare metal but have never jumped into it. Now seems to be a good time.
This course is the first that I followed online. Coursera has the notion of "end date" which is good for actually completing the course. I registered without thinking about my activities and obligations for the 6 weeks. That's how I ended up moving (fortunately there is only 8km between the two houses), going on winter holidays with friends and continuing my Mandarin language class. While having a full time job. In retrospect, I should have waited a little bit before taking the course.
I paid the 45€ as soon as I started. Not for the certificate (you can access the course for free if you don't want/need the certificate) but for the commitment. //I paid for it so I shouldn't procrastinate and finish this week's assignment.// is strong incentive to complete the course. Event if 45€ is not a huge amount of money by western standard, it puts value into the mix.
One of the drawback of online training is the lack of camaraderie between students. You never see the other participants and the online forums on Coursera are basically empty. I don't know anyone in my entourage that was following the course. Having someone with who I could talk about the concepts and ideas explained in the course would have been great.
Overall, it was a great experience and I'll probably enroll for Andrew Ng's course on machine learning :)